[FFmpeg-cvslog] avfilter/x86/vf_blend : reorganize DIFFERENCE macro to reduce line duplication between 8bit and 16 bit version
Martin Vignali
git at videolan.org
Thu Apr 5 22:47:50 EEST 2018
ffmpeg | branch: master | Martin Vignali <martin.vignali at gmail.com> | Sat Mar 17 19:24:49 2018 +0100| [8eb0bb11083320cc12bcc23104a384984c4a9d64] | committer: Martin Vignali
avfilter/x86/vf_blend : reorganize DIFFERENCE macro to reduce line duplication between 8bit and 16 bit version
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8eb0bb11083320cc12bcc23104a384984c4a9d64
---
libavfilter/x86/vf_blend.asm | 38 ++++++++++++++++----------------------
1 file changed, 16 insertions(+), 22 deletions(-)
diff --git a/libavfilter/x86/vf_blend.asm b/libavfilter/x86/vf_blend.asm
index 5d9a909192..9cd5ee7acb 100644
--- a/libavfilter/x86/vf_blend.asm
+++ b/libavfilter/x86/vf_blend.asm
@@ -295,8 +295,9 @@ BLEND_INIT %1, 4, %3
BLEND_END
%endmacro
-%macro DIFFERENCE 1-2
-BLEND_INIT %1, 5, %2
+; %1 name , %2 src (b or w), %3 inter (w or d), %4 (1 if 16bit, not set if 8 bit)
+%macro DIFFERENCE 3-4
+BLEND_INIT %1, 5, %4
pxor m2, m2
.nextrow:
mov xq, widthq
@@ -304,26 +305,19 @@ BLEND_INIT %1, 5, %2
.loop:
movu m0, [topq + xq]
movu m1, [bottomq + xq]
-%if %0 == 2 ; 16 bit
- punpckhwd m3, m0, m2
- punpcklwd m0, m2
- punpckhwd m4, m1, m2
- punpcklwd m1, m2
- psubd m0, m1
- psubd m3, m4
+ punpckh%2%3 m3, m0, m2
+ punpckl%2%3 m0, m2
+ punpckh%2%3 m4, m1, m2
+ punpckl%2%3 m1, m2
+ psub%3 m0, m1
+ psub%3 m3, m4
+%if %0 == 4; 16 bit
pabsd m0, m0
pabsd m3, m3
- packusdw m0, m3
%else
- punpckhbw m3, m0, m2
- punpcklbw m0, m2
- punpckhbw m4, m1, m2
- punpcklbw m1, m2
- psubw m0, m1
- psubw m3, m4
ABS2 m0, m3, m1, m4
- packuswb m0, m3
%endif
+ packus%3%2 m0, m3
mova [dstq + xq], m0
add xq, mmsize
jl .loop
@@ -397,7 +391,7 @@ AVERAGE
GRAINMERGE
HARDMIX
PHOENIX phoenix, b
-DIFFERENCE difference
+DIFFERENCE difference, b, w
DIVIDE
BLEND_ABS
@@ -411,7 +405,7 @@ BLEND_SIMPLE xor_16, xor, 1
%endif
INIT_XMM ssse3
-DIFFERENCE difference
+DIFFERENCE difference, b, w
BLEND_ABS
INIT_XMM sse4
@@ -419,7 +413,7 @@ INIT_XMM sse4
BLEND_SIMPLE darken_16, minuw, 1
BLEND_SIMPLE lighten_16, maxuw, 1
PHOENIX phoenix_16, w, 1
-DIFFERENCE difference_16, 1
+DIFFERENCE difference_16, w, d, 1
%endif
%if HAVE_AVX2_EXTERNAL
@@ -439,7 +433,7 @@ GRAINMERGE
HARDMIX
PHOENIX phoenix, b
-DIFFERENCE difference
+DIFFERENCE difference, b, w
BLEND_ABS
%if ARCH_X86_64
@@ -451,6 +445,6 @@ BLEND_SIMPLE or_16, or, 1
BLEND_SIMPLE subtract_16, subusw, 1
BLEND_SIMPLE xor_16, xor, 1
PHOENIX phoenix_16, w, 1
-DIFFERENCE difference_16, 1
+DIFFERENCE difference_16, w, d, 1
%endif
%endif
More information about the ffmpeg-cvslog
mailing list