[FFmpeg-devel] [PATCH] libx264: Do not explicitly set X264_API_IMPORTS

Matt Oliver protogonoi at gmail.com
Wed Dec 1 06:18:14 EET 2021


On Sat, 30 Oct 2021 at 14:16, Matt Oliver <protogonoi at gmail.com> wrote:

> Setting X264_API_IMPORTS only affects msvc builds and it breaks linking to
> static builds (although is required for shared builds). This flag is set by
> x264 in its pkgconfig as required since build 158
> (a615f027ed172e2dd5380e736d487aa858a0c4ff) from July 2019. So this patch
> updates configure to require a newer x264 build that correctly sets the
> imports flag.
>
> Alternatively we can detect the x264 build version in configure and keep
> the fallback of manually setting the flag on older x264 builds that aren't
> using pkgconfig (to keep the old behaviour) but that requires some complex
> configure changes that I'm not sure how best to do (assistance welcome).
>
> Signed-off-by: Matt Oliver <protogonoi at gmail.com>
> ---
>  configure            | 8 +++-----
>  libavcodec/libx264.c | 4 ----
>  2 files changed, 3 insertions(+), 9 deletions(-)
>
> diff --git a/configure b/configure
> index ede8f9777b..b35728aace 100755
> --- a/configure
> +++ b/configure
> @@ -6535,11 +6535,9 @@ enabled libvpx            && {
>  enabled libwebp           && {
>      enabled libwebp_encoder      && require_pkg_config libwebp "libwebp
> >= 0.2.0" webp/encode.h WebPGetEncoderVersion
>      enabled libwebp_anim_encoder && check_pkg_config libwebp_anim_encoder
> "libwebpmux >= 0.4.0" webp/mux.h WebPAnimEncoderOptionsInit; }
> -enabled libx264           && { check_pkg_config libx264 x264 "stdint.h
> x264.h" x264_encoder_encode ||
> -                               { require libx264 "stdint.h x264.h"
> x264_encoder_encode "-lx264 $pthreads_extralibs $libm_extralibs" &&
> -                                 warn "using libx264 without pkg-config";
> } } &&
> -                             require_cpp_condition libx264 x264.h
> "X264_BUILD >= 118" &&
> -                             check_cpp_condition libx262 x264.h
> "X264_MPEG2"
> +enabled libx264           && check_pkg_config libx264 x264 "stdint.h
> x264.h" x264_encoder_encode &&
> +                             require_cpp_condition libx264 x264.h
> "X264_BUILD >= 158" &&
> +                             check_cpp_condition libx264 x264.h
> "X264_MPEG2"
>  enabled libx265           && require_pkg_config libx265 x265 x265.h
> x265_api_get &&
>                               require_cpp_condition libx265 x265.h
> "X265_BUILD >= 70"
>  enabled libxavs           && require libxavs "stdint.h xavs.h"
> xavs_encoder_encode "-lxavs $pthreads_extralibs $libm_extralibs"
> diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c
> index 21f434d06d..efbc9608c7 100644
> --- a/libavcodec/libx264.c
> +++ b/libavcodec/libx264.c
> @@ -34,10 +34,6 @@
>  #include "atsc_a53.h"
>  #include "sei.h"
>
> -#if defined(_MSC_VER)
> -#define X264_API_IMPORTS 1
> -#endif
> -
>  #include <x264.h>
>  #include <float.h>
>  #include <math.h>
> --
>

Ping for review. I'm pretty sure the change here to requiring x264 build
158 or newer might be an issue for some (although I could be wrong)


More information about the ffmpeg-devel mailing list