Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-11-28 16:27:18 +0400
committerMichael Niedermayer <michaelni@gmx.at>2012-11-28 16:27:18 +0400
commit264441715b132344e15f27f6a5740645d5146f56 (patch)
tree9ad81892cf141d8a2e3b09c242498aa425daedcf /libavcodec/x86
parentb0d9b011c752f8526b73ffcef727c21f34cc5e46 (diff)
parentf5fa03660db16f9d78abc5a626438b4d0b54f563 (diff)
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/x86')
-rw-r--r--libavcodec/x86/h264_weight.asm119
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]