lavfi: add negate filter
authorStefano Sabatini <stefano.sabatini-lala@poste.it>
Sat, 28 May 2011 20:00:26 +0000 (22:00 +0200)
committerAnton Khirnov <anton@khirnov.net>
Mon, 17 Oct 2011 16:05:41 +0000 (18:05 +0200)
This filter is a simple wrapper around the LUT filter.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
doc/filters.texi
libavfilter/Makefile
libavfilter/allfilters.c
libavfilter/avfilter.h
libavfilter/vf_lut.c

index f7aacf2e196ea8f86e120d4faf27ed93676a7ae9..c71fd48b6ef2099a13d4eb92c76395d8a3679f29 100644 (file)
@@ -813,7 +813,12 @@ format=rgba,lutrgb=a="maxval-minval/2"
 lutyuv=y=gammaval(0.5)
 @end example
 
-@section noformat
+@section negate
+
+Negate input video.
+
+This filter accepts an integer in input, if non-zero it negates the
+alpha component (if available). The default value in input is 0.
 
 Force libavfilter not to use any of the specified pixel formats for the
 input to the next filter.
index 9659fd692fa3d57a80e05ba1e6b61fcb42ea0396..e2285e4d39d3accf19b7ad250ec5aceec943b605 100644 (file)
@@ -36,6 +36,7 @@ OBJS-$(CONFIG_HQDN3D_FILTER)                 += vf_hqdn3d.o
 OBJS-$(CONFIG_LUT_FILTER)                    += vf_lut.o
 OBJS-$(CONFIG_LUTRGB_FILTER)                 += vf_lut.o
 OBJS-$(CONFIG_LUTYUV_FILTER)                 += vf_lut.o
+OBJS-$(CONFIG_NEGATE_FILTER)                 += vf_lut.o
 OBJS-$(CONFIG_NOFORMAT_FILTER)               += vf_format.o
 OBJS-$(CONFIG_NULL_FILTER)                   += vf_null.o
 OBJS-$(CONFIG_OCV_FILTER)                    += vf_libopencv.o
index 13573223029374ebe17a9a99f90a1d39d711be13..ba853c7178cf373d2daa65a6f0b4ba8469364ed2 100644 (file)
@@ -57,6 +57,7 @@ void avfilter_register_all(void)
     REGISTER_FILTER (LUT,         lut,         vf);
     REGISTER_FILTER (LUTRGB,      lutrgb,      vf);
     REGISTER_FILTER (LUTYUV,      lutyuv,      vf);
+    REGISTER_FILTER (NEGATE,      negate,      vf);
     REGISTER_FILTER (NOFORMAT,    noformat,    vf);
     REGISTER_FILTER (NULL,        null,        vf);
     REGISTER_FILTER (OCV,         ocv,         vf);
index d4c03792da402b7a33aab46ec59dc631513caf40..66237c56b4bbde4c2549681248e4d2e2ae9bb361 100644 (file)
@@ -29,7 +29,7 @@
 #include "libavutil/rational.h"
 
 #define LIBAVFILTER_VERSION_MAJOR  2
-#define LIBAVFILTER_VERSION_MINOR  8
+#define LIBAVFILTER_VERSION_MINOR  9
 #define LIBAVFILTER_VERSION_MICRO  0
 
 #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
index d7fab5e17d4797e87b5c0ee46e2fec523b2eb067..7f3e91394561b3d60267b2ceb6df5254d22f2903 100644 (file)
@@ -69,6 +69,7 @@ typedef struct {
     int is_rgb, is_yuv;
     int rgba_map[4];
     int step;
+    int negate_alpha; /* only used by negate */
 } 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_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