[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