[FFmpeg-devel] [PATCH 2/5] avcodec: Add missing FF_API define for libavcodec pix fmt API

James Almer jamrial at gmail.com
Fri Feb 26 15:30:51 EET 2021


On 2/26/2021 10:18 AM, Andreas Rheinhardt wrote:
> avcodec_find_best_pix_fmt2 has been deprecated and replaced by
> avcodec_find_best_pix_fmt_of_2 in 2a54ae9df8cbc1717b3929222ac75f384e2ff240.
> avcodec_find_best_pix_fmt_of_2 and avcodec_get_pix_fmt_loss meanwhile
> were deprecated in 617e866e25b72fa5d9f9d6bbcbd7e4bd69e63a54 when these
> functions were de facto moved to libavutil; this has been mentioned in
> APIchanges in f7a1c5e4d2294a8970ede7f6deb2fe0a64e202a5. Yet the
> attribute_deprecated was never set for the latter two functions and they
> were not wrapped in an FF_API define. This commit does this.
> 
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> ---
>   libavcodec/avcodec.h    | 15 +++++++++------
>   libavcodec/imgconvert.c |  6 ++++--
>   libavcodec/version.h    |  3 +++
>   3 files changed, 16 insertions(+), 8 deletions(-)
> 
> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
> index 3d77d2f6fd..3178c163b9 100644
> --- a/libavcodec/avcodec.h
> +++ b/libavcodec/avcodec.h
> @@ -3786,12 +3786,6 @@ void avcodec_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, int *h_shift, int
>    */
>   unsigned int avcodec_pix_fmt_to_codec_tag(enum AVPixelFormat pix_fmt);
>   
> -/**
> - * @deprecated see av_get_pix_fmt_loss()
> - */
> -int avcodec_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt,
> -                             int has_alpha);
> -
>   /**
>    * Find the best pixel format to convert to given a certain source pixel
>    * format.  When converting from one pixel format to another, information loss
> @@ -3813,15 +3807,24 @@ enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(const enum AVPixelFormat *p
>                                               enum AVPixelFormat src_pix_fmt,
>                                               int has_alpha, int *loss_ptr);
>   
> +#if FF_API_AVCODEC_PIX_FMT
> +/**
> + * @deprecated see av_get_pix_fmt_loss()
> + */
> +attribute_deprecated
> +int avcodec_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt,
> +                             int has_alpha);
>   /**
>    * @deprecated see av_find_best_pix_fmt_of_2()
>    */
> +attribute_deprecated
>   enum AVPixelFormat avcodec_find_best_pix_fmt_of_2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2,
>                                               enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr);
>   
>   attribute_deprecated
>   enum AVPixelFormat avcodec_find_best_pix_fmt2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2,
>                                               enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr);
> +#endif
>   
>   enum AVPixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum AVPixelFormat * fmt);
>   
> diff --git a/libavcodec/imgconvert.c b/libavcodec/imgconvert.c
> index 1fd636c83d..8de1563404 100644
> --- a/libavcodec/imgconvert.c
> +++ b/libavcodec/imgconvert.c
> @@ -44,6 +44,7 @@ void avcodec_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, int *h_shift, int
>   }
>   #endif
>   
> +#if FF_API_AVCODEC_PIX_FMT
>   int avcodec_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt,
>                                enum AVPixelFormat src_pix_fmt,
>                                int has_alpha)
> @@ -60,9 +61,10 @@ enum AVPixelFormat avcodec_find_best_pix_fmt_of_2(enum AVPixelFormat dst_pix_fmt
>   enum AVPixelFormat avcodec_find_best_pix_fmt2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2,
>                                               enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr)
>   {
> -    return avcodec_find_best_pix_fmt_of_2(dst_pix_fmt1, dst_pix_fmt2, src_pix_fmt, has_alpha, loss_ptr);
> +    return av_find_best_pix_fmt_of_2(dst_pix_fmt1, dst_pix_fmt2, src_pix_fmt, has_alpha, loss_ptr);
>   }
>   
> +#endif
>   enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(const enum AVPixelFormat *pix_fmt_list,
>                                               enum AVPixelFormat src_pix_fmt,
>                                               int has_alpha, int *loss_ptr){
> @@ -73,7 +75,7 @@ enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(const enum AVPixelFormat *p
>   
>       for (i=0; pix_fmt_list[i] != AV_PIX_FMT_NONE; i++) {
>           loss = loss_ptr ? *loss_ptr : 0;
> -        best = avcodec_find_best_pix_fmt_of_2(best, pix_fmt_list[i], src_pix_fmt, has_alpha, &loss);
> +        best = av_find_best_pix_fmt_of_2(best, pix_fmt_list[i], src_pix_fmt, has_alpha, &loss);
>       }
>   
>       if (loss_ptr)
> diff --git a/libavcodec/version.h b/libavcodec/version.h
> index e5a5ec8abc..516411b4b2 100644
> --- a/libavcodec/version.h
> +++ b/libavcodec/version.h
> @@ -144,6 +144,9 @@
>   #ifndef FF_API_OLD_ENCDEC
>   #define FF_API_OLD_ENCDEC          (LIBAVCODEC_VERSION_MAJOR < 59)
>   #endif
> +#ifndef FF_API_AVCODEC_PIX_FMT
> +#define FF_API_AVCODEC_PIX_FMT     (LIBAVCODEC_VERSION_MAJOR < 59)

Ok, since this was mentioned in APIChanges, i guess < 59 is ok despite 
the missing function prototype attribute. But if i were to guess, most 
API users will pay more attention to compiler warnings rather than 
bothering to read the above document...

So LGTM.

> +#endif
>   #ifndef FF_API_THREAD_SAFE_CALLBACKS
>   #define FF_API_THREAD_SAFE_CALLBACKS (LIBAVCODEC_VERSION_MAJOR < 60)
>   #endif
> 



More information about the ffmpeg-devel mailing list