mirror of
https://github.com/nyanmisaka/ffmpeg-rockchip.git
synced 2025-10-24 01:14:05 +08:00
Merge remote-tracking branch 'qatar/master'
* qatar/master: g723.1: simplify scale_vector() g723.1: simplify normalize_bits() vda: cosmetics: fix Doxygen comment formatting vda: better frame allocation vda: Merge implementation into one file vda: support synchronous decoding vda: Reuse the bitstream buffer and reallocate it only if needed build: Factor out mpegvideo encoding dependencies to CONFIG_MPEGVIDEOENC avprobe: Include libm.h for the log2 fallback proresenc: use the edge emulation buffer rtmp: handle bytes read reports configure: Fix typo in mpeg2video/svq1 decoder dependency declaration Use log2(x) instead of log(x) / log(2) x86: swscale: fix fragile memory accesses x86: swscale: remove disabled code x86: yadif: fix asm with suncc x86: cabac: allow building with suncc x86: mlpdsp: avoid taking address of void ARM: intmath: use native-size return types for clipping functions Conflicts: configure ffprobe.c libavcodec/Makefile libavcodec/g723_1.c libavcodec/v210dec.h libavcodec/vda.h libavcodec/vda_h264.c libavcodec/x86/cabac.h libavfilter/x86/yadif_template.c libswscale/x86/rgb2rgb_template.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@@ -107,8 +107,8 @@ static void RENAME(yadif_filter_line)(uint8_t *dst, uint8_t *prev, uint8_t *cur,
|
||||
uint8_t *next, int w, int prefs,
|
||||
int mrefs, int parity, int mode)
|
||||
{
|
||||
uint8_t tmp[5*16];
|
||||
uint8_t *tmpA= (uint8_t*)(((uint64_t)(tmp+15)) & ~15);
|
||||
uint8_t tmpU[5*16];
|
||||
uint8_t *tmp= (uint8_t*)(((uint64_t)(tmpU+15)) & ~15);
|
||||
int x;
|
||||
|
||||
#define FILTER\
|
||||
@@ -122,9 +122,9 @@ static void RENAME(yadif_filter_line)(uint8_t *dst, uint8_t *prev, uint8_t *cur,
|
||||
MOVQ" "MM"3, "MM"4 \n\t"\
|
||||
"paddw "MM"2, "MM"3 \n\t"\
|
||||
"psraw $1, "MM"3 \n\t" /* d = (prev2[x] + next2[x])>>1 */\
|
||||
MOVQ" "MM"0, (%[tmpA]) \n\t" /* c */\
|
||||
MOVQ" "MM"3, 16(%[tmpA]) \n\t" /* d */\
|
||||
MOVQ" "MM"1, 32(%[tmpA]) \n\t" /* e */\
|
||||
MOVQ" "MM"0, (%[tmp]) \n\t" /* c */\
|
||||
MOVQ" "MM"3, 16(%[tmp]) \n\t" /* d */\
|
||||
MOVQ" "MM"1, 32(%[tmp]) \n\t" /* e */\
|
||||
"psubw "MM"4, "MM"2 \n\t"\
|
||||
PABS( MM"4", MM"2") /* temporal_diff0 */\
|
||||
LOAD("(%[prev],%[mrefs])", MM"3") /* prev[x-refs] */\
|
||||
@@ -146,7 +146,7 @@ static void RENAME(yadif_filter_line)(uint8_t *dst, uint8_t *prev, uint8_t *cur,
|
||||
"paddw "MM"4, "MM"3 \n\t" /* temporal_diff2 */\
|
||||
"psrlw $1, "MM"3 \n\t"\
|
||||
"pmaxsw "MM"3, "MM"2 \n\t"\
|
||||
MOVQ" "MM"2, 48(%[tmpA]) \n\t" /* diff */\
|
||||
MOVQ" "MM"2, 48(%[tmp]) \n\t" /* diff */\
|
||||
\
|
||||
"paddw "MM"0, "MM"1 \n\t"\
|
||||
"paddw "MM"0, "MM"0 \n\t"\
|
||||
@@ -177,7 +177,7 @@ static void RENAME(yadif_filter_line)(uint8_t *dst, uint8_t *prev, uint8_t *cur,
|
||||
CHECK2\
|
||||
\
|
||||
/* if(p->mode<2) ... */\
|
||||
MOVQ" 48(%[tmpA]), "MM"6 \n\t" /* diff */\
|
||||
MOVQ" 48(%[tmp]), "MM"6 \n\t" /* diff */\
|
||||
"cmpl $2, %[mode] \n\t"\
|
||||
"jge 1f \n\t"\
|
||||
LOAD("(%["prev2"],%[mrefs],2)", MM"2") /* prev2[x-2*refs] */\
|
||||
@@ -188,9 +188,9 @@ static void RENAME(yadif_filter_line)(uint8_t *dst, uint8_t *prev, uint8_t *cur,
|
||||
"paddw "MM"5, "MM"3 \n\t"\
|
||||
"psrlw $1, "MM"2 \n\t" /* b */\
|
||||
"psrlw $1, "MM"3 \n\t" /* f */\
|
||||
MOVQ" (%[tmpA]), "MM"4 \n\t" /* c */\
|
||||
MOVQ" 16(%[tmpA]), "MM"5 \n\t" /* d */\
|
||||
MOVQ" 32(%[tmpA]), "MM"7 \n\t" /* e */\
|
||||
MOVQ" (%[tmp]), "MM"4 \n\t" /* c */\
|
||||
MOVQ" 16(%[tmp]), "MM"5 \n\t" /* d */\
|
||||
MOVQ" 32(%[tmp]), "MM"7 \n\t" /* e */\
|
||||
"psubw "MM"4, "MM"2 \n\t" /* b-c */\
|
||||
"psubw "MM"7, "MM"3 \n\t" /* f-e */\
|
||||
MOVQ" "MM"5, "MM"0 \n\t"\
|
||||
@@ -209,7 +209,7 @@ static void RENAME(yadif_filter_line)(uint8_t *dst, uint8_t *prev, uint8_t *cur,
|
||||
"pmaxsw "MM"4, "MM"6 \n\t" /* diff= MAX3(diff, min, -max); */\
|
||||
"1: \n\t"\
|
||||
\
|
||||
MOVQ" 16(%[tmpA]), "MM"2 \n\t" /* d */\
|
||||
MOVQ" 16(%[tmp]), "MM"2 \n\t" /* d */\
|
||||
MOVQ" "MM"2, "MM"3 \n\t"\
|
||||
"psubw "MM"6, "MM"2 \n\t" /* d-diff */\
|
||||
"paddw "MM"6, "MM"3 \n\t" /* d+diff */\
|
||||
@@ -217,14 +217,13 @@ static void RENAME(yadif_filter_line)(uint8_t *dst, uint8_t *prev, uint8_t *cur,
|
||||
"pminsw "MM"3, "MM"1 \n\t" /* d = clip(spatial_pred, d-diff, d+diff); */\
|
||||
"packuswb "MM"1, "MM"1 \n\t"\
|
||||
\
|
||||
:\
|
||||
:[tmpA] "r"(tmpA),\
|
||||
[prev] "r"(prev),\
|
||||
::[prev] "r"(prev),\
|
||||
[cur] "r"(cur),\
|
||||
[next] "r"(next),\
|
||||
[prefs]"r"((x86_reg)prefs),\
|
||||
[mrefs]"r"((x86_reg)mrefs),\
|
||||
[mode] "g"(mode)\
|
||||
[mode] "g"(mode),\
|
||||
[tmp] "r"(tmp)\
|
||||
);\
|
||||
__asm__ volatile(MOV" "MM"1, %0" :"=m"(*dst));\
|
||||
dst += STEP;\
|
||||
|
Reference in New Issue
Block a user