Imported Upstream version 6.1
[platform/upstream/ffmpeg.git] / libavfilter / x86 / vf_convolution_init.c
index b78a47d..bff10ca 100644 (file)
@@ -29,6 +29,11 @@ void ff_filter_3x3_sse4(uint8_t *dst, int width,
                         const uint8_t *c[], int peak, int radius,
                         int dstride, int stride, int size);
 
+void ff_filter_sobel_avx512icl(uint8_t *dst, int width,
+                         float scale, float delta, const int *const matrix,
+                         const uint8_t *c[], int peak, int radius,
+                         int dstride, int stride, int size);
+
 av_cold void ff_convolution_init_x86(ConvolutionContext *s)
 {
 #if ARCH_X86_64
@@ -44,3 +49,16 @@ av_cold void ff_convolution_init_x86(ConvolutionContext *s)
     }
 #endif
 }
+
+av_cold void ff_sobel_init_x86(ConvolutionContext *s, int depth, int nb_planes)
+{
+#if ARCH_X86_64
+    int cpu_flags = av_get_cpu_flags();
+    for (int i = 0; i < nb_planes; i++) {
+        if (depth == 8) {
+            if (EXTERNAL_AVX512ICL(cpu_flags))
+                s->filter[i] = ff_filter_sobel_avx512icl;
+        }
+    }
+#endif
+}