lavfi: add negate filter
[ffmpeg.git] / libavfilter / vf_lut.c
index d7fab5e..7f3e913 100644 (file)
@@ -69,6 +69,7 @@ typedef struct {
     int is_rgb, is_yuv;
     int rgba_map[4];
     int step;
     int is_rgb, is_yuv;
     int rgba_map[4];
     int step;
+    int negate_alpha; /* only used by negate */
 } LutContext;
 
 #define Y 0
 } LutContext;
 
 #define Y 0
@@ -369,3 +370,25 @@ DEFINE_LUT_FILTER(lutyuv, "Compute and apply a lookup table to the YUV input vid
 #if CONFIG_LUTRGB_FILTER
 DEFINE_LUT_FILTER(lutrgb, "Compute and apply a lookup table to the RGB input video.",     init);
 #endif
 #if CONFIG_LUTRGB_FILTER
 DEFINE_LUT_FILTER(lutrgb, "Compute and apply a lookup table to the RGB input video.",     init);
 #endif
+
+#if CONFIG_NEGATE_FILTER
+
+static int negate_init(AVFilterContext *ctx, const char *args, void *opaque)
+{
+    LutContext *lut = ctx->priv;
+    char lut_params[64];
+
+    if (args)
+        sscanf(args, "%d", &lut->negate_alpha);
+
+    av_log(ctx, AV_LOG_DEBUG, "negate_alpha:%d\n", lut->negate_alpha);
+
+    snprintf(lut_params, sizeof(lut_params), "c0=negval:c1=negval:c2=negval:a=%s",
+             lut->negate_alpha ? "negval" : "val");
+
+    return init(ctx, lut_params, opaque);
+}
+
+DEFINE_LUT_FILTER(negate, "Negate input video.", negate_init);
+
+#endif