Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-05-16 04:27:31 +0400
committerMichael Niedermayer <michaelni@gmx.at>2012-05-16 04:27:31 +0400
commit1cbf7fb4345a3e5b7791d483241bf4759bde4ece (patch)
treed7acd8317309e051fb240e3505f77aabe2ea0437 /libavfilter/af_aresample.c
parenta48abf5e263ad7f2e68821766e7cf4d29befb58e (diff)
parent0ff0af731ce4544f84b2f748dcc699717a2df8d6 (diff)
Merge remote-tracking branch 'qatar/master'
* qatar/master: (26 commits) fate: use diff -b in oneline comparison Add missing version bumps and APIchanges/Changelog entries. lavfi: move buffer management function to a separate file. lavfi: move formats-related functions from default.c to formats.c lavfi: move video-related functions to a separate file. fate: make smjpeg a demux test fate: separate sierra-vmd audio and video tests fate: separate smacker audio and video tests libmp3lame: set supported channel layouts. avconv: automatically insert asyncts when -async is used. avconv: add support for audio filters. lavfi: add asyncts filter. lavfi: add aformat filter lavfi: add an audio buffer sink. lavfi: add an audio buffer source. buffersrc: add av_buffersrc_write_frame(). buffersrc: fix invalid read in uninit if the fifo hasn't been allocated lavfi: rename vsrc_buffer.c to buffersrc.c avfiltergraph: reindent lavfi: add channel layout/sample rate negotiation. ... Conflicts: Changelog doc/APIchanges doc/filters.texi ffmpeg.c ffprobe.c libavcodec/libmp3lame.c libavfilter/Makefile libavfilter/af_aformat.c libavfilter/allfilters.c libavfilter/avfilter.c libavfilter/avfilter.h libavfilter/avfiltergraph.c libavfilter/buffersrc.c libavfilter/defaults.c libavfilter/formats.c libavfilter/src_buffer.c libavfilter/version.h libavfilter/vf_yadif.c libavfilter/vsrc_buffer.c libavfilter/vsrc_buffer.h libavutil/avutil.h tests/fate/audio.mak tests/fate/demux.mak tests/fate/video.mak Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavfilter/af_aresample.c')
-rw-r--r--libavfilter/af_aresample.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/libavfilter/af_aresample.c b/libavfilter/af_aresample.c
index a2980d90cd..521ccf7f8d 100644
--- a/libavfilter/af_aresample.c
+++ b/libavfilter/af_aresample.c
@@ -56,6 +56,42 @@ static av_cold void uninit(AVFilterContext *ctx)
swr_free(&aresample->swr);
}
+static int query_formats(AVFilterContext *ctx)
+{
+ AResampleContext *aresample = ctx->priv;
+
+ AVFilterLink *inlink = ctx->inputs[0];
+ AVFilterLink *outlink = ctx->outputs[0];
+
+ AVFilterFormats *in_formats = avfilter_all_formats(AVMEDIA_TYPE_AUDIO);
+ AVFilterFormats *out_formats = avfilter_all_formats(AVMEDIA_TYPE_AUDIO);
+ AVFilterFormats *in_samplerates = ff_all_samplerates();
+ AVFilterFormats *out_samplerates;
+
+
+ AVFilterChannelLayouts *in_layouts = ff_all_channel_layouts();
+ AVFilterChannelLayouts *out_layouts = ff_all_channel_layouts();
+
+ avfilter_formats_ref(in_formats, &inlink->out_formats);
+ avfilter_formats_ref(out_formats, &outlink->in_formats);
+
+ avfilter_formats_ref(in_samplerates, &inlink->out_samplerates);
+
+ ff_channel_layouts_ref(in_layouts, &inlink->out_channel_layouts);
+ ff_channel_layouts_ref(out_layouts, &outlink->in_channel_layouts);
+
+ if(aresample->out_rate > 0) {
+ int sample_rates[] = { aresample->out_rate, -1 };
+ ff_set_common_samplerates(ctx, avfilter_make_format_list(sample_rates));
+ } else {
+ out_samplerates = ff_all_samplerates();
+ avfilter_formats_ref(out_samplerates, &outlink->in_samplerates);
+ }
+
+ return 0;
+}
+
+
static int config_output(AVFilterLink *outlink)
{
int ret;
@@ -113,6 +149,7 @@ AVFilter avfilter_af_aresample = {
.description = NULL_IF_CONFIG_SMALL("Resample audio data."),
.init = init,
.uninit = uninit,
+ .query_formats = query_formats,
.priv_size = sizeof(AResampleContext),
.inputs = (const AVFilterPad[]) {{ .name = "default",