diff mbox

[FFmpeg-devel,v4] lavr: deprecate the entire library

Message ID 20171230145919.5812-1-atomnuker@gmail.com
State Accepted
Commit c29038f3041a4080342b2e333c1967d136749c0f
Headers show

Commit Message

Rostislav Pehlivanov Dec. 30, 2017, 2:59 p.m. UTC
Deprecate the entire library. Merged years ago to provide compatibility
with Libav, it remained unmaintained by the FFmpeg project and duplicated
functionality provided by libswresample.

In order to improve consistency and reduce attack surface, as well as to ease
burden on maintainers, it has been deprecated. Users of this library are asked
to migrate to libswresample, which, as well as providing more functionality,
is faster and has higher accuracy.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
---
I've kept the deprecations on the enums - they can't hurt.
 configure                  |   4 +-
 doc/APIchanges             |   9 ++++
 libavresample/avresample.h | 106 ++++++++++++++++++++++++++++++++++++++++++---
 3 files changed, 110 insertions(+), 9 deletions(-)

Comments

wm4 Dec. 30, 2017, 3:15 p.m. UTC | #1
On Sat, 30 Dec 2017 14:59:19 +0000
Rostislav Pehlivanov <atomnuker@gmail.com> wrote:

> Deprecate the entire library. Merged years ago to provide compatibility
> with Libav, it remained unmaintained by the FFmpeg project and duplicated
> functionality provided by libswresample.
> 
> In order to improve consistency and reduce attack surface, as well as to ease
> burden on maintainers, it has been deprecated. Users of this library are asked
> to migrate to libswresample, which, as well as providing more functionality,
> is faster and has higher accuracy.
> 
> Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
> ---

Still against. I'm hoping both libraries can be merged in the future,
and removing it would work against this goal.
Rostislav Pehlivanov Dec. 30, 2017, 3:45 p.m. UTC | #2
On 30 December 2017 at 15:15, wm4 <nfxjfg@googlemail.com> wrote:

> On Sat, 30 Dec 2017 14:59:19 +0000
> Rostislav Pehlivanov <atomnuker@gmail.com> wrote:
>
> > Deprecate the entire library. Merged years ago to provide compatibility
> > with Libav, it remained unmaintained by the FFmpeg project and duplicated
> > functionality provided by libswresample.
> >
> > In order to improve consistency and reduce attack surface, as well as to
> ease
> > burden on maintainers, it has been deprecated. Users of this library are
> asked
> > to migrate to libswresample, which, as well as providing more
> functionality,
> > is faster and has higher accuracy.
> >
> > Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
> > ---
>
> Still against. I'm hoping both libraries can be merged in the future,
> and removing it would work against this goal.
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>

The facts speak for themselves - libswresample is better in every way and
there's nothing we want ported from libavresample. If you think otherwise -
send a patch or at least structural critique of how libswresample could be
improved. There's still 2 years until the code is removed and even then
it'd still be in git, bitrotting as it currently does.

I'm still intending to apply this patch in a few days.
Ronald S. Bultje Dec. 30, 2017, 5:11 p.m. UTC | #3
Hi,

On Sat, Dec 30, 2017 at 10:45 AM, Rostislav Pehlivanov <atomnuker@gmail.com>
wrote:

> On 30 December 2017 at 15:15, wm4 <nfxjfg@googlemail.com> wrote:
>
> > On Sat, 30 Dec 2017 14:59:19 +0000
> > Rostislav Pehlivanov <atomnuker@gmail.com> wrote:
> >
> > > Deprecate the entire library. Merged years ago to provide compatibility
> > > with Libav, it remained unmaintained by the FFmpeg project and
> duplicated
> > > functionality provided by libswresample.
> > >
> > > In order to improve consistency and reduce attack surface, as well as
> to
> > ease
> > > burden on maintainers, it has been deprecated. Users of this library
> are
> > asked
> > > to migrate to libswresample, which, as well as providing more
> > functionality,
> > > is faster and has higher accuracy.
> > >
> > > Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
> > > ---
> >
> > Still against. I'm hoping both libraries can be merged in the future,
> > and removing it would work against this goal.
> > _______________________________________________
> > ffmpeg-devel mailing list
> > ffmpeg-devel@ffmpeg.org
> > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >
>
> The facts speak for themselves - libswresample is better in every way and
> there's nothing we want ported from libavresample. If you think otherwise -
> send a patch or at least structural critique of how libswresample could be
> improved. There's still 2 years until the code is removed and even then
> it'd still be in git, bitrotting as it currently does.
>
> I'm still intending to apply this patch in a few days.


I'm in favour of deprecating and eventually removing it. As Mike used to
say: you need to break eggs to make omelettes.

Ronald
Derek Buitenhuis Dec. 30, 2017, 5:21 p.m. UTC | #4
On 12/30/2017 5:11 PM, Ronald S. Bultje wrote:
> I'm in favour of deprecating and eventually removing it. As Mike used to
> say: you need to break eggs to make omelettes.

I'm in favour simply because I don't know of a good reason to *not*
deprecate it? Does it have ASM, modes, APIs, etc. that swresample
lacks? I know it makes supporting both Libav and FFmpeg more cumbersome,
but I, and pretty well anyone else I know have long since stopped
caring about doing that.

- Derek
wm4 Dec. 30, 2017, 5:35 p.m. UTC | #5
On Sat, 30 Dec 2017 17:21:46 +0000
Derek Buitenhuis <derek.buitenhuis@gmail.com> wrote:

> On 12/30/2017 5:11 PM, Ronald S. Bultje wrote:
> > I'm in favour of deprecating and eventually removing it. As Mike used to
> > say: you need to break eggs to make omelettes.  
> 
> I'm in favour simply because I don't know of a good reason to *not*
> deprecate it? Does it have ASM, modes, APIs, etc. that swresample
> lacks? I know it makes supporting both Libav and FFmpeg more cumbersome,
> but I, and pretty well anyone else I know have long since stopped
> caring about doing that.

Reunification, cleaner code, and also I'm still using the libavresample
API (libswresample through ifdeffery - I hoped that to be a temporal
thing until libavresample was enabled by default).
Rostislav Pehlivanov Jan. 2, 2018, 4:47 p.m. UTC | #6
On 30 December 2017 at 14:59, Rostislav Pehlivanov <atomnuker@gmail.com>
wrote:

