From f6a1fa850af7ab031708737be417f6c94c53799a Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Sun, 18 Oct 2009 23:06:52 +0000 Subject: Implement avfilter_make_format_list2(), which is going to replace avfilter_make_format_list(). See the thread: "[PATCH] Implement avfilter_make_format_list2(enum PixelFormat pix_fmt, ...)". Originally committed as revision 20299 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavfilter/avfilter.h | 12 ++++++++++-- libavfilter/formats.c | 16 ++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h index 4aa11259cc..0694275f91 100644 --- a/libavfilter/avfilter.h +++ b/libavfilter/avfilter.h @@ -23,8 +23,8 @@ #define AVFILTER_AVFILTER_H #define LIBAVFILTER_VERSION_MAJOR 1 -#define LIBAVFILTER_VERSION_MINOR 0 -#define LIBAVFILTER_VERSION_MICRO 1 +#define LIBAVFILTER_VERSION_MINOR 1 +#define LIBAVFILTER_VERSION_MICRO 0 #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ LIBAVFILTER_VERSION_MINOR, \ @@ -179,6 +179,14 @@ struct AVFilterFormats */ AVFilterFormats *avfilter_make_format_list(int len, ...); +/** + * Creates a list of supported formats. This is intended for use in + * AVFilter->query_formats(). + * @param pix_fmt list of pixel formats, terminated by PIX_FMT_NONE + * @return the format list, with no existing references + */ +AVFilterFormats *avfilter_make_format_list2(enum PixelFormat *pix_fmt); + /** * Returns a list of all colorspaces supported by FFmpeg. */ diff --git a/libavfilter/formats.c b/libavfilter/formats.c index 33fec163a5..3a44cfd530 100644 --- a/libavfilter/formats.c +++ b/libavfilter/formats.c @@ -87,6 +87,22 @@ AVFilterFormats *avfilter_make_format_list(int len, ...) return ret; } +AVFilterFormats *avfilter_make_format_list2(enum PixelFormat *pix_fmt) +{ + AVFilterFormats *formats; + int count; + + for (count = 0; pix_fmt[count] != PIX_FMT_NONE; count++) + ; + + formats = av_mallocz(sizeof(AVFilterFormats)); + formats->formats = av_malloc(sizeof(*formats->formats) * count); + formats->format_count = count; + memcpy(formats->formats, pix_fmt, sizeof(*formats->formats) * count); + + return formats; +} + AVFilterFormats *avfilter_all_colorspaces(void) { AVFilterFormats *ret; -- cgit v1.2.3