summaryrefslogtreecommitdiff
path: root/libavfilter/asrc_anullsrc.c
diff options
context:
space:
mode:
authorStefano Sabatini <stefasab@gmail.com>2013-03-22 01:35:13 +0100
committerStefano Sabatini <stefasab@gmail.com>2013-03-23 16:53:08 +0100
commit5373a2a2212bd7eaa863258fdfb18f4655106661 (patch)
tree2fde9711e84ab0b2c2f5fe778e37302eb2c8d424 /libavfilter/asrc_anullsrc.c
parente54eb8db9c19f8de2556002ddc9c33e28e632d46 (diff)
lavfi/anullsrc: fix format negotiation
Samplerate and channel layouts must be set in query_formats.
Diffstat (limited to 'libavfilter/asrc_anullsrc.c')
-rw-r--r--libavfilter/asrc_anullsrc.c17
1 files changed, 14 insertions, 3 deletions
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,