> Deprecate the entire library. Merged years ago to provide compatibility
> with Libav, it remained unmaintained by the FFmpeg project and duplicated
> functionality provided by libswresample.
>
> In order to improve consistency and reduce attack surface, as well as to
> ease
> burden on maintainers, it has been deprecated. Users of this library are
> asked
> to migrate to libswresample, which, as well as providing more
> functionality,
> is faster and has higher accuracy.
>
> Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
> ---
> I've kept the deprecations on the enums - they can't hurt.
>  configure                  |   4 +-
>  doc/APIchanges             |   9 ++++
>  libavresample/avresample.h | 106 ++++++++++++++++++++++++++++++
> ++++++++++++---
>  3 files changed, 110 insertions(+), 9 deletions(-)
>
> diff --git a/configure b/configure
> index 688f6ab803..f2fdb93668 100755
> --- a/configure
> +++ b/configure
> @@ -133,7 +133,7 @@ Component options:
>    --disable-swscale        disable libswscale build
>    --disable-postproc       disable libpostproc build
>    --disable-avfilter       disable libavfilter build
> -  --enable-avresample      enable libavresample build [no]
> +  --enable-avresample      enable libavresample build (deprecated) [no]
>    --disable-pthreads       disable pthreads [autodetect]
>    --disable-w32threads     disable Win32 threads [autodetect]
>    --disable-os2threads     disable OS/2 threads [autodetect]
> @@ -6521,7 +6521,7 @@ check_deps $CONFIG_LIST       \
>             $ALL_COMPONENTS    \
>
>  enabled threads && ! enabled pthreads && ! enabled atomics_native && die
> "non pthread threading without atomics not supported, try adding
> --enable-pthreads or --cpu=i486 or higher if you are on x86"
> -
> +enabled avresample && warn "Building with deprecated library
> libavresample"
>
>  if test $target_os = "haiku"; then
>      disable memalign
> diff --git a/doc/APIchanges b/doc/APIchanges
> index 3c9f237596..38c1be61c7 100644
> --- a/doc/APIchanges
> +++ b/doc/APIchanges
> @@ -15,6 +15,15 @@ libavutil:     2017-10-21
>
>  API changes, most recent first:
>
> +2017-xx-xx - xxxxxxx - lavr 4.0.0 - avresample.h
> +  Deprecate the entire library. Merged years ago to provide compatibility
> +  with Libav, it remained unmaintained by the FFmpeg project and
> duplicated
> +  functionality provided by libswresample.
> +
> +  In order to improve consistency and reduce attack surface, it has been
> deprecated.
> +  Users of this library are asked to migrate to libswresample, which, as
> well as
> +  providing more functionality, is faster and has higher accuracy.
> +
>  2017-xx-xx - xxxxxxx - lavc 58.9.100 - avcodec.h
>    Deprecate av_lockmgr_register(). You need to build FFmpeg with threading
>    support enabled to get basic thread-safety (which is the default build
> diff --git a/libavresample/avresample.h b/libavresample/avresample.h
> index 193443e2a6..440e1a16e7 100644
> --- a/libavresample/avresample.h
> +++ b/libavresample/avresample.h
> @@ -103,24 +103,33 @@
>
>  #define AVRESAMPLE_MAX_CHANNELS 32
>
> -typedef struct AVAudioResampleContext AVAudioResampleContext;
> +typedef attribute_deprecated struct AVAudioResampleContext
> AVAudioResampleContext;
>
> -/** Mixing Coefficient Types */
> -enum AVMixCoeffType {
> +/**
> + * @deprecated use libswresample
> + *
> + * Mixing Coefficient Types */
> +enum attribute_deprecated AVMixCoeffType {
>      AV_MIX_COEFF_TYPE_Q8,   /** 16-bit 8.8 fixed-point
>   */
>      AV_MIX_COEFF_TYPE_Q15,  /** 32-bit 17.15 fixed-point
>   */
>      AV_MIX_COEFF_TYPE_FLT,  /** floating-point
>   */
>      AV_MIX_COEFF_TYPE_NB,   /** Number of coeff types. Not part of ABI
>   */
>  };
>
> -/** Resampling Filter Types */
> -enum AVResampleFilterType {
> +/**
> + * @deprecated use libswresample
> + *
> + * Resampling Filter Types */
> +enum attribute_deprecated AVResampleFilterType {
>      AV_RESAMPLE_FILTER_TYPE_CUBIC,              /**< Cubic */
>      AV_RESAMPLE_FILTER_TYPE_BLACKMAN_NUTTALL,   /**< Blackman Nuttall
> Windowed Sinc */
>      AV_RESAMPLE_FILTER_TYPE_KAISER,             /**< Kaiser Windowed
> Sinc */
>  };
>
> -enum AVResampleDitherMethod {
> +/**
> + * @deprecated use libswresample
> + */
> +enum attribute_deprecated AVResampleDitherMethod {
>      AV_RESAMPLE_DITHER_NONE,            /**< Do not use dithering */
>      AV_RESAMPLE_DITHER_RECTANGULAR,     /**< Rectangular Dither */
>      AV_RESAMPLE_DITHER_TRIANGULAR,      /**< Triangular Dither*/
> @@ -130,22 +139,37 @@ enum AVResampleDitherMethod {
>  };
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Return the LIBAVRESAMPLE_VERSION_INT constant.
>   */
> +attribute_deprecated
>  unsigned avresample_version(void);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Return the libavresample build-time configuration.
>   * @return  configure string
>   */
> +attribute_deprecated
>  const char *avresample_configuration(void);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Return the libavresample license.
>   */
> +attribute_deprecated
>  const char *avresample_license(void);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Get the AVClass for AVAudioResampleContext.
>   *
>   * Can be used in combination with AV_OPT_SEARCH_FAKE_OBJ for examining
> options
> @@ -155,16 +179,24 @@ const char *avresample_license(void);
>   *
>   * @return AVClass for AVAudioResampleContext
>   */
> +attribute_deprecated
>  const AVClass *avresample_get_class(void);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Allocate AVAudioResampleContext and set options.
>   *
>   * @return  allocated audio resample context, or NULL on failure
>   */
> +attribute_deprecated
>  AVAudioResampleContext *avresample_alloc_context(void);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Initialize AVAudioResampleContext.
>   * @note The context must be configured using the AVOption API.
>   * @note The fields "in_channel_layout", "out_channel_layout",
> @@ -178,17 +210,25 @@ AVAudioResampleContext *avresample_alloc_context(
> void);
>   * @param avr  audio resample context
>   * @return     0 on success, negative AVERROR code on failure
>   */
> +attribute_deprecated
>  int avresample_open(AVAudioResampleContext *avr);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Check whether an AVAudioResampleContext is open or closed.
>   *
>   * @param avr AVAudioResampleContext to check
>   * @return 1 if avr is open, 0 if avr is closed.
>   */
> +attribute_deprecated
>  int avresample_is_open(AVAudioResampleContext *avr);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Close AVAudioResampleContext.
>   *
>   * This closes the context, but it does not change the parameters. The
> context
> @@ -201,18 +241,26 @@ int avresample_is_open(AVAudioResampleContext *avr);
>   *
>   * @param avr  audio resample context
>   */
> +attribute_deprecated
>  void avresample_close(AVAudioResampleContext *avr);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Free AVAudioResampleContext and associated AVOption values.
>   *
>   * This also calls avresample_close() before freeing.
>   *
>   * @param avr  audio resample context
>   */
> +attribute_deprecated
>  void avresample_free(AVAudioResampleContext **avr);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Generate a channel mixing matrix.
>   *
>   * This function is the one used internally by libavresample for building
> the
> @@ -234,12 +282,16 @@ void avresample_free(AVAudioResampleContext **avr);
>   * @param matrix_encoding     matrixed stereo downmix mode (e.g. dplii)
>   * @return                    0 on success, negative AVERROR code on
> failure
>   */
> +attribute_deprecated
>  int avresample_build_matrix(uint64_t in_layout, uint64_t out_layout,
>                              double center_mix_level, double
> surround_mix_level,
>                              double lfe_mix_level, int normalize, double
> *matrix,
>                              int stride, enum AVMatrixEncoding
> matrix_encoding);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Get the current channel mixing matrix.
>   *
>   * If no custom matrix has been previously set or the
> AVAudioResampleContext is
> @@ -251,10 +303,14 @@ int avresample_build_matrix(uint64_t in_layout,
> uint64_t out_layout,
>   * @param stride  distance between adjacent input channels in the matrix
> array
>   * @return        0 on success, negative AVERROR code on failure
>   */
> +attribute_deprecated
>  int avresample_get_matrix(AVAudioResampleContext *avr, double *matrix,
>                            int stride);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Set channel mixing matrix.
>   *
>   * Allows for setting a custom mixing matrix, overriding the default
> matrix
> @@ -272,10 +328,14 @@ int avresample_get_matrix(AVAudioResampleContext
> *avr, double *matrix,
>   * @param stride  distance between adjacent input channels in the matrix
> array
>   * @return        0 on success, negative AVERROR code on failure
>   */
> +attribute_deprecated
>  int avresample_set_matrix(AVAudioResampleContext *avr, const double
> *matrix,
>                            int stride);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Set a customized input channel mapping.
>   *
>   * This function can only be called when the allocated context is not
> open.
> @@ -302,10 +362,14 @@ int avresample_set_matrix(AVAudioResampleContext
> *avr, const double *matrix,
>   * @param channel_map customized input channel mapping
>   * @return            0 on success, negative AVERROR code on failure
>   */
> +attribute_deprecated
>  int avresample_set_channel_mapping(AVAudioResampleContext *avr,
>                                     const int *channel_map);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Set compensation for resampling.
>   *
>   * This can be called anytime after avresample_open(). If resampling is
> not
> @@ -318,10 +382,14 @@ int avresample_set_channel_mapping(AVAudioResampleContext
> *avr,
>   * @param compensation_distance  compensation distance, in samples
>   * @return                       0 on success, negative AVERROR code on
> failure
>   */
> +attribute_deprecated
>  int avresample_set_compensation(AVAudioResampleContext *avr, int
> sample_delta,
>                                  int compensation_distance);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Provide the upper bound on the number of samples the configured
>   * conversion would output.
>   *
> @@ -331,10 +399,13 @@ int avresample_set_compensation(AVAudioResampleContext
> *avr, int sample_delta,
>   * @return              number of samples or AVERROR(EINVAL) if the value
>   *                      would exceed INT_MAX
>   */
> -
> +attribute_deprecated
>  int avresample_get_out_samples(AVAudioResampleContext *avr, int
> in_nb_samples);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Convert input samples and write them to the output FIFO.
>   *
>   * The upper bound on the number of output samples can be obtained through
> @@ -376,12 +447,16 @@ int avresample_get_out_samples(AVAudioResampleContext
> *avr, int in_nb_samples);
>   *                        not including converted samples added to the
> internal
>   *                        output FIFO
>   */
> +attribute_deprecated
>  int avresample_convert(AVAudioResampleContext *avr, uint8_t **output,
>                         int out_plane_size, int out_samples,
>                         uint8_t * const *input, int in_plane_size,
>                         int in_samples);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Return the number of samples currently in the resampling delay buffer.
>   *
>   * When resampling, there may be a delay between the input and output. Any
> @@ -394,9 +469,13 @@ int avresample_convert(AVAudioResampleContext *avr,
> uint8_t **output,
>   * @param avr  audio resample context
>   * @return     number of samples currently in the resampling delay buffer
>   */
> +attribute_deprecated
>  int avresample_get_delay(AVAudioResampleContext *avr);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Return the number of available samples in the output FIFO.
>   *
>   * During conversion, if the user does not specify an output buffer or
> @@ -411,9 +490,13 @@ int avresample_get_delay(AVAudioResampleContext
> *avr);
>   * @param avr  audio resample context
>   * @return     number of samples available for reading
>   */
> +attribute_deprecated
>  int avresample_available(AVAudioResampleContext *avr);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Read samples from the output FIFO.
>   *
>   * During conversion, if the user does not specify an output buffer or
> @@ -430,9 +513,13 @@ int avresample_available(AVAudioResampleContext
> *avr);
>   * @param nb_samples  number of samples to read from the FIFO
>   * @return            the number of samples written to output
>   */
> +attribute_deprecated
>  int avresample_read(AVAudioResampleContext *avr, uint8_t **output, int
> nb_samples);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Convert the samples in the input AVFrame and write them to the output
> AVFrame.
>   *
>   * Input and output AVFrames must have channel_layout, sample_rate and
> format set.
> @@ -476,10 +563,14 @@ int avresample_read(AVAudioResampleContext *avr,
> uint8_t **output, int nb_sample
>   * @return                0 on success, AVERROR on failure or nonmatching
>   *                        configuration.
>   */
> +attribute_deprecated
>  int avresample_convert_frame(AVAudioResampleContext *avr,
>                               AVFrame *output, AVFrame *input);
>
>  /**
> + *
> + * @deprecated use libswresample
> + *
>   * Configure or reconfigure the AVAudioResampleContext using the
> information
>   * provided by the AVFrames.
>   *
> @@ -494,6 +585,7 @@ int avresample_convert_frame(AVAudioResampleContext
> *avr,
>   * @param in              input AVFrame
>   * @return                0 on success, AVERROR on failure.
>   */
> +attribute_deprecated
>  int avresample_config(AVAudioResampleContext *avr, AVFrame *out, AVFrame
> *in);
>
>  /**
> --
> 2.15.1.620.gb9897f4670
>
>
Going to push this tomorrow.
wm4 Jan. 2, 2018, 5:01 p.m. UTC | #7
On Tue, 2 Jan 2018 16:47:14 +0000
Rostislav Pehlivanov <atomnuker@gmail.com> wrote:

> On 30 December 2017 at 14:59, Rostislav Pehlivanov <atomnuker@gmail.com>
> wrote:
> 
> > Deprecate the entire library. Merged years ago to provide compatibility
> > with Libav, it remained unmaintained by the FFmpeg project and duplicated
> > functionality provided by libswresample.

> > 2.15.1.620.gb9897f4670
> >
> >  
> Going to push this tomorrow.

I'm still against it.
Rostislav Pehlivanov Jan. 2, 2018, 5:48 p.m. UTC | #8
On 2 January 2018 at 17:01, wm4 <nfxjfg@googlemail.com> wrote:

> On Tue, 2 Jan 2018 16:47:14 +0000
> Rostislav Pehlivanov <atomnuker@gmail.com> wrote:
>
> > On 30 December 2017 at 14:59, Rostislav Pehlivanov <atomnuker@gmail.com>
> > wrote:
> >
> > > Deprecate the entire library. Merged years ago to provide compatibility
> > > with Libav, it remained unmaintained by the FFmpeg project and
> duplicated
> > > functionality provided by libswresample.
>
> > > 2.15.1.620.gb9897f4670
> > >
> > >
> > Going to push this tomorrow.
>
> I'm still against it.
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>

And I'm still going to push it. I'm not going to listen to your uninformed
biased irrational ravings on this topic.
Call a vote if you want though you probably know you'll be the only one for
it and you'll just delay it and piss everyone off.
James Almer Jan. 2, 2018, 5:58 p.m. UTC | #9
On 1/2/2018 2:48 PM, Rostislav Pehlivanov wrote:
> On 2 January 2018 at 17:01, wm4 <nfxjfg@googlemail.com> wrote:
> 
>> On Tue, 2 Jan 2018 16:47:14 +0000
>> Rostislav Pehlivanov <atomnuker@gmail.com> wrote:
>>
>>> On 30 December 2017 at 14:59, Rostislav Pehlivanov <atomnuker@gmail.com>
>>> wrote:
>>>
>>>> Deprecate the entire library. Merged years ago to provide compatibility
>>>> with Libav, it remained unmaintained by the FFmpeg project and
>> duplicated
>>>> functionality provided by libswresample.
>>
>>>> 2.15.1.620.gb9897f4670
>>>>
>>>>
>>> Going to push this tomorrow.
>>
>> I'm still against it.
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel@ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
> 
> And I'm still going to push it. I'm not going to listen to your uninformed
> biased irrational ravings on this topic.
> Call a vote if you want though you probably know you'll be the only one for
> it and you'll just delay it and piss everyone off.

Can you drop the aggressiveness? It's the second time in this thread alone.
Rostislav Pehlivanov Jan. 4, 2018, 3:14 a.m. UTC | #10
On 2 January 2018 at 16:47, Rostislav Pehlivanov <atomnuker@gmail.com>
wrote:

>
>
> On 30 December 2017 at 14:59, Rostislav Pehlivanov <atomnuker@gmail.com>
> wrote:
>
>> Deprecate the entire library. Merged years ago to provide compatibility
>> with Libav, it remained unmaintained by the FFmpeg project and duplicated
>> functionality provided by libswresample.
>>
>> In order to improve consistency and reduce attack surface, as well as to
>> ease
>> burden on maintainers, it has been deprecated. Users of this library are
>> asked
>> to migrate to libswresample, which, as well as providing more
>> functionality,
>> is faster and has higher accuracy.
>>
>> Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
>> ---
>> I've kept the deprecations on the enums - they can't hurt.
>>  configure                  |   4 +-
>>  doc/APIchanges             |   9 ++++
>>  libavresample/avresample.h | 106 ++++++++++++++++++++++++++++++
>> ++++++++++++---
>>  3 files changed, 110 insertions(+), 9 deletions(-)
>>
>> diff --git a/configure b/configure
>> index 688f6ab803..f2fdb93668 100755
>> --- a/configure
>> +++ b/configure
>> @@ -133,7 +133,7 @@ Component options:
>>    --disable-swscale        disable libswscale build
>>    --disable-postproc       disable libpostproc build
>>    --disable-avfilter       disable libavfilter build
>> -  --enable-avresample      enable libavresample build [no]
>> +  --enable-avresample      enable libavresample build (deprecated) [no]
>>    --disable-pthreads       disable pthreads [autodetect]
>>    --disable-w32threads     disable Win32 threads [autodetect]
>>    --disable-os2threads     disable OS/2 threads [autodetect]
>> @@ -6521,7 +6521,7 @@ check_deps $CONFIG_LIST       \
>>             $ALL_COMPONENTS    \
>>
>>  enabled threads && ! enabled pthreads && ! enabled atomics_native && die
>> "non pthread threading without atomics not supported, try adding
>> --enable-pthreads or --cpu=i486 or higher if you are on x86"
>> -
>> +enabled avresample && warn "Building with deprecated library
>> libavresample"
>>
>>  if test $target_os = "haiku"; then
>>      disable memalign
>> diff --git a/doc/APIchanges b/doc/APIchanges
>> index 3c9f237596..38c1be61c7 100644
>> --- a/doc/APIchanges
>> +++ b/doc/APIchanges
>> @@ -15,6 +15,15 @@ libavutil:     2017-10-21
>>
>>  API changes, most recent first:
>>
>> +2017-xx-xx - xxxxxxx - lavr 4.0.0 - avresample.h
>> +  Deprecate the entire library. Merged years ago to provide compatibility
>> +  with Libav, it remained unmaintained by the FFmpeg project and
>> duplicated
>> +  functionality provided by libswresample.
>> +
>> +  In order to improve consistency and reduce attack surface, it has been
>> deprecated.
>> +  Users of this library are asked to migrate to libswresample, which, as
>> well as
>> +  providing more functionality, is faster and has higher accuracy.
>> +
>>  2017-xx-xx - xxxxxxx - lavc 58.9.100 - avcodec.h
>>    Deprecate av_lockmgr_register(). You need to build FFmpeg with
>> threading
>>    support enabled to get basic thread-safety (which is the default build
>> diff --git a/libavresample/avresample.h b/libavresample/avresample.h
>> index 193443e2a6..440e1a16e7 100644
>> --- a/libavresample/avresample.h
>> +++ b/libavresample/avresample.h
>> @@ -103,24 +103,33 @@
>>
>>  #define AVRESAMPLE_MAX_CHANNELS 32
>>
>> -typedef struct AVAudioResampleContext AVAudioResampleContext;
>> +typedef attribute_deprecated struct AVAudioResampleContext
>> AVAudioResampleContext;
>>
>> -/** Mixing Coefficient Types */
>> -enum AVMixCoeffType {
>> +/**
>> + * @deprecated use libswresample
>> + *
>> + * Mixing Coefficient Types */
>> +enum attribute_deprecated AVMixCoeffType {
>>      AV_MIX_COEFF_TYPE_Q8,   /** 16-bit 8.8 fixed-point
>>     */
>>      AV_MIX_COEFF_TYPE_Q15,  /** 32-bit 17.15 fixed-point
>>     */
>>      AV_MIX_COEFF_TYPE_FLT,  /** floating-point
>>     */
>>      AV_MIX_COEFF_TYPE_NB,   /** Number of coeff types. Not part of ABI
>>     */
>>  };
>>
>> -/** Resampling Filter Types */
>> -enum AVResampleFilterType {
>> +/**
>> + * @deprecated use libswresample
>> + *
>> + * Resampling Filter Types */
>> +enum attribute_deprecated AVResampleFilterType {
>>      AV_RESAMPLE_FILTER_TYPE_CUBIC,              /**< Cubic */
>>      AV_RESAMPLE_FILTER_TYPE_BLACKMAN_NUTTALL,   /**< Blackman Nuttall
>> Windowed Sinc */
>>      AV_RESAMPLE_FILTER_TYPE_KAISER,             /**< Kaiser Windowed
>> Sinc */
>>  };
>>
>> -enum AVResampleDitherMethod {
>> +/**
>> + * @deprecated use libswresample
>> + */
>> +enum attribute_deprecated AVResampleDitherMethod {
>>      AV_RESAMPLE_DITHER_NONE,            /**< Do not use dithering */
>>      AV_RESAMPLE_DITHER_RECTANGULAR,     /**< Rectangular Dither */
>>      AV_RESAMPLE_DITHER_TRIANGULAR,      /**< Triangular Dither*/
>> @@ -130,22 +139,37 @@ enum AVResampleDitherMethod {
>>  };
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Return the LIBAVRESAMPLE_VERSION_INT constant.
>>   */
>> +attribute_deprecated
>>  unsigned avresample_version(void);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Return the libavresample build-time configuration.
>>   * @return  configure string
>>   */
>> +attribute_deprecated
>>  const char *avresample_configuration(void);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Return the libavresample license.
>>   */
>> +attribute_deprecated
>>  const char *avresample_license(void);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Get the AVClass for AVAudioResampleContext.
>>   *
>>   * Can be used in combination with AV_OPT_SEARCH_FAKE_OBJ for examining
>> options
>> @@ -155,16 +179,24 @@ const char *avresample_license(void);
>>   *
>>   * @return AVClass for AVAudioResampleContext
>>   */
>> +attribute_deprecated
>>  const AVClass *avresample_get_class(void);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Allocate AVAudioResampleContext and set options.
>>   *
>>   * @return  allocated audio resample context, or NULL on failure
>>   */
>> +attribute_deprecated
>>  AVAudioResampleContext *avresample_alloc_context(void);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Initialize AVAudioResampleContext.
>>   * @note The context must be configured using the AVOption API.
>>   * @note The fields "in_channel_layout", "out_channel_layout",
>> @@ -178,17 +210,25 @@ AVAudioResampleContext
>> *avresample_alloc_context(void);
>>   * @param avr  audio resample context
>>   * @return     0 on success, negative AVERROR code on failure
>>   */
>> +attribute_deprecated
>>  int avresample_open(AVAudioResampleContext *avr);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Check whether an AVAudioResampleContext is open or closed.
>>   *
>>   * @param avr AVAudioResampleContext to check
>>   * @return 1 if avr is open, 0 if avr is closed.
>>   */
>> +attribute_deprecated
>>  int avresample_is_open(AVAudioResampleContext *avr);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Close AVAudioResampleContext.
>>   *
>>   * This closes the context, but it does not change the parameters. The
>> context
>> @@ -201,18 +241,26 @@ int avresample_is_open(AVAudioResampleContext
>> *avr);
>>   *
>>   * @param avr  audio resample context
>>   */
>> +attribute_deprecated
>>  void avresample_close(AVAudioResampleContext *avr);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Free AVAudioResampleContext and associated AVOption values.
>>   *
>>   * This also calls avresample_close() before freeing.
>>   *
>>   * @param avr  audio resample context
>>   */
>> +attribute_deprecated
>>  void avresample_free(AVAudioResampleContext **avr);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Generate a channel mixing matrix.
>>   *
>>   * This function is the one used internally by libavresample for
>> building the
>> @@ -234,12 +282,16 @@ void avresample_free(AVAudioResampleContext **avr);
>>   * @param matrix_encoding     matrixed stereo downmix mode (e.g. dplii)
>>   * @return                    0 on success, negative AVERROR code on
>> failure
>>   */
>> +attribute_deprecated
>>  int avresample_build_matrix(uint64_t in_layout, uint64_t out_layout,
>>                              double center_mix_level, double
>> surround_mix_level,
>>                              double lfe_mix_level, int normalize, double
>> *matrix,
>>                              int stride, enum AVMatrixEncoding
>> matrix_encoding);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Get the current channel mixing matrix.
>>   *
>>   * If no custom matrix has been previously set or the
>> AVAudioResampleContext is
>> @@ -251,10 +303,14 @@ int avresample_build_matrix(uint64_t in_layout,
>> uint64_t out_layout,
>>   * @param stride  distance between adjacent input channels in the matrix
>> array
>>   * @return        0 on success, negative AVERROR code on failure
>>   */
>> +attribute_deprecated
>>  int avresample_get_matrix(AVAudioResampleContext *avr, double *matrix,
>>                            int stride);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Set channel mixing matrix.
>>   *
>>   * Allows for setting a custom mixing matrix, overriding the default
>> matrix
>> @@ -272,10 +328,14 @@ int avresample_get_matrix(AVAudioResampleContext
>> *avr, double *matrix,
>>   * @param stride  distance between adjacent input channels in the matrix
>> array
>>   * @return        0 on success, negative AVERROR code on failure
>>   */
>> +attribute_deprecated
>>  int avresample_set_matrix(AVAudioResampleContext *avr, const double
>> *matrix,
>>                            int stride);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Set a customized input channel mapping.
>>   *
>>   * This function can only be called when the allocated context is not
>> open.
>> @@ -302,10 +362,14 @@ int avresample_set_matrix(AVAudioResampleContext
>> *avr, const double *matrix,
>>   * @param channel_map customized input channel mapping
>>   * @return            0 on success, negative AVERROR code on failure
>>   */
>> +attribute_deprecated
>>  int avresample_set_channel_mapping(AVAudioResampleContext *avr,
>>                                     const int *channel_map);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Set compensation for resampling.
>>   *
>>   * This can be called anytime after avresample_open(). If resampling is
>> not
>> @@ -318,10 +382,14 @@ int avresample_set_channel_mapping(AVAudioResampleContext
>> *avr,
>>   * @param compensation_distance  compensation distance, in samples
>>   * @return                       0 on success, negative AVERROR code on
>> failure
>>   */
>> +attribute_deprecated
>>  int avresample_set_compensation(AVAudioResampleContext *avr, int
>> sample_delta,
>>                                  int compensation_distance);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Provide the upper bound on the number of samples the configured
>>   * conversion would output.
>>   *
>> @@ -331,10 +399,13 @@ int avresample_set_compensation(AVAudioResampleContext
>> *avr, int sample_delta,
>>   * @return              number of samples or AVERROR(EINVAL) if the value
>>   *                      would exceed INT_MAX
>>   */
>> -
>> +attribute_deprecated
>>  int avresample_get_out_samples(AVAudioResampleContext *avr, int
>> in_nb_samples);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Convert input samples and write them to the output FIFO.
>>   *
>>   * The upper bound on the number of output samples can be obtained
>> through
>> @@ -376,12 +447,16 @@ int avresample_get_out_samples(AVAudioResampleContext
>> *avr, int in_nb_samples);
>>   *                        not including converted samples added to the
>> internal
>>   *                        output FIFO
>>   */
>> +attribute_deprecated
>>  int avresample_convert(AVAudioResampleContext *avr, uint8_t **output,
>>                         int out_plane_size, int out_samples,
>>                         uint8_t * const *input, int in_plane_size,
>>                         int in_samples);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Return the number of samples currently in the resampling delay buffer.
>>   *
>>   * When resampling, there may be a delay between the input and output.
>> Any
>> @@ -394,9 +469,13 @@ int avresample_convert(AVAudioResampleContext *avr,
>> uint8_t **output,
>>   * @param avr  audio resample context
>>   * @return     number of samples currently in the resampling delay buffer
>>   */
>> +attribute_deprecated
>>  int avresample_get_delay(AVAudioResampleContext *avr);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Return the number of available samples in the output FIFO.
>>   *
>>   * During conversion, if the user does not specify an output buffer or
>> @@ -411,9 +490,13 @@ int avresample_get_delay(AVAudioResampleContext
>> *avr);
>>   * @param avr  audio resample context
>>   * @return     number of samples available for reading
>>   */
>> +attribute_deprecated
>>  int avresample_available(AVAudioResampleContext *avr);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Read samples from the output FIFO.
>>   *
>>   * During conversion, if the user does not specify an output buffer or
>> @@ -430,9 +513,13 @@ int avresample_available(AVAudioResampleContext
>> *avr);
>>   * @param nb_samples  number of samples to read from the FIFO
>>   * @return            the number of samples written to output
>>   */
>> +attribute_deprecated
>>  int avresample_read(AVAudioResampleContext *avr, uint8_t **output, int
>> nb_samples);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Convert the samples in the input AVFrame and write them to the output
>> AVFrame.
>>   *
>>   * Input and output AVFrames must have channel_layout, sample_rate and
>> format set.
>> @@ -476,10 +563,14 @@ int avresample_read(AVAudioResampleContext *avr,
>> uint8_t **output, int nb_sample
>>   * @return                0 on success, AVERROR on failure or nonmatching
>>   *                        configuration.
>>   */
>> +attribute_deprecated
>>  int avresample_convert_frame(AVAudioResampleContext *avr,
>>                               AVFrame *output, AVFrame *input);
>>
>>  /**
>> + *
>> + * @deprecated use libswresample
>> + *
>>   * Configure or reconfigure the AVAudioResampleContext using the
>> information
>>   * provided by the AVFrames.
>>   *
>> @@ -494,6 +585,7 @@ int avresample_convert_frame(AVAudioResampleContext
>> *avr,
>>   * @param in              input AVFrame
>>   * @return                0 on success, AVERROR on failure.
>>   */
>> +attribute_deprecated
>>  int avresample_config(AVAudioResampleContext *avr, AVFrame *out,
>> AVFrame *in);
>>
>>  /**
>> --
>> 2.15.1.620.gb9897f4670
>>
>>
> Going to push this tomorrow.
>


Pushed, thanks for the reviews and comments.
diff mbox

Patch

diff --git a/configure b/configure
index 688f6ab803..f2fdb93668 100755
--- a/configure
+++ b/configure
@@ -133,7 +133,7 @@  Component options:
   --disable-swscale        disable libswscale build
   --disable-postproc       disable libpostproc build
   --disable-avfilter       disable libavfilter build
-  --enable-avresample      enable libavresample build [no]
+  --enable-avresample      enable libavresample build (deprecated) [no]
   --disable-pthreads       disable pthreads [autodetect]
   --disable-w32threads     disable Win32 threads [autodetect]
   --disable-os2threads     disable OS/2 threads [autodetect]
@@ -6521,7 +6521,7 @@  check_deps $CONFIG_LIST       \
            $ALL_COMPONENTS    \
 
 enabled threads && ! enabled pthreads && ! enabled atomics_native && die "non pthread threading without atomics not supported, try adding --enable-pthreads or --cpu=i486 or higher if you are on x86"
-
+enabled avresample && warn "Building with deprecated library libavresample"
 
 if test $target_os = "haiku"; then
     disable memalign
diff --git a/doc/APIchanges b/doc/APIchanges
index 3c9f237596..38c1be61c7 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,15 @@  libavutil:     2017-10-21
 
 API changes, most recent first:
 
+2017-xx-xx - xxxxxxx - lavr 4.0.0 - avresample.h
+  Deprecate the entire library. Merged years ago to provide compatibility
+  with Libav, it remained unmaintained by the FFmpeg project and duplicated
+  functionality provided by libswresample.
+
+  In order to improve consistency and reduce attack surface, it has been deprecated.
+  Users of this library are asked to migrate to libswresample, which, as well as
+  providing more functionality, is faster and has higher accuracy.
+
 2017-xx-xx - xxxxxxx - lavc 58.9.100 - avcodec.h
   Deprecate av_lockmgr_register(). You need to build FFmpeg with threading
   support enabled to get basic thread-safety (which is the default build
diff --git a/libavresample/avresample.h b/libavresample/avresample.h
index 193443e2a6..440e1a16e7 100644
--- a/libavresample/avresample.h
+++ b/libavresample/avresample.h
@@ -103,24 +103,33 @@ 
 
 #define AVRESAMPLE_MAX_CHANNELS 32
 
-typedef struct AVAudioResampleContext AVAudioResampleContext;
+typedef attribute_deprecated struct AVAudioResampleContext AVAudioResampleContext;
 
-/** Mixing Coefficient Types */
-enum AVMixCoeffType {
+/**
+ * @deprecated use libswresample
+ *
+ * Mixing Coefficient Types */
+enum attribute_deprecated AVMixCoeffType {
     AV_MIX_COEFF_TYPE_Q8,   /** 16-bit 8.8 fixed-point                      */
     AV_MIX_COEFF_TYPE_Q15,  /** 32-bit 17.15 fixed-point                    */
     AV_MIX_COEFF_TYPE_FLT,  /** floating-point                              */
     AV_MIX_COEFF_TYPE_NB,   /** Number of coeff types. Not part of ABI      */
 };
 
-/** Resampling Filter Types */
-enum AVResampleFilterType {
+/**
+ * @deprecated use libswresample
+ *
+ * Resampling Filter Types */
+enum attribute_deprecated AVResampleFilterType {
     AV_RESAMPLE_FILTER_TYPE_CUBIC,              /**< Cubic */
     AV_RESAMPLE_FILTER_TYPE_BLACKMAN_NUTTALL,   /**< Blackman Nuttall Windowed Sinc */
     AV_RESAMPLE_FILTER_TYPE_KAISER,             /**< Kaiser Windowed Sinc */
 };
 
-enum AVResampleDitherMethod {
+/**
+ * @deprecated use libswresample
+ */
+enum attribute_deprecated AVResampleDitherMethod {
     AV_RESAMPLE_DITHER_NONE,            /**< Do not use dithering */
     AV_RESAMPLE_DITHER_RECTANGULAR,     /**< Rectangular Dither */
     AV_RESAMPLE_DITHER_TRIANGULAR,      /**< Triangular Dither*/
@@ -130,22 +139,37 @@  enum AVResampleDitherMethod {
 };
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Return the LIBAVRESAMPLE_VERSION_INT constant.
  */
+attribute_deprecated
 unsigned avresample_version(void);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Return the libavresample build-time configuration.
  * @return  configure string
  */
+attribute_deprecated
 const char *avresample_configuration(void);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Return the libavresample license.
  */
+attribute_deprecated
 const char *avresample_license(void);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Get the AVClass for AVAudioResampleContext.
  *
  * Can be used in combination with AV_OPT_SEARCH_FAKE_OBJ for examining options
@@ -155,16 +179,24 @@  const char *avresample_license(void);
  *
  * @return AVClass for AVAudioResampleContext
  */
+attribute_deprecated
 const AVClass *avresample_get_class(void);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Allocate AVAudioResampleContext and set options.
  *
  * @return  allocated audio resample context, or NULL on failure
  */
+attribute_deprecated
 AVAudioResampleContext *avresample_alloc_context(void);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Initialize AVAudioResampleContext.
  * @note The context must be configured using the AVOption API.
  * @note The fields "in_channel_layout", "out_channel_layout",
@@ -178,17 +210,25 @@  AVAudioResampleContext *avresample_alloc_context(void);
  * @param avr  audio resample context
  * @return     0 on success, negative AVERROR code on failure
  */
+attribute_deprecated
 int avresample_open(AVAudioResampleContext *avr);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Check whether an AVAudioResampleContext is open or closed.
  *
  * @param avr AVAudioResampleContext to check
  * @return 1 if avr is open, 0 if avr is closed.
  */
+attribute_deprecated
 int avresample_is_open(AVAudioResampleContext *avr);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Close AVAudioResampleContext.
  *
  * This closes the context, but it does not change the parameters. The context
@@ -201,18 +241,26 @@  int avresample_is_open(AVAudioResampleContext *avr);
  *
  * @param avr  audio resample context
  */
+attribute_deprecated
 void avresample_close(AVAudioResampleContext *avr);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Free AVAudioResampleContext and associated AVOption values.
  *
  * This also calls avresample_close() before freeing.
  *
  * @param avr  audio resample context
  */
+attribute_deprecated
 void avresample_free(AVAudioResampleContext **avr);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Generate a channel mixing matrix.
  *
  * This function is the one used internally by libavresample for building the
@@ -234,12 +282,16 @@  void avresample_free(AVAudioResampleContext **avr);
  * @param matrix_encoding     matrixed stereo downmix mode (e.g. dplii)
  * @return                    0 on success, negative AVERROR code on failure
  */
+attribute_deprecated
 int avresample_build_matrix(uint64_t in_layout, uint64_t out_layout,
                             double center_mix_level, double surround_mix_level,
                             double lfe_mix_level, int normalize, double *matrix,
                             int stride, enum AVMatrixEncoding matrix_encoding);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Get the current channel mixing matrix.
  *
  * If no custom matrix has been previously set or the AVAudioResampleContext is
@@ -251,10 +303,14 @@  int avresample_build_matrix(uint64_t in_layout, uint64_t out_layout,
  * @param stride  distance between adjacent input channels in the matrix array
  * @return        0 on success, negative AVERROR code on failure
  */
+attribute_deprecated
 int avresample_get_matrix(AVAudioResampleContext *avr, double *matrix,
                           int stride);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Set channel mixing matrix.
  *
  * Allows for setting a custom mixing matrix, overriding the default matrix
@@ -272,10 +328,14 @@  int avresample_get_matrix(AVAudioResampleContext *avr, double *matrix,
  * @param stride  distance between adjacent input channels in the matrix array
  * @return        0 on success, negative AVERROR code on failure
  */
+attribute_deprecated
 int avresample_set_matrix(AVAudioResampleContext *avr, const double *matrix,
                           int stride);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Set a customized input channel mapping.
  *
  * This function can only be called when the allocated context is not open.
@@ -302,10 +362,14 @@  int avresample_set_matrix(AVAudioResampleContext *avr, const double *matrix,
  * @param channel_map customized input channel mapping
  * @return            0 on success, negative AVERROR code on failure
  */
+attribute_deprecated
 int avresample_set_channel_mapping(AVAudioResampleContext *avr,
                                    const int *channel_map);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Set compensation for resampling.
  *
  * This can be called anytime after avresample_open(). If resampling is not
@@ -318,10 +382,14 @@  int avresample_set_channel_mapping(AVAudioResampleContext *avr,
  * @param compensation_distance  compensation distance, in samples
  * @return                       0 on success, negative AVERROR code on failure
  */
+attribute_deprecated
 int avresample_set_compensation(AVAudioResampleContext *avr, int sample_delta,
                                 int compensation_distance);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Provide the upper bound on the number of samples the configured
  * conversion would output.
  *
@@ -331,10 +399,13 @@  int avresample_set_compensation(AVAudioResampleContext *avr, int sample_delta,
  * @return              number of samples or AVERROR(EINVAL) if the value
  *                      would exceed INT_MAX
  */
-
+attribute_deprecated
 int avresample_get_out_samples(AVAudioResampleContext *avr, int in_nb_samples);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Convert input samples and write them to the output FIFO.
  *
  * The upper bound on the number of output samples can be obtained through
@@ -376,12 +447,16 @@  int avresample_get_out_samples(AVAudioResampleContext *avr, int in_nb_samples);
  *                        not including converted samples added to the internal
  *                        output FIFO
  */
+attribute_deprecated
 int avresample_convert(AVAudioResampleContext *avr, uint8_t **output,
                        int out_plane_size, int out_samples,
                        uint8_t * const *input, int in_plane_size,
                        int in_samples);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Return the number of samples currently in the resampling delay buffer.
  *
  * When resampling, there may be a delay between the input and output. Any
@@ -394,9 +469,13 @@  int avresample_convert(AVAudioResampleContext *avr, uint8_t **output,
  * @param avr  audio resample context
  * @return     number of samples currently in the resampling delay buffer
  */
+attribute_deprecated
 int avresample_get_delay(AVAudioResampleContext *avr);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Return the number of available samples in the output FIFO.
  *
  * During conversion, if the user does not specify an output buffer or
@@ -411,9 +490,13 @@  int avresample_get_delay(AVAudioResampleContext *avr);
  * @param avr  audio resample context
  * @return     number of samples available for reading
  */
+attribute_deprecated
 int avresample_available(AVAudioResampleContext *avr);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Read samples from the output FIFO.
  *
  * During conversion, if the user does not specify an output buffer or
@@ -430,9 +513,13 @@  int avresample_available(AVAudioResampleContext *avr);
  * @param nb_samples  number of samples to read from the FIFO
  * @return            the number of samples written to output
  */
+attribute_deprecated
 int avresample_read(AVAudioResampleContext *avr, uint8_t **output, int nb_samples);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Convert the samples in the input AVFrame and write them to the output AVFrame.
  *
  * Input and output AVFrames must have channel_layout, sample_rate and format set.
@@ -476,10 +563,14 @@  int avresample_read(AVAudioResampleContext *avr, uint8_t **output, int nb_sample
  * @return                0 on success, AVERROR on failure or nonmatching
  *                        configuration.
  */
+attribute_deprecated
 int avresample_convert_frame(AVAudioResampleContext *avr,
                              AVFrame *output, AVFrame *input);
 
 /**
+ *
+ * @deprecated use libswresample
+ *
  * Configure or reconfigure the AVAudioResampleContext using the information
  * provided by the AVFrames.
  *
@@ -494,6 +585,7 @@  int avresample_convert_frame(AVAudioResampleContext *avr,
  * @param in              input AVFrame
  * @return                0 on success, AVERROR on failure.
  */
+attribute_deprecated
 int avresample_config(AVAudioResampleContext *avr, AVFrame *out, AVFrame *in);
 
 /**