From 5373a2a2212bd7eaa863258fdfb18f4655106661 Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Fri, 22 Mar 2013 01:35:13 +0100 Subject: lavfi/anullsrc: fix format negotiation Samplerate and channel layouts must be set in query_formats. --- libavfilter/asrc_anullsrc.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'libavfilter/asrc_anullsrc.c') diff --git a/libavfilter/asrc_anullsrc.c b/libavfilter/asrc_anullsrc.c index f8e6ac5ce9..4989638428 100644 --- a/libavfilter/asrc_anullsrc.c +++ b/libavfilter/asrc_anullsrc.c @@ -81,15 +81,25 @@ static int init(AVFilterContext *ctx, const char *args) return 0; } +static int query_formats(AVFilterContext *ctx) +{ + ANullContext *null = ctx->priv; + int64_t chlayouts[] = { null->channel_layout, -1 }; + int sample_rates[] = { null->sample_rate, -1 }; + + ff_set_common_formats (ctx, ff_all_formats(AVMEDIA_TYPE_AUDIO)); + ff_set_common_channel_layouts(ctx, avfilter_make_format64_list(chlayouts)); + ff_set_common_samplerates (ctx, ff_make_format_list(sample_rates)); + + return 0; +} + static int config_props(AVFilterLink *outlink) { ANullContext *null = outlink->src->priv; char buf[128]; int chans_nb; - outlink->sample_rate = null->sample_rate; - outlink->channel_layout = null->channel_layout; - chans_nb = av_get_channel_layout_nb_channels(null->channel_layout); av_get_channel_layout_string(buf, sizeof(buf), chans_nb, null->channel_layout); av_log(outlink->src, AV_LOG_VERBOSE, @@ -132,6 +142,7 @@ AVFilter avfilter_asrc_anullsrc = { .description = NULL_IF_CONFIG_SMALL("Null audio source, return empty audio frames."), .init = init, + .query_formats = query_formats, .priv_size = sizeof(ANullContext), .inputs = NULL, -- cgit v1.2.3