diff --git a/doc/examples/filtering_audio.c b/doc/examples/filtering_audio.c index 456a1c9862..67588aa301 100644 --- a/doc/examples/filtering_audio.c +++ b/doc/examples/filtering_audio.c @@ -37,7 +37,7 @@ #include #include -const char *filter_descr = "aresample=8000,aconvert=s16:mono"; +const char *filter_descr = "aresample=8000,aformat=sample_fmts=s16:channel_layouts=mono"; const char *player = "ffplay -f s16le -ar 8000 -ac 1 -"; static AVFormatContext *fmt_ctx; diff --git a/doc/faq.texi b/doc/faq.texi index a95476d7c4..4b0b09ccf2 100644 --- a/doc/faq.texi +++ b/doc/faq.texi @@ -393,17 +393,17 @@ Appending @code{:v} to it will do exactly that. Use @option{-dumpgraph -} to find out exactly where the channel layout is lost. -Most likely, it is through @code{auto-inserted aconvert}. Try to understand +Most likely, it is through @code{auto-inserted aresample}. Try to understand why the converting filter was needed at that place. Just before the output is a likely place, as @option{-f lavfi} currently only support packed S16. -Then insert the correct @code{aconvert} explicitly in the filtergraph, +Then insert the correct @code{aformat} explicitly in the filtergraph, specifying the exact format. @example -aconvert=s16:stereo:packed +aformat=sample_fmts=s16:channel_layouts=stereo @end example @section Why does FFmpeg not see the subtitles in my VOB file? diff --git a/doc/filters.texi b/doc/filters.texi index f812d8329d..83a19bdbd3 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -283,6 +283,8 @@ Below is a description of the currently available audio filters. Convert the input audio format to the specified formats. +@emph{This filter is deprecated. Use @ref{aformat} instead.} + The filter accepts a string of the form: "@var{sample_format}:@var{channel_layout}". diff --git a/libavfilter/af_aconvert.c b/libavfilter/af_aconvert.c index 1fc06f2085..71f4d24e95 100644 --- a/libavfilter/af_aconvert.c +++ b/libavfilter/af_aconvert.c @@ -45,6 +45,8 @@ static av_cold int init(AVFilterContext *ctx, const char *args0) int ret = 0; char *args = av_strdup(args0); + av_log(ctx, AV_LOG_WARNING, "This filter is deprecated, use aformat instead\n"); + aconvert->out_sample_fmt = AV_SAMPLE_FMT_NONE; aconvert->out_chlayout = 0; diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c index 721db2ecb2..4c8f2b4a59 100644 --- a/libavfilter/allfilters.c +++ b/libavfilter/allfilters.c @@ -45,7 +45,9 @@ void avfilter_register_all(void) return; initialized = 1; +#if FF_API_ACONVERT_FILTER REGISTER_FILTER(ACONVERT, aconvert, af); +#endif REGISTER_FILTER(AFADE, afade, af); REGISTER_FILTER(AFORMAT, aformat, af); REGISTER_FILTER(ALLPASS, allpass, af); diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index ff309f436c..d20c74d42a 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -675,7 +675,9 @@ static int process_options(AVFilterContext *ctx, AVDictionary **options, // TODO: drop me static const char *const filters_left_to_update[] = { "abuffer", +#if FF_API_ACONVERT_FILTER "aconvert", +#endif "atempo", "buffer", "mp", diff --git a/libavfilter/avfiltergraph.h b/libavfilter/avfiltergraph.h index 61110f99a1..2210bfe0fd 100644 --- a/libavfilter/avfiltergraph.h +++ b/libavfilter/avfiltergraph.h @@ -98,7 +98,7 @@ int avfilter_graph_create_filter(AVFilterContext **filt_ctx, AVFilter *filt, * Enable or disable automatic format conversion inside the graph. * * Note that format conversion can still happen inside explicitly inserted - * scale and aconvert filters. + * scale and aresample filters. * * @param flags any of the AVFILTER_AUTO_CONVERT_* constants */ diff --git a/libavfilter/version.h b/libavfilter/version.h index 9c5b99fe01..021ff0520d 100644 --- a/libavfilter/version.h +++ b/libavfilter/version.h @@ -66,5 +66,8 @@ #ifndef FF_API_OLD_FILTER_OPTS #define FF_API_OLD_FILTER_OPTS (LIBAVFILTER_VERSION_MAJOR < 4) #endif +#ifndef FF_API_ACONVERT_FILTER +#define FF_API_ACONVERT_FILTER (LIBAVFILTER_VERSION_MAJOR < 4) +#endif #endif /* AVFILTER_VERSION_H */