27#define DEFINE_INTERP_FUNC(name, format, opt) \
28void ff_interp_##name##_##format##_##opt(LUT3DContext *lut3d, Lut3DPreLut *prelut, AVFrame *src, AVFrame *dst, int slice_start, int slice_end, int has_alpha); \
29static int interp_##name##_##format##_##opt(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) \
31 LUT3DContext *lut3d = ctx->priv; \
32 Lut3DPreLut *prelut = lut3d->prelut.size > 0? &lut3d->prelut: NULL; \
33 ThreadData *td = arg; \
34 AVFrame *in = td->in; \
35 AVFrame *out = td->out; \
36 int has_alpha = in->linesize[3] && out != in; \
37 int slice_start = ff_slice_pos(in->height, jobnr, nb_jobs); \
38 int slice_end = ff_slice_pos(in->height, jobnr + 1, nb_jobs); \
39 ff_interp_##name##_##format##_##opt(lut3d, prelut, in, out, slice_start, slice_end, has_alpha); \
64 int depth =
desc->comp[0].depth;
69 if (isfloat && planar) {
70 s->interp = interp_tetrahedral_pf32_avx2;
71 }
else if (depth == 16) {
72 s->interp = interp_tetrahedral_p16_avx2;
78 s->interp = interp_tetrahedral_pf32_avx;
79 }
else if (depth == 16) {
80 s->interp = interp_tetrahedral_p16_avx;
86 s->interp = interp_tetrahedral_pf32_sse2;
87 }
else if (depth == 16) {
88 s->interp = interp_tetrahedral_p16_sse2;
@ INTERPOLATE_TETRAHEDRAL
Macro definitions for various function/variable attributes.
static atomic_int cpu_flags
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
#define EXTERNAL_AVX2_FAST(flags)
#define EXTERNAL_FMA3(flags)
#define EXTERNAL_AVX_FAST(flags)
#define EXTERNAL_SSE2(flags)
static av_always_inline v3u16_t tetrahedral(const SwsLut3D *lut3d, int Rx, int Gx, int Bx, int Rf, int Gf, int Bf)
#define AV_PIX_FMT_FLAG_FLOAT
The pixel format contains IEEE-754 floating point values.
#define AV_PIX_FMT_FLAG_PLANAR
At least one pixel component is not in the first data plane.
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes...
#define DEFINE_INTERP_FUNC(name, format, opt)
av_cold void ff_lut3d_init_x86(LUT3DContext *s, const AVPixFmtDescriptor *desc)