[FFmpeg-devel] [PATCH] Implement avfilter_make_format_list2(enum PixelFormat pix_fmt, ...)
Michael Niedermayer
michaelni
Sat Oct 17 22:21:49 CEST 2009
On Sat, Oct 17, 2009 at 01:55:39AM +0200, Stefano Sabatini wrote:
> Hi,
>
> the interface of AVFilterFormats *avfilter_make_format_list(int len,
> ...) is quite brittle, since it requires the exact number of
> parameters to be passed, especially with long lists it is quite easy
> to get it wrong or get it de-synched for example if a new format is
> added to the list.
>
> This new function provides a more robust / convenient interface, the
> list is terminated by PIX_FMT_NONE and so the user doesn't need to
> manually adjust the value of len.
>
> No it doesn't look very convenient to factorize the code
> avfilter_make_format_list() with avfilter_make_format_list(), anyway
> my idea was to deprecate the old interface, or maybe simply to change
> the avfilter_make_format_list() interface as the API is declared
> non-stable yet.
>
> Regards.
> --
> FFmpeg = Friendly & Friendly Monstrous Philosofic Enhancing Geisha
> avfilter.h | 9 +++++++++
> formats.c | 27 +++++++++++++++++++++++++++
> 2 files changed, 36 insertions(+)
> 31802b3c59325cbbdab58c6e275b3e083293b604 lavfi-make-format-list2.patch
> Index: ffmpeg/libavfilter/avfilter.h
> ===================================================================
> --- ffmpeg.orig/libavfilter/avfilter.h 2009-10-17 01:38:34.000000000 +0200
> +++ ffmpeg/libavfilter/avfilter.h 2009-10-17 01:39:12.000000000 +0200
> @@ -180,6 +180,15 @@
> AVFilterFormats *avfilter_make_format_list(int len, ...);
>
> /**
> + * Helper function to create a list of supported formats. This is intended
> + * for use in AVFilter->query_formats().
> + * @param pix_fmt the first pixel format of the provided list
> + * @param ... a list of the supported 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.
> */
> AVFilterFormats *avfilter_all_colorspaces(void);
> Index: ffmpeg/libavfilter/formats.c
> ===================================================================
> --- ffmpeg.orig/libavfilter/formats.c 2009-10-17 01:39:45.000000000 +0200
> +++ ffmpeg/libavfilter/formats.c 2009-10-17 01:51:21.000000000 +0200
> @@ -87,6 +87,33 @@
> return ret;
> }
>
> +AVFilterFormats *avfilter_make_format_list2(enum PixelFormat pix_fmt, ...)
any reason why this is not
AVFilterFormats *avfilter_make_format_list2(const enum PixelFormat *pix_fmt)
?
seems simpler to me, just a simple malloc+memcpy after finding the 0
8...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
I have often repented speaking, but never of holding my tongue.
-- Xenocrates
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20091017/42e44e5e/attachment.pgp>
More information about the ffmpeg-devel
mailing list