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

Reply via email to