On 11/06/15 21:16, James Almer wrote:
> On 11/06/15 11:56 AM, Luca Barbato wrote:
>> ---
>>
>> I tied the supported formats to the ABI version.
>>
>>  configure              | 12 ++++++------
>>  libavcodec/libvpx.c    |  8 ++++++--
>>  libavcodec/libvpxenc.c |  6 +++++-
>>  3 files changed, 17 insertions(+), 9 deletions(-)
>>
>> diff --git a/configure b/configure
>> index a416dc2..8cb53d2 100755
>> --- a/configure
>> +++ b/configure
>> @@ -4312,19 +4312,19 @@ enabled libvo_amrwbenc    && require libvo_amrwbenc 
>> vo-amrwbenc/enc_if.h E_IF_in
>>  enabled libvorbis         && require libvorbis vorbis/vorbisenc.h 
>> vorbis_info_init -lvorbisenc -lvorbis -logg
>>  enabled libvpx            && {
>>      enabled libvpx_vp8_decoder && {
>> -        require "vpx >= 1.4.0" vpx/vpx_decoder.h vpx_codec_dec_init_ver 
>> -lvpx ||
>> -            die "ERROR: libvpx encoder version must be >=1.4.0";
>> +        require_pkg_config "vpx >= 1.3.0" vpx/vpx_decoder.h 
>> vpx_codec_dec_init_ver ||
>> +            die "ERROR: libvpx encoder version must be >= 1.3.0";
>>      }
>>      enabled libvpx_vp8_encoder && {
>> -        require "vpx >= 1.4.0" vpx/vpx_encoder.h vpx_codec_enc_init_ver 
>> -lvpx ||
>> -            die "ERROR: libvpx encoder version must be >=1.4.0";
>> +        require_pkg_config "vpx >= 1.3.0" vpx/vpx_encoder.h 
>> vpx_codec_enc_init_ver ||
>> +            die "ERROR: libvpx encoder version must be >= 1.3.0";
>>      }
>>      enabled libvpx_vp9_decoder && {
>> -        require "vpx >= 1.4.0" vpx/vpx_decoder.h vpx_codec_dec_init_ver 
>> -lvpx ||
>> +        require_pkg_config "vpx >= 1.3.0" vpx/vpx_decoder.h 
>> vpx_codec_dec_init_ver ||
>>              disable libvpx_vp9_decoder;
>>      }
>>      enabled libvpx_vp9_encoder && {
>> -        require "vpx >= 1.4.0" vpx/vpx_encoder.h vpx_codec_enc_init_ver 
>> -lvpx ||
>> +        require_pkg_config "vpx >= 1.3.0" vpx/vpx_encoder.h 
>> vpx_codec_enc_init_ver ||
>>              disable libvpx_vp9_encoder;
> 
> Using require_pkg_config() makes configure abort if the check fails, so the 
> disable() calls are dead code.
> That's why use_pkg_config() and check_pkg_config exist.
> Also, checking for the decoding/encoding header and the init function is 
> apparently not enough. You need
> to check for the decoding/encoding interfaces vpx_codec_vp[89]_[cd]x because 
> libvpx can be built without
> one or more of the four components.
> 
> enabled libvpx            && require_pkg_config "vpx >= 1.3.0" 
> vpx/vpx_codec.h vpx_codec_version && {
>     enabled libvpx_vp8_decoder && { check_pkg_config vpx "vpx/vpx_decoder.h 
> vpx/vp8dx.h" vpx_codec_vp8_dx ||
>                                     disable libvpx_vp8_decoder; }
>     enabled libvpx_vp8_encoder && { check_pkg_config vpx "vpx/vpx_encoder.h 
> vpx/vp8cx.h" vpx_codec_vp8_cx ||
>                                     disable libvpx_vp8_encoder; }
>     enabled libvpx_vp9_decoder && { check_pkg_config vpx "vpx/vpx_decoder.h 
> vpx/vp8dx.h" vpx_codec_vp9_dx ||
>                                     disable libvpx_vp9_decoder; }
>     enabled libvpx_vp9_encoder && { check_pkg_config vpx "vpx/vpx_encoder.h 
> vpx/vp8cx.h" vpx_codec_vp9_cx ||
>                                     disable libvpx_vp9_encoder; } }
> 
> Updated from the version i posted in a previous email (Which was wrong as it 
> only checked for the header
> and init function).
> This will first check for a recent libvpx, then for each component.
> 
>>      }
>>  }
>> diff --git a/libavcodec/libvpx.c b/libavcodec/libvpx.c
>> index 603ed13..230bc49 100644
>> --- a/libavcodec/libvpx.c
>> +++ b/libavcodec/libvpx.c
>> @@ -39,11 +39,13 @@ enum AVPixelFormat ff_vpx_imgfmt_to_pixfmt(vpx_img_fmt_t 
>> img)
>>      case VPX_IMG_FMT_I420:      return AV_PIX_FMT_YUV420P;
>>      case VPX_IMG_FMT_I422:      return AV_PIX_FMT_YUV422P;
>>      case VPX_IMG_FMT_I444:      return AV_PIX_FMT_YUV444P;
>> -    case VPX_IMG_FMT_I440:      return AV_PIX_FMT_YUV440P;
>>      case VPX_IMG_FMT_444A:      return AV_PIX_FMT_YUVA444P;
>> +#ifdef VPX_IMG_FMT_HIGHBITDEPTH
>> +    case VPX_IMG_FMT_I440:      return AV_PIX_FMT_YUV440P;
> 
> The correct guard for VPX_IMG_FMT_I440 is VPX_IMAGE_ABI_VERSION >=3.
> libvpx git snapshots post 1.3.0 and pre 1.4.0 may fail because they may 
> define VPX_IMG_FMT_HIGHBITDEPTH
> but not VPX_IMG_FMT_I440.

I'll use it everywhere then, thanks a lot!

lu


_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to