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

Michael Niedermayer michaelni at gmx.at
Sat Sep 15 04:48:35 CEST 2012


On Thu, Sep 13, 2012 at 03:40:15PM +0200, Sebastien Zwickert wrote:
> Hello,
> 
> On Sep 10, 2012, at 2:49 AM, Michael Niedermayer <michaelni at gmx.at> wrote:
> 
> > Hi Sebastien
> > 
> > On Sun, Sep 09, 2012 at 11:28:19AM +0200, Sebastien Zwickert wrote:
> > [...]
> > 
> >> diff --git a/configure b/configure
> >> index 7fac4e9..ff49eec 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-vt              enable VideoToolbox code [autodetect]
> >>   --enable-vdpau           enable VDPAU code [autodetect]
> >> 
> >> Individual component options:
> >> @@ -1171,6 +1172,7 @@ CONFIG_LIST="
> >>     thumb
> >>     vaapi
> >>     vda
> >> +    vt
> >>     vdpau
> >>     version3
> >>     xmm_clobber_test
> > 
> > nit++ alphabetical order (also at various other places)
> 
> Fixed.

there are some more left, not that its important ...


[...]
> >> +static CFDataRef vt_esds_extradata_create(uint8_t *extradata, int size)
> >> +{
> >> +    CFDataRef data;
> >> +    uint8_t *rw_extradata;
> >> +    PutBitContext pb;
> >> +    int full_size = 3 + (5 + (13 + (5 + size))) + 3;
> >> +    int config_size = 13 + 5 + size;
> >> +    int padding = 12;
> >> +    int s, i = 0;
> >> +
> >> +    if (!(rw_extradata = av_mallocz(sizeof(uint8_t)*(full_size+padding))))
> >> +        return NULL;
> >> +
> >> +    init_put_bits(&pb, rw_extradata, full_size+padding);
> >> +    put_bits(&pb, 8, 0);        ///< version
> >> +    put_bits(&pb, 24, 0);       ///< flags
> >> +
> >> +    // elementary stream descriptor
> >> +    put_bits(&pb, 8, 0x03);     ///< ES_DescrTag
> >> +    vt_write_mp4_descr_length(&pb, full_size, 0);
> >> +    put_bits(&pb, 16, 0);       ///< esid
> >> +    put_bits(&pb, 8, 0);        ///< stream priority (0-32)
> >> +
> >> +    // decoder configuration descriptor
> >> +    put_bits(&pb, 8, 0x04);     ///< DecoderConfigDescrTag
> >> +    vt_write_mp4_descr_length(&pb, config_size, 0);
> >> +    put_bits(&pb, 8, 32);       ///< object type indication. 32 = CODEC_ID_MPEG4
> >> +    put_bits(&pb, 8, 0x11);     ///< stream type
> >> +    put_bits(&pb, 24, 0);       ///< buffer size
> >> +    put_bits32(&pb, 0);         ///< max bitrate
> >> +    put_bits32(&pb, 0);         ///< avg bitrate
> >> +
> >> +    // decoder specific descriptor
> >> +    put_bits(&pb, 8, 0x05);     ///< DecSpecificInfoTag
> >> +    vt_write_mp4_descr_length(&pb, size, 0);
> >> +    for (i = 0; i < size; i++)
> >> +        put_bits(&pb, 8, extradata[i]);
> >> +
> >> +    // SLConfigDescriptor
> >> +    put_bits(&pb, 8, 0x06);     ///< SLConfigDescrTag
> >> +    put_bits(&pb, 8, 0x01);     ///< length
> >> +    put_bits(&pb, 8, 0x02);     ///<
> >> +
> >> +    flush_put_bits(&pb);
> >> +    s = put_bits_count(&pb) / 8;
> > 
> > all the written values are in multiples of 8 bit, the code should be
> > slightly simpler if it uses the bytestream API for this
> > 
> > also some of this smells like duplicate relative to the mp4 code
> > but i suspect factorizing this may be quite hard so this is more a
> > note than a suggestion to change it unless you see an easy way to
> > factorize it.
> 
> Thanks to you for the note. I did success in factorizing this. I only have to export publicly
> the esds writing function for that. Maybe be should I split this part in a dedicated patch ?

yes, a seperate patch would be best


[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Those who are too smart to engage in politics are punished by being
governed by those who are dumber. -- Plato 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20120915/09af385a/attachment.asc>


More information about the ffmpeg-devel mailing list