Go to the documentation of this file.
25 #define FUNC_MAIN_DECL(KIND, SPAN) \
26 int ff_idet_filter_line_##KIND(const uint8_t *a, const uint8_t *b, \
27 const uint8_t *c, int w); \
28 static int idet_filter_line_##KIND(const uint8_t *a, const uint8_t *b, \
29 const uint8_t *c, int w) { \
31 const int left_over = w & (SPAN - 1); \
34 sum += ff_idet_filter_line_##KIND(a, b, c, w); \
36 sum += ff_idet_filter_line_c(a + w, b + w, c + w, left_over); \
41 #define FUNC_MAIN_DECL_16bit(KIND, SPAN) \
42 int ff_idet_filter_line_16bit_##KIND(const uint8_t *a, const uint8_t *b, \
43 const uint8_t *c, int w); \
44 static int idet_filter_line_16bit_##KIND(const uint8_t *a, const uint8_t *b, \
45 const uint8_t *c, int w) { \
47 const int left_over = w & (SPAN - 1); \
48 const int w_main = w - left_over; \
49 const int offset = w_main << 1; \
51 sum += ff_idet_filter_line_16bit_##KIND(a, b, c, w_main); \
52 if (left_over > 0) { \
53 sum += ff_idet_filter_line_c_16bit(a + offset, b + offset, c + offset, \
73 dsp->filter_line = depth > 8 ? idet_filter_line_16bit_sse2 : idet_filter_line_sse2;
76 dsp->filter_line = depth > 8 ? idet_filter_line_16bit_avx2 : idet_filter_line_avx2;
79 dsp->filter_line = depth > 8 ? idet_filter_line_16bit_avx512icl : idet_filter_line_avx512icl;
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
static atomic_int cpu_flags
#define EXTERNAL_AVX2(flags)
#define FUNC_MAIN_DECL_16bit(KIND, SPAN)
#define FUNC_MAIN_DECL(KIND, SPAN)
#define EXTERNAL_SSE2(flags)
void ff_idet_dsp_init_x86(IDETDSPContext *idet, int depth)
#define EXTERNAL_AVX512ICL(flags)