[FFmpeg-devel] [PATCH 04/10] lavfi: implement ff_query_formats_all().
Stefano Sabatini
stefasab at gmail.com
Fri Jan 18 01:33:23 CET 2013
On date Wednesday 2013-01-16 17:50:18 +0100, Nicolas George encoded:
>
> Signed-off-by: Nicolas George <nicolas.george at normalesup.org>
> ---
> libavfilter/formats.c | 15 +++++++++++++--
> libavfilter/formats.h | 8 ++++++++
> 2 files changed, 21 insertions(+), 2 deletions(-)
>
>
> Made it work with video too, as requested by Stefano.
>
>
> diff --git a/libavfilter/formats.c b/libavfilter/formats.c
> index 5f8954c..0284db2 100644
> --- a/libavfilter/formats.c
> +++ b/libavfilter/formats.c
> @@ -516,7 +516,8 @@ void ff_set_common_formats(AVFilterContext *ctx, AVFilterFormats *formats)
> ff_formats_ref, formats);
> }
>
> -int ff_default_query_formats(AVFilterContext *ctx)
> +static int default_query_formats_common(AVFilterContext *ctx,
> + AVFilterChannelLayouts *(layouts)(void))
I don't like "layouts" in a generic non-audio function but can't
really suggest a better alternative. Maybe a simple switch or flags
would be better, given that the API is internal is not a serious
issue.
> {
> enum AVMediaType type = ctx->inputs && ctx->inputs [0] ? ctx->inputs [0]->type :
> ctx->outputs && ctx->outputs[0] ? ctx->outputs[0]->type :
> @@ -524,13 +525,23 @@ int ff_default_query_formats(AVFilterContext *ctx)
>
> ff_set_common_formats(ctx, ff_all_formats(type));
> if (type == AVMEDIA_TYPE_AUDIO) {
> - ff_set_common_channel_layouts(ctx, ff_all_channel_layouts());
> + ff_set_common_channel_layouts(ctx, layouts());
> ff_set_common_samplerates(ctx, ff_all_samplerates());
> }
>
> return 0;
> }
>
> +int ff_default_query_formats(AVFilterContext *ctx)
> +{
> + return default_query_formats_common(ctx, ff_all_channel_layouts);
> +}
> +
> +int ff_query_formats_all(AVFilterContext *ctx)
> +{
> + return default_query_formats_common(ctx, ff_all_channel_counts);
> +}
> +
> /* internal functions for parsing audio format arguments */
>
> int ff_parse_pixel_format(enum AVPixelFormat *ret, const char *arg, void *log_ctx)
> diff --git a/libavfilter/formats.h b/libavfilter/formats.h
> index c6ace3a..6f2f778 100644
> --- a/libavfilter/formats.h
> +++ b/libavfilter/formats.h
> @@ -172,6 +172,14 @@ void ff_channel_layouts_changeref(AVFilterChannelLayouts **oldref,
>
> int ff_default_query_formats(AVFilterContext *ctx);
>
> +/**
> + * Set the formats list to all existing formats.
> + * This function behaves like ff_default_query_formats(), except it also
> + * accepts channel layouts with unknown disposition. It should only be used
> + * with audio filters.
> + */
> +int ff_query_formats_all(AVFilterContext *ctx);
> +
LGTM otherwise.
--
FFmpeg = Furious and Fanciful Mean Purposeless Ecumenical Guru
More information about the ffmpeg-devel
mailing list