[FFmpeg-devel] [PATCH 1/3] avutil: rename av_mod_uintp2 to av_zero_extend
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Tue Jun 11 23:26:51 EEST 2024
James Almer:
> It's more descriptive of what it does.
>
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> libavutil/common.h | 16 +++++++++++++++-
> libavutil/version.h | 1 +
> libavutil/x86/intmath.h | 6 +++---
> 3 files changed, 19 insertions(+), 4 deletions(-)
>
> diff --git a/libavutil/common.h b/libavutil/common.h
> index 3e4c339893..acd041fb67 100644
> --- a/libavutil/common.h
> +++ b/libavutil/common.h
> @@ -42,6 +42,7 @@
> #include "attributes.h"
> #include "error.h"
> #include "macros.h"
> +#include "version.h"
>
> #ifdef HAVE_AV_CONFIG_H
> # include "config.h"
> @@ -122,9 +123,11 @@
> #ifndef av_clip_uintp2
> # define av_clip_uintp2 av_clip_uintp2_c
> #endif
> +#if FF_API_MOD_UINTP2
> #ifndef av_mod_uintp2
> # define av_mod_uintp2 av_mod_uintp2_c
> #endif
> +#endif
For the record: This patch on its own will disable the x86 optimization
in this patch, only to be restored in #3.
> #ifndef av_sat_add32
> # define av_sat_add32 av_sat_add32_c
> #endif
> @@ -149,6 +152,9 @@
> #ifndef av_clipd
> # define av_clipd av_clipd_c
> #endif
> +#ifndef av_zero_extend
> +# define av_zero_extend av_zero_extend_c
> +#endif
> #ifndef av_popcount
> # define av_popcount av_popcount_c
> #endif
> @@ -288,11 +294,19 @@ static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p)
> * @param p bit position to clip at
> * @return clipped value
> */
> -static av_always_inline av_const unsigned av_mod_uintp2_c(unsigned a, unsigned p)
> +static av_always_inline av_const unsigned av_zero_extend_c(unsigned a, unsigned p)
> {
> return a & ((1U << p) - 1);
> }
>
> +#if FF_API_MOD_UINTP2
> +attribute_deprecated
> +static av_always_inline av_const unsigned av_mod_uintp2_c(unsigned a, unsigned p)
> +{
> + return av_zero_extend_c(a, p);
> +}
> +#endif
> +
> /**
> * Add two signed 32-bit values with saturation.
> *
> diff --git a/libavutil/version.h b/libavutil/version.h
> index 9d08d56884..38456affb8 100644
> --- a/libavutil/version.h
> +++ b/libavutil/version.h
> @@ -112,6 +112,7 @@
> #define FF_API_PALETTE_HAS_CHANGED (LIBAVUTIL_VERSION_MAJOR < 60)
> #define FF_API_VULKAN_CONTIGUOUS_MEMORY (LIBAVUTIL_VERSION_MAJOR < 60)
> #define FF_API_H274_FILM_GRAIN_VCS (LIBAVUTIL_VERSION_MAJOR < 60)
> +#define FF_API_MOD_UINTP2 (LIBAVUTIL_VERSION_MAJOR < 60)
>
> /**
> * @}
> diff --git a/libavutil/x86/intmath.h b/libavutil/x86/intmath.h
> index 8a6b5ae261..821a06ab66 100644
> --- a/libavutil/x86/intmath.h
> +++ b/libavutil/x86/intmath.h
> @@ -82,13 +82,13 @@ static av_always_inline av_const int ff_ctzll_x86(long long v)
> #if defined(__BMI2__)
>
> #if AV_GCC_VERSION_AT_LEAST(5,1)
> -#define av_mod_uintp2 __builtin_ia32_bzhi_si
> +#define av_zero_extend __builtin_ia32_bzhi_si
> #elif HAVE_INLINE_ASM
> /* GCC releases before 5.1.0 have a broken bzhi builtin, so for those we
> * implement it using inline assembly
> */
> -#define av_mod_uintp2 av_mod_uintp2_bmi2
> -static av_always_inline av_const unsigned av_mod_uintp2_bmi2(unsigned a, unsigned p)
> +#define av_zero_extend av_zero_extend_bmi2
> +static av_always_inline av_const unsigned av_zero_extend_bmi2(unsigned a, unsigned p)
> {
> if (av_builtin_constant_p(p))
> return a & ((1 << p) - 1);
Missing APIchanges and version bump.
- Andreas
More information about the ffmpeg-devel
mailing list