Also generalize it, making it accept ints rather than pixel formats. Allow factorization.tags/n0.9
| @@ -27,7 +27,7 @@ | |||||
| #define LIBAVFILTER_VERSION_MAJOR 2 | #define LIBAVFILTER_VERSION_MAJOR 2 | ||||
| #define LIBAVFILTER_VERSION_MINOR 24 | #define LIBAVFILTER_VERSION_MINOR 24 | ||||
| #define LIBAVFILTER_VERSION_MICRO 0 | |||||
| #define LIBAVFILTER_VERSION_MICRO 1 | |||||
| #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ | #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ | ||||
| LIBAVFILTER_VERSION_MINOR, \ | LIBAVFILTER_VERSION_MINOR, \ | ||||
| @@ -22,6 +22,7 @@ | |||||
| #include "libavutil/pixdesc.h" | #include "libavutil/pixdesc.h" | ||||
| #include "libavutil/audioconvert.h" | #include "libavutil/audioconvert.h" | ||||
| #include "avfilter.h" | #include "avfilter.h" | ||||
| #include "internal.h" | |||||
| /** | /** | ||||
| * Add all refs from a to ret and destroy a. | * Add all refs from a to ret and destroy a. | ||||
| @@ -73,6 +74,17 @@ AVFilterFormats *avfilter_merge_formats(AVFilterFormats *a, AVFilterFormats *b) | |||||
| return ret; | return ret; | ||||
| } | } | ||||
| int ff_fmt_is_in(int fmt, const int *fmts) | |||||
| { | |||||
| const int *p; | |||||
| for (p = fmts; *p != -1; p++) { | |||||
| if (fmt == *p) | |||||
| return 1; | |||||
| } | |||||
| return 0; | |||||
| } | |||||
| #define MAKE_FORMAT_LIST() \ | #define MAKE_FORMAT_LIST() \ | ||||
| AVFilterFormats *formats; \ | AVFilterFormats *formats; \ | ||||
| int count = 0; \ | int count = 0; \ | ||||
| @@ -58,4 +58,7 @@ int ff_avfilter_graph_config_formats(AVFilterGraph *graphctx, AVClass *log_ctx); | |||||
| /** default handler for freeing audio/video buffer when there are no references left */ | /** default handler for freeing audio/video buffer when there are no references left */ | ||||
| void ff_avfilter_default_free_buffer(AVFilterBuffer *buf); | void ff_avfilter_default_free_buffer(AVFilterBuffer *buf); | ||||
| /** Tell is a format is contained in the provided list terminated by -1. */ | |||||
| int ff_fmt_is_in(int fmt, const int *fmts); | |||||
| #endif /* AVFILTER_INTERNAL_H */ | #endif /* AVFILTER_INTERNAL_H */ | ||||
| @@ -28,6 +28,7 @@ | |||||
| #include "libavutil/opt.h" | #include "libavutil/opt.h" | ||||
| #include "libavutil/pixdesc.h" | #include "libavutil/pixdesc.h" | ||||
| #include "avfilter.h" | #include "avfilter.h" | ||||
| #include "internal.h" | |||||
| static const char *var_names[] = { | static const char *var_names[] = { | ||||
| "E", | "E", | ||||
| @@ -165,16 +166,6 @@ static int query_formats(AVFilterContext *ctx) | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| static int pix_fmt_is_in(enum PixelFormat pix_fmt, enum PixelFormat *pix_fmts) | |||||
| { | |||||
| enum PixelFormat *p; | |||||
| for (p = pix_fmts; *p != PIX_FMT_NONE; p++) { | |||||
| if (pix_fmt == *p) | |||||
| return 1; | |||||
| } | |||||
| return 0; | |||||
| } | |||||
| /** | /** | ||||
| * Clip value val in the minval - maxval range. | * Clip value val in the minval - maxval range. | ||||
| */ | */ | ||||
| @@ -245,8 +236,8 @@ static int config_props(AVFilterLink *inlink) | |||||
| } | } | ||||
| lut->is_yuv = lut->is_rgb = 0; | lut->is_yuv = lut->is_rgb = 0; | ||||
| if (pix_fmt_is_in(inlink->format, yuv_pix_fmts)) lut->is_yuv = 1; | |||||
| else if (pix_fmt_is_in(inlink->format, rgb_pix_fmts)) lut->is_rgb = 1; | |||||
| if (ff_fmt_is_in(inlink->format, yuv_pix_fmts)) lut->is_yuv = 1; | |||||
| else if (ff_fmt_is_in(inlink->format, rgb_pix_fmts)) lut->is_rgb = 1; | |||||
| if (lut->is_rgb) { | if (lut->is_rgb) { | ||||
| switch (inlink->format) { | switch (inlink->format) { | ||||