diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-05-16 04:27:31 +0400 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-05-16 04:27:31 +0400 |
commit | 1cbf7fb4345a3e5b7791d483241bf4759bde4ece (patch) | |
tree | d7acd8317309e051fb240e3505f77aabe2ea0437 /libavfilter/af_aresample.c | |
parent | a48abf5e263ad7f2e68821766e7cf4d29befb58e (diff) | |
parent | 0ff0af731ce4544f84b2f748dcc699717a2df8d6 (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.c | 37 |
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", |