[FFmpeg-devel] [PATCH v4] lavr: deprecate the entire library
Rostislav Pehlivanov
atomnuker at gmail.com
Tue Jan 2 18:47:14 EET 2018
On 30 December 2017 at 14:59, Rostislav Pehlivanov <atomnuker at 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 at 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.
More information about the ffmpeg-devel
mailing list