summaryrefslogtreecommitdiff
path: root/libavfilter/vf_lut3d.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavfilter/vf_lut3d.c')
-rw-r--r--libavfilter/vf_lut3d.c61
1 files changed, 5 insertions, 56 deletions
diff --git a/libavfilter/vf_lut3d.c b/libavfilter/vf_lut3d.c
index 8ec07f8ab0..7ef96906fc 100644
--- a/libavfilter/vf_lut3d.c
+++ b/libavfilter/vf_lut3d.c
@@ -31,73 +31,18 @@
#include "libavutil/intreadwrite.h"
#include "libavutil/intfloat.h"
#include "libavutil/avassert.h"
-#include "libavutil/pixdesc.h"
#include "libavutil/avstring.h"
-#include "avfilter.h"
#include "drawutils.h"
#include "formats.h"
-#include "framesync.h"
#include "internal.h"
#include "video.h"
+#include "lut3d.h"
#define R 0
#define G 1
#define B 2
#define A 3
-enum interp_mode {
- INTERPOLATE_NEAREST,
- INTERPOLATE_TRILINEAR,
- INTERPOLATE_TETRAHEDRAL,
- INTERPOLATE_PYRAMID,
- INTERPOLATE_PRISM,
- NB_INTERP_MODE
-};
-
-struct rgbvec {
- float r, g, b;
-};
-
-/* 3D LUT don't often go up to level 32, but it is common to have a Hald CLUT
- * of 512x512 (64x64x64) */
-#define MAX_LEVEL 256
-#define PRELUT_SIZE 65536
-
-typedef struct Lut3DPreLut {
- int size;
- float min[3];
- float max[3];
- float scale[3];
- float* lut[3];
-} Lut3DPreLut;
-
-typedef struct LUT3DContext {
- const AVClass *class;
- int interpolation; ///<interp_mode
- char *file;
- uint8_t rgba_map[4];
- int step;
- avfilter_action_func *interp;
- struct rgbvec scale;
- struct rgbvec *lut;
- int lutsize;
- int lutsize2;
- Lut3DPreLut prelut;
-#if CONFIG_HALDCLUT_FILTER
- uint8_t clut_rgba_map[4];
- int clut_step;
- int clut_bits;
- int clut_planar;
- int clut_float;
- int clut_width;
- FFFrameSync fs;
-#endif
-} LUT3DContext;
-
-typedef struct ThreadData {
- AVFrame *in, *out;
-} ThreadData;
-
#define OFFSET(x) offsetof(LUT3DContext, x)
#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
#define TFLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_RUNTIME_PARAM
@@ -1203,6 +1148,10 @@ static int config_input(AVFilterLink *inlink)
av_assert0(0);
}
+ if (ARCH_X86) {
+ ff_lut3d_init_x86(lut3d, desc);
+ }
+
return 0;
}