diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-11-28 13:27:18 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-11-28 13:27:18 +0100 |
commit | 264441715b132344e15f27f6a5740645d5146f56 (patch) | |
tree | 9ad81892cf141d8a2e3b09c242498aa425daedcf /libavcodec | |
parent | b0d9b011c752f8526b73ffcef727c21f34cc5e46 (diff) | |
parent | f5fa03660db16f9d78abc5a626438b4d0b54f563 (diff) | |
download | ffmpeg-264441715b132344e15f27f6a5740645d5146f56.tar.gz |
Merge commit 'f5fa03660db16f9d78abc5a626438b4d0b54f563'
* commit 'f5fa03660db16f9d78abc5a626438b4d0b54f563':
vble: Do not abort decoding when version is not 1
lavr: do not pass consumed samples as a parameter to ff_audio_resample()
lavr: correct the documentation for the ff_audio_resample() return value
lavr: do not pass sample count as a parameter to ff_audio_convert()
x86: h264_weight: port to cpuflags
configure: Enable avconv filter dependencies automatically
Conflicts:
configure
libavcodec/x86/h264_weight.asm
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/x86/h264_weight.asm | 119 |
1 files changed, 55 insertions, 64 deletions
diff --git a/libavcodec/x86/h264_weight.asm b/libavcodec/x86/h264_weight.asm index b23e804dcf..4759a063a6 100644 --- a/libavcodec/x86/h264_weight.asm +++ b/libavcodec/x86/h264_weight.asm @@ -70,8 +70,8 @@ SECTION .text packuswb m0, m1 %endmacro -INIT_MMX -cglobal h264_weight_16_mmxext, 6, 6, 0 +INIT_MMX mmxext +cglobal h264_weight_16, 6, 6, 0 WEIGHT_SETUP .nextrow: WEIGHT_OP 0, 4 @@ -83,8 +83,8 @@ cglobal h264_weight_16_mmxext, 6, 6, 0 jnz .nextrow REP_RET -%macro WEIGHT_FUNC_MM 3 -cglobal h264_weight_%1_%3, 6, 6, %2 +%macro WEIGHT_FUNC_MM 2 +cglobal h264_weight_%1, 6, 6, %2 WEIGHT_SETUP .nextrow: WEIGHT_OP 0, mmsize/2 @@ -95,13 +95,13 @@ cglobal h264_weight_%1_%3, 6, 6, %2 REP_RET %endmacro -INIT_MMX -WEIGHT_FUNC_MM 8, 0, mmxext -INIT_XMM -WEIGHT_FUNC_MM 16, 8, sse2 +INIT_MMX mmxext +WEIGHT_FUNC_MM 8, 0 +INIT_XMM sse2 +WEIGHT_FUNC_MM 16, 8 -%macro WEIGHT_FUNC_HALF_MM 3 -cglobal h264_weight_%1_%3, 6, 6, %2 +%macro WEIGHT_FUNC_HALF_MM 2 +cglobal h264_weight_%1, 6, 6, %2 WEIGHT_SETUP sar r2d, 1 lea r3, [r1*2] @@ -120,10 +120,10 @@ cglobal h264_weight_%1_%3, 6, 6, %2 REP_RET %endmacro -INIT_MMX -WEIGHT_FUNC_HALF_MM 4, 0, mmxext -INIT_XMM -WEIGHT_FUNC_HALF_MM 8, 8, sse2 +INIT_MMX mmxext +WEIGHT_FUNC_HALF_MM 4, 0 +INIT_XMM sse2 +WEIGHT_FUNC_HALF_MM 8, 8 %macro BIWEIGHT_SETUP 0 %if ARCH_X86_64 @@ -135,12 +135,32 @@ WEIGHT_FUNC_HALF_MM 8, 8, sse2 add off_regd, 1 or off_regd, 1 add r4, 1 + cmp r5, 128 + jne .normal + sar r5, 1 + sar r6, 1 + sar off_regd, 1 + sub r4, 1 +.normal +%if cpuflag(ssse3) + movd m4, r5d + movd m0, r6d +%else movd m3, r5d movd m4, r6d +%endif movd m5, off_regd movd m6, r4d pslld m5, m6 psrld m5, 1 +%if cpuflag(ssse3) + punpcklbw m4, m0 + pshuflw m4, m4, 0 + pshuflw m5, m5, 0 + punpcklqdq m4, m4 + punpcklqdq m5, m5 + +%else %if mmsize == 16 pshuflw m3, m3, 0 pshuflw m4, m4, 0 @@ -154,6 +174,7 @@ WEIGHT_FUNC_HALF_MM 8, 8, sse2 pshufw m5, m5, 0 %endif pxor m7, m7 +%endif %endmacro %macro BIWEIGHT_STEPA 3 @@ -174,8 +195,8 @@ WEIGHT_FUNC_HALF_MM 8, 8, sse2 packuswb m0, m1 %endmacro -INIT_MMX -cglobal h264_biweight_16_mmxext, 7, 8, 0 +INIT_MMX mmxext +cglobal h264_biweight_16, 7, 8, 0 BIWEIGHT_SETUP movifnidn r3d, r3m .nextrow: @@ -193,8 +214,8 @@ cglobal h264_biweight_16_mmxext, 7, 8, 0 jnz .nextrow REP_RET -%macro BIWEIGHT_FUNC_MM 3 -cglobal h264_biweight_%1_%3, 7, 8, %2 +%macro BIWEIGHT_FUNC_MM 2 +cglobal h264_biweight_%1, 7, 8, %2 BIWEIGHT_SETUP movifnidn r3d, r3m .nextrow: @@ -209,13 +230,13 @@ cglobal h264_biweight_%1_%3, 7, 8, %2 REP_RET %endmacro -INIT_MMX -BIWEIGHT_FUNC_MM 8, 0, mmxext -INIT_XMM -BIWEIGHT_FUNC_MM 16, 8, sse2 +INIT_MMX mmxext +BIWEIGHT_FUNC_MM 8, 0 +INIT_XMM sse2 +BIWEIGHT_FUNC_MM 16, 8 -%macro BIWEIGHT_FUNC_HALF_MM 3 -cglobal h264_biweight_%1_%3, 7, 8, %2 +%macro BIWEIGHT_FUNC_HALF_MM 2 +cglobal h264_biweight_%1, 7, 8, %2 BIWEIGHT_SETUP movifnidn r3d, r3m sar r3, 1 @@ -238,40 +259,10 @@ cglobal h264_biweight_%1_%3, 7, 8, %2 REP_RET %endmacro -INIT_MMX -BIWEIGHT_FUNC_HALF_MM 4, 0, mmxext -INIT_XMM -BIWEIGHT_FUNC_HALF_MM 8, 8, sse2 - -%macro BIWEIGHT_SSSE3_SETUP 0 -%if ARCH_X86_64 -%define off_regd r7d -%else -%define off_regd r3d -%endif - mov off_regd, r7m - add off_regd, 1 - or off_regd, 1 - add r4, 1 - cmp r5, 128 - jne .normal - sar r5, 1 - sar r6, 1 - sar off_regd, 1 - sub r4, 1 -.normal - movd m4, r5d - movd m0, r6d - movd m5, off_regd - movd m6, r4d - pslld m5, m6 - psrld m5, 1 - punpcklbw m4, m0 - pshuflw m4, m4, 0 - pshuflw m5, m5, 0 - punpcklqdq m4, m4 - punpcklqdq m5, m5 -%endmacro +INIT_MMX mmxext +BIWEIGHT_FUNC_HALF_MM 4, 0 +INIT_XMM sse2 +BIWEIGHT_FUNC_HALF_MM 8, 8 %macro BIWEIGHT_SSSE3_OP 0 pmaddubsw m0, m4 @@ -283,9 +274,9 @@ BIWEIGHT_FUNC_HALF_MM 8, 8, sse2 packuswb m0, m2 %endmacro -INIT_XMM -cglobal h264_biweight_16_ssse3, 7, 8, 8 - BIWEIGHT_SSSE3_SETUP +INIT_XMM ssse3 +cglobal h264_biweight_16, 7, 8, 8 + BIWEIGHT_SETUP movifnidn r3d, r3m .nextrow: @@ -302,9 +293,9 @@ cglobal h264_biweight_16_ssse3, 7, 8, 8 jnz .nextrow REP_RET -INIT_XMM -cglobal h264_biweight_8_ssse3, 7, 8, 8 - BIWEIGHT_SSSE3_SETUP +INIT_XMM ssse3 +cglobal h264_biweight_8, 7, 8, 8 + BIWEIGHT_SETUP movifnidn r3d, r3m sar r3, 1 lea r4, [r2*2] |