Hi, patch attached.
From eab0be0e21fe312bf40c6330e493d2d0e9fdff2b Mon Sep 17 00:00:00 2001 From: Paul B Mahol <one...@gmail.com> Date: Fri, 5 Feb 2016 09:11:55 +0100 Subject: [PATCH] avfilter/split: support any channel count for asplit filter
Signed-off-by: Paul B Mahol <one...@gmail.com> --- libavfilter/split.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/libavfilter/split.c b/libavfilter/split.c index 1e4fb42..0d0a96b 100644 --- a/libavfilter/split.c +++ b/libavfilter/split.c @@ -32,6 +32,7 @@ #include "avfilter.h" #include "audio.h" +#include "formats.h" #include "internal.h" #include "video.h" @@ -93,6 +94,32 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) return ret; } +static int asplit_query_formats(AVFilterContext *ctx) +{ + AVFilterChannelLayouts *in_layouts = NULL; + int i, ret; + + if ((ret = ff_set_common_formats(ctx, ff_all_formats(AVMEDIA_TYPE_AUDIO))) < 0 || + (ret = ff_set_common_samplerates(ctx, ff_all_samplerates())) < 0) + return ret; + + ret = AVERROR(ENOMEM); + if ((in_layouts = ff_all_channel_counts()) == NULL || + (ret = ff_channel_layouts_ref(in_layouts, &ctx->inputs[0]->out_channel_layouts)) < 0) + return ret; + + for (i = 0; i < ctx->nb_outputs; i++) { + AVFilterChannelLayouts *out_layouts = NULL; + + ret = AVERROR(ENOMEM); + if ((out_layouts = ff_all_channel_counts()) == NULL || + (ret = ff_channel_layouts_ref(out_layouts, &ctx->outputs[i]->in_channel_layouts)) < 0) + return ret; + } + + return 0; +} + #define OFFSET(x) offsetof(SplitContext, x) #define FLAGS AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_VIDEO_PARAM static const AVOption options[] = { @@ -143,6 +170,7 @@ AVFilter ff_af_asplit = { .priv_class = &asplit_class, .init = split_init, .uninit = split_uninit, + .query_formats = asplit_query_formats, .inputs = avfilter_af_asplit_inputs, .outputs = NULL, .flags = AVFILTER_FLAG_DYNAMIC_OUTPUTS, -- 1.9.1
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel