[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