[FFmpeg-devel] [PATCH] hwaccel: add VideoToolbox support.

Sebastien Zwickert dilaroga at gmail.com
Sun Sep 16 17:47:34 CEST 2012


On Sep 15, 2012, at 5:02 AM, Michael Niedermayer <michaelni at gmx.at> wrote:

> On Thu, Sep 13, 2012 at 03:42:58PM +0200, Sebastien Zwickert wrote:
>> ---
>> Changelog                |    1 +
>> MAINTAINERS              |    1 +
>> configure                |   12 ++
>> libavcodec/Makefile      |    7 +
>> libavcodec/allcodecs.c   |    4 +
>> libavcodec/h264.c        |    1 +
>> libavcodec/mpeg12.c      |    3 +
>> libavcodec/mpegvideo.c   |    1 +
>> libavcodec/version.h     |    2 +-
>> libavcodec/vt.c          |  409 ++++++++++++++++++++++++++++++++++++++++++++++
>> libavcodec/vt.h          |  186 +++++++++++++++++++++
>> libavcodec/vt_h264.c     |   79 +++++++++
>> libavcodec/vt_internal.h |   42 +++++
>> libavcodec/vt_mpeg2.c    |   62 +++++++
>> libavcodec/vt_mpeg4.c    |   77 +++++++++
>> libavformat/movenc.c     |    7 +-
>> libavformat/movenc.h     |    1 +
>> libavutil/pixdesc.c      |    6 +
>> libavutil/pixfmt.h       |    1 +
>> 19 files changed, 900 insertions(+), 2 deletions(-)
>> create mode 100644 libavcodec/vt.c
>> create mode 100644 libavcodec/vt.h
>> create mode 100644 libavcodec/vt_h264.c
>> create mode 100644 libavcodec/vt_internal.h
>> create mode 100644 libavcodec/vt_mpeg2.c
>> create mode 100644 libavcodec/vt_mpeg4.c
>> 
>> diff --git a/Changelog b/Changelog
>> index a9ca4f0..200e074 100644
>> --- a/Changelog
>> +++ b/Changelog
>> @@ -60,6 +60,7 @@ version next:
>> - CPiA decoder
>> - decimate filter ported from MPlayer
>> - RTP depacketization of JPEG
>> +- OS X VideoToolbox (VT) support
>> 
>> 
>> version 0.11:
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index 1860b6e..6233b1c 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -257,6 +257,7 @@ Hardware acceleration:
>>   libstagefright.cpp                    Mohamed Naufal
>>   vaapi*                                Gwenole Beauchesne
>>   vda*                                  Sebastien Zwickert
>> +  vt*                                   Sebastien Zwickert
>>   vdpau*                                Carl Eugen Hoyos
>> 
>> 
>> diff --git a/configure b/configure
>> index 3d1fae7..1ba6de3 100755
>> --- a/configure
>> +++ b/configure
>> @@ -133,6 +133,7 @@ Component options:
>>   --enable-dxva2           enable DXVA2 code
>>   --enable-vaapi           enable VAAPI code [autodetect]
>>   --enable-vda             enable VDA code   [autodetect]
>> +  --enable-videotoolbox    enable VideoToolbox code [autodetect]
>>   --enable-vdpau           enable VDPAU code [autodetect]
>> 
>> Individual component options:
>> @@ -1174,6 +1175,7 @@ CONFIG_LIST="
>>     vda
>>     vdpau
>>     version3
>> +    videotoolbox
>>     xmm_clobber_test
>>     x11grab
>>     zlib
>> @@ -1605,6 +1607,7 @@ h261_encoder_select="aandcttables mpegvideoenc"
>> h263_decoder_select="error_resilience h263_parser mpegvideo"
>> h263_encoder_select="aandcttables error_resilience mpegvideoenc"
>> h263_vaapi_hwaccel_select="vaapi h263_decoder"
>> +h263_videotoolbox_hwaccel_select="videotoolbox h263_decoder"
>> h263i_decoder_select="h263_decoder"
>> h263p_encoder_select="h263_encoder"
>> h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
>> @@ -1615,6 +1618,7 @@ h264_vaapi_hwaccel_select="vaapi h264_decoder"
>> h264_vda_decoder_select="vda h264_parser h264_decoder"
>> h264_vda_hwaccel_deps="VideoDecodeAcceleration_VDADecoder_h pthreads"
>> h264_vda_hwaccel_select="vda h264_decoder"
>> +h264_videotoolbox_hwaccel_select="videotoolbox h264_decoder"
>> h264_vdpau_decoder_select="vdpau h264_decoder"
>> huffyuv_encoder_select="huffman"
>> iac_decoder_select="fft mdct sinewin"
>> @@ -1650,12 +1654,14 @@ mpeg2_dxva2_hwaccel_deps="dxva2api_h"
>> mpeg2_dxva2_hwaccel_select="dxva2 mpeg2video_decoder"
>> mpeg2_vdpau_hwaccel_select="vdpau mpeg2video_decoder"
>> mpeg2_vaapi_hwaccel_select="vaapi mpeg2video_decoder"
>> +mpeg2_videotoolbox_hwaccel_select="videotoolbox mpeg2video_decoder"
>> mpeg2video_decoder_select="error_resilience mpegvideo"
>> mpeg2video_encoder_select="aandcttables error_resilience mpegvideoenc"
>> mpeg4_crystalhd_decoder_select="crystalhd"
>> mpeg4_decoder_select="h263_decoder mpeg4video_parser"
>> mpeg4_encoder_select="h263_encoder"
>> mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder"
>> +mpeg4_videotoolbox_hwaccel_select="videotoolbox mpeg4_decoder"
>> mpeg4_vdpau_decoder_select="vdpau mpeg4_decoder"
>> msmpeg4_crystalhd_decoder_select="crystalhd"
>> msmpeg4v1_decoder_select="h263_decoder"
>> @@ -1738,6 +1744,7 @@ crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
>> vaapi_deps="va_va_h"
>> vda_deps="VideoDecodeAcceleration_VDADecoder_h pthreads"
>> vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
>> +videotoolbox_deps="VideoToolbox_VideoToolbox_h avformat"
>> 
>> # parsers
>> h264_parser_select="error_resilience golomb h264dsp h264pred mpegvideo"
>> @@ -3535,6 +3542,11 @@ if ! disabled vda; then
>>     fi
>> fi
>> 
>> +# check for VideoToolbox header
>> +if ! disabled videotoolbox && check_header VideoToolbox/VideoToolbox.h; then
>> +    enable videotoolbox && add_extralibs -framework CoreFoundation -framework VideoToolbox -framework CoreMedia -framework QuartzCore
>> +fi
>> +
>> if ! disabled w32threads && ! enabled pthreads; then
>>     check_func _beginthreadex && enable w32threads
>> fi
> 
> this doesnt work.
> 
> if i just ./configure && make i get
> In file included from libavcodec/vt_internal.h:26:0,
>                 from libavcodec/vt_mpeg2.c:23:
> libavcodec/vt.h:35:39: fatal error: VideoToolbox/VideoToolbox.h: No such file or directory
> compilation terminated.
> make: *** [libavcodec/vt_mpeg2.o] Error 1
> 
> think the cause is that you mix VT and VIDEOTOOLBOX between the
> used CONFIG_* and what is in configure

Right! Should be fixed in the latest patch.

Best regards

--
Sebastien Zwickert


More information about the ffmpeg-devel mailing list