From 4e9adc9b7363cc336e3d47c98455e1508902fd29 Mon Sep 17 00:00:00 2001 From: Nicolas George Date: Fri, 25 Oct 2013 16:02:04 +0200 Subject: lavfi/af_pan: support unknown layouts on output. --- libavfilter/af_pan.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'libavfilter/af_pan.c') diff --git a/libavfilter/af_pan.c b/libavfilter/af_pan.c index e8c0a24db6..9040c7a71a 100644 --- a/libavfilter/af_pan.c +++ b/libavfilter/af_pan.c @@ -116,10 +116,10 @@ static av_cold int init(AVFilterContext *ctx) if (!args) return AVERROR(ENOMEM); arg = av_strtok(args, "|", &tokenizer); - ret = ff_parse_channel_layout(&pan->out_channel_layout, NULL, arg, ctx); + ret = ff_parse_channel_layout(&pan->out_channel_layout, + &pan->nb_output_channels, arg, ctx); if (ret < 0) goto fail; - pan->nb_output_channels = av_get_channel_layout_nb_channels(pan->out_channel_layout); /* parse channel specifications */ while ((arg = arg0 = av_strtok(NULL, "|", &tokenizer))) { @@ -244,7 +244,9 @@ static int query_formats(AVFilterContext *ctx) // outlink supports only requested output channel layout layouts = NULL; - ff_add_channel_layout(&layouts, pan->out_channel_layout); + ff_add_channel_layout(&layouts, + pan->out_channel_layout ? pan->out_channel_layout : + FF_COUNT2LAYOUT(pan->nb_output_channels)); ff_channel_layouts_ref(layouts, &outlink->in_channel_layouts); return 0; } @@ -286,6 +288,8 @@ static int config_props(AVFilterLink *link) 0, ctx); if (!pan->swr) return AVERROR(ENOMEM); + if (!pan->out_channel_layout) + av_opt_set_int(pan->swr, "och", pan->nb_output_channels, 0); // gains are pure, init the channel mapping if (pan->pure_gains) { -- cgit v1.2.3