lavfi/anullsrc: fix format negotiation
authorStefano Sabatini <stefasab@gmail.com>
Fri, 22 Mar 2013 00:35:13 +0000 (01:35 +0100)
committerStefano Sabatini <stefasab@gmail.com>
Sat, 23 Mar 2013 15:53:08 +0000 (16:53 +0100)
Samplerate and channel layouts must be set in query_formats.

libavfilter/asrc_anullsrc.c

index f8e6ac5..4989638 100644 (file)
@@ -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,