This filter is a simple wrapper around the LUT filter.tags/n0.8
| @@ -1500,6 +1500,7 @@ frei0r_src_filter_deps="frei0r dlopen strtok_r" | |||||
| hqdn3d_filter_deps="gpl" | hqdn3d_filter_deps="gpl" | ||||
| movie_filter_deps="avcodec avformat" | movie_filter_deps="avcodec avformat" | ||||
| mp_filter_deps="gpl avcodec" | mp_filter_deps="gpl avcodec" | ||||
| negate_filter_deps="lut_filter" | |||||
| ocv_filter_deps="libopencv" | ocv_filter_deps="libopencv" | ||||
| scale_filter_deps="swscale" | scale_filter_deps="swscale" | ||||
| yadif_filter_deps="gpl" | yadif_filter_deps="gpl" | ||||
| @@ -911,6 +911,13 @@ mp=hue=100:-10 | |||||
| See also mplayer(1), @url{http://www.mplayerhq.hu/}. | See also mplayer(1), @url{http://www.mplayerhq.hu/}. | ||||
| @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. | |||||
| @section noformat | @section noformat | ||||
| Force libavfilter not to use any of the specified pixel formats for the | Force libavfilter not to use any of the specified pixel formats for the | ||||
| @@ -42,6 +42,7 @@ OBJS-$(CONFIG_LUT_FILTER) += vf_lut.o | |||||
| OBJS-$(CONFIG_LUTRGB_FILTER) += vf_lut.o | OBJS-$(CONFIG_LUTRGB_FILTER) += vf_lut.o | ||||
| OBJS-$(CONFIG_LUTYUV_FILTER) += vf_lut.o | OBJS-$(CONFIG_LUTYUV_FILTER) += vf_lut.o | ||||
| OBJS-$(CONFIG_MP_FILTER) += vf_mp.o | OBJS-$(CONFIG_MP_FILTER) += vf_mp.o | ||||
| OBJS-$(CONFIG_NEGATE_FILTER) += vf_lut.o | |||||
| OBJS-$(CONFIG_NOFORMAT_FILTER) += vf_format.o | OBJS-$(CONFIG_NOFORMAT_FILTER) += vf_format.o | ||||
| OBJS-$(CONFIG_NULL_FILTER) += vf_null.o | OBJS-$(CONFIG_NULL_FILTER) += vf_null.o | ||||
| OBJS-$(CONFIG_OCV_FILTER) += vf_libopencv.o | OBJS-$(CONFIG_OCV_FILTER) += vf_libopencv.o | ||||
| @@ -58,6 +58,7 @@ void avfilter_register_all(void) | |||||
| REGISTER_FILTER (LUTRGB, lutrgb, vf); | REGISTER_FILTER (LUTRGB, lutrgb, vf); | ||||
| REGISTER_FILTER (LUTYUV, lutyuv, vf); | REGISTER_FILTER (LUTYUV, lutyuv, vf); | ||||
| REGISTER_FILTER (MP, mp, vf); | REGISTER_FILTER (MP, mp, vf); | ||||
| REGISTER_FILTER (NEGATE, negate, vf); | |||||
| REGISTER_FILTER (NOFORMAT, noformat, vf); | REGISTER_FILTER (NOFORMAT, noformat, vf); | ||||
| REGISTER_FILTER (NULL, null, vf); | REGISTER_FILTER (NULL, null, vf); | ||||
| REGISTER_FILTER (OCV, ocv, vf); | REGISTER_FILTER (OCV, ocv, vf); | ||||
| @@ -26,7 +26,7 @@ | |||||
| #include "libavutil/samplefmt.h" | #include "libavutil/samplefmt.h" | ||||
| #define LIBAVFILTER_VERSION_MAJOR 2 | #define LIBAVFILTER_VERSION_MAJOR 2 | ||||
| #define LIBAVFILTER_VERSION_MINOR 19 | |||||
| #define LIBAVFILTER_VERSION_MINOR 20 | |||||
| #define LIBAVFILTER_VERSION_MICRO 0 | #define LIBAVFILTER_VERSION_MICRO 0 | ||||
| #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ | #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ | ||||
| @@ -67,6 +67,7 @@ typedef struct { | |||||
| int is_rgb, is_yuv; | int is_rgb, is_yuv; | ||||
| int rgba_map[4]; | int rgba_map[4]; | ||||
| int step; | int step; | ||||
| int negate_alpha; /* only used by negate */ | |||||
| } LutContext; | } LutContext; | ||||
| #define Y 0 | #define Y 0 | ||||
| @@ -366,3 +367,25 @@ static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) | |||||
| DEFINE_LUT_FILTER(lut, "Compute and apply a lookup table to the RGB/YUV input video.", init); | DEFINE_LUT_FILTER(lut, "Compute and apply a lookup table to the RGB/YUV input video.", init); | ||||
| DEFINE_LUT_FILTER(lutyuv, "Compute and apply a lookup table to the YUV input video.", init); | DEFINE_LUT_FILTER(lutyuv, "Compute and apply a lookup table to the YUV input video.", init); | ||||
| DEFINE_LUT_FILTER(lutrgb, "Compute and apply a lookup table to the RGB input video.", init); | DEFINE_LUT_FILTER(lutrgb, "Compute and apply a lookup table to the RGB input video.", init); | ||||
| #if CONFIG_NEGATE_FILTER | |||||
| static int negate_init(AVFilterContext *ctx, const char *args, void *opaque) | |||||
| { | |||||
| LutContext *lut = ctx->priv; | |||||
| char lut_params[1024]; | |||||
| if (args) | |||||
| sscanf(args, "%d", &lut->negate_alpha); | |||||
| av_log(ctx, AV_LOG_INFO, "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 | |||||