[FFmpeg-devel] [PATCH 14/25] avfilter/vf_format: re-use AVFilterList for pix_fmt parsing
Anton Khirnov
anton at khirnov.net
Wed Dec 13 10:48:38 EET 2023
Quoting Niklas Haas (2023-11-09 13:19:46)
>Subject: avfilter/vf_format: re-use AVFilterList for pix_fmt parsing
^^^^^^^^^^^^
You mean AVFilterFormats
> From: Niklas Haas <git at haasn.dev>
>
> Rewrite the format parsing code to make it more easily generalizable. In
> particular, `invert_formats` does not depend on the type of format list
> passed to it, which allows me to re-use this helper in an upcoming
> commit.
>
> Slightly shortens the code, at the sole cost of doing several malloc
> (ff_add_format) instead of a single malloc.
> ---
> libavfilter/vf_format.c | 103 +++++++++++++++++-----------------------
> 1 file changed, 43 insertions(+), 60 deletions(-)
>
> diff --git a/libavfilter/vf_format.c b/libavfilter/vf_format.c
> index 1189bd61c2..b137e3075e 100644
> --- a/libavfilter/vf_format.c
> +++ b/libavfilter/vf_format.c
> @@ -41,25 +41,48 @@ typedef struct FormatContext {
> const AVClass *class;
> char *pix_fmts;
>
> - /**
> - * pix_fmts parsed into AVPixelFormats and terminated with
> - * AV_PIX_FMT_NONE
> - */
> - enum AVPixelFormat *formats;
> + AVFilterFormats *formats; ///< parsed from `pix_fmts`
> } FormatContext;
>
> static av_cold void uninit(AVFilterContext *ctx)
> {
> FormatContext *s = ctx->priv;
> - av_freep(&s->formats);
> + ff_formats_unref(&s->formats);
> +}
> +
> +static av_cold int invert_formats(AVFilterFormats **fmts,
> + AVFilterFormats *allfmts)
This would look better with AVFilterFormats vertically aligned as well.
Looks ok otherwise, though I'm slightly surprised we don't seem to have
a function for "is format in list?".
--
Anton Khirnov
More information about the ffmpeg-devel
mailing list