]> git.sesse.net Git - ffmpeg/commitdiff
avfilter/vf_tinterlace : add AVX2 func for lowpass_line 8 and 16
authorMartin Vignali <martin.vignali@gmail.com>
Mon, 18 Dec 2017 10:30:31 +0000 (11:30 +0100)
committerMartin Vignali <martin.vignali@gmail.com>
Tue, 19 Dec 2017 19:59:59 +0000 (20:59 +0100)
libavfilter/x86/vf_tinterlace_init.c

index 209812964d0ed0131e08f3a7d86bd5866ea933ba..2c9b1de581f37c3771f2570d736cdbe845d657bf 100644 (file)
@@ -33,6 +33,9 @@ void ff_lowpass_line_sse2(uint8_t *dstp, ptrdiff_t linesize,
 void ff_lowpass_line_avx (uint8_t *dstp, ptrdiff_t linesize,
                           const uint8_t *srcp, ptrdiff_t mref,
                           ptrdiff_t pref, int clip_max);
+void ff_lowpass_line_avx2 (uint8_t *dstp, ptrdiff_t linesize,
+                          const uint8_t *srcp, ptrdiff_t mref,
+                          ptrdiff_t pref, int clip_max);
 
 void ff_lowpass_line_16_sse2(uint8_t *dstp, ptrdiff_t linesize,
                              const uint8_t *srcp, ptrdiff_t mref,
@@ -40,6 +43,9 @@ void ff_lowpass_line_16_sse2(uint8_t *dstp, ptrdiff_t linesize,
 void ff_lowpass_line_16_avx (uint8_t *dstp, ptrdiff_t linesize,
                              const uint8_t *srcp, ptrdiff_t mref,
                              ptrdiff_t pref, int clip_max);
+void ff_lowpass_line_16_avx2 (uint8_t *dstp, ptrdiff_t linesize,
+                             const uint8_t *srcp, ptrdiff_t mref,
+                             ptrdiff_t pref, int clip_max);
 
 void ff_lowpass_line_complex_sse2(uint8_t *dstp, ptrdiff_t linesize,
                                   const uint8_t *srcp, ptrdiff_t mref,
@@ -63,6 +69,11 @@ av_cold void ff_tinterlace_init_x86(TInterlaceContext *s)
         if (EXTERNAL_AVX(cpu_flags))
             if (!(s->flags & TINTERLACE_FLAG_CVLPF))
                 s->lowpass_line = ff_lowpass_line_16_avx;
+        if (EXTERNAL_AVX2_FAST(cpu_flags)) {
+            if (!(s->flags & TINTERLACE_FLAG_CVLPF)) {
+                s->lowpass_line = ff_lowpass_line_16_avx2;
+            }
+        }
     } else {
         if (EXTERNAL_SSE2(cpu_flags)) {
             if (!(s->flags & TINTERLACE_FLAG_CVLPF))
@@ -73,5 +84,10 @@ av_cold void ff_tinterlace_init_x86(TInterlaceContext *s)
         if (EXTERNAL_AVX(cpu_flags))
             if (!(s->flags & TINTERLACE_FLAG_CVLPF))
                 s->lowpass_line = ff_lowpass_line_avx;
+        if (EXTERNAL_AVX2_FAST(cpu_flags)) {
+            if (!(s->flags & TINTERLACE_FLAG_CVLPF)) {
+                s->lowpass_line = ff_lowpass_line_avx2;
+            }
+        }
     }
 }