[Ffmpeg-devel] [PATCH] waveformatetensible support
Michael Niedermayer
michaelni
Thu Jan 25 22:25:11 CET 2007
Hi
On Thu, Jan 25, 2007 at 07:02:40PM +0100, Baptiste Coudurier wrote:
> Michael Niedermayer wrote:
> > Hi
> >
> > On Sun, Jan 14, 2007 at 10:44:34PM +0100, Baptiste Coudurier wrote:
> >> Michael Niedermayer wrote:
> >>> Hi
> >>>
> >>> On Sun, Jan 14, 2007 at 01:51:29PM +0100, Baptiste Coudurier wrote:
> >>>> Hi
> >>>>
> >>>> Michael Niedermayer wrote:
> >>>>> Hi
> >>>>>
> >>>>> On Sun, Jan 14, 2007 at 01:39:27AM +0100, Baptiste Coudurier wrote:
> >>>>>> Hi
> >>>>>>
> >>>>>> Here is a patch to support waveformatextensible header.
> >>>>>> Only four first byte of GUID are needed, and they seem to match twocc.
> >>>>> [...]
> >>>>>
> >>>>> cosmetics must be in seperate patches
> >>>>>
> >>>> Ok. Here it is.
> >>> [...]
> >>>
> >>>> - codec->codec_id = wav_codec_get_id(id, codec->bits_per_sample);
> >>>> -
> >>>> if (size > 16) { /* We're obviously dealing with WAVEFORMATEX */
> >>>> - codec->extradata_size = get_le16(pb);
> >>>> + int cbSize = get_le16(pb);
> >>>> + if (id == 0xfffe) {
> >>>> + codec->bits_per_sample = get_le16(pb);
> >>>> + get_le32(pb); /* dwChannelMask */
> >>>> + id = get_le32(pb); /* 4 first bytes of GUID */
> >>>> + cbSize = 10; /* skip remaining bytes */
> >>> why? why not read them in extradata?
> >>>
> >> What would you do with 12 last bytes of GUID in extradata ?
> >
> > nothing but maybe i want the 13th and later bytes
> >
>
> Like that ?
>
> --
> Baptiste COUDURIER GnuPG Key Id: 0x5C1ABAAA
> SMARTJOG S.A. http://www.smartjog.com
> Key fingerprint 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
> Phone: +33 1 49966312
> Index: libavformat/riff.c
> ===================================================================
> --- libavformat/riff.c (revision 7707)
> +++ libavformat/riff.c (working copy)
> @@ -422,22 +422,32 @@
> codec->bits_per_sample = 8;
> }else
> codec->bits_per_sample = get_le16(pb);
> - codec->codec_id = wav_codec_get_id(id, codec->bits_per_sample);
> -
> if (size > 16) { /* We're obviously dealing with WAVEFORMATEX */
> - codec->extradata_size = get_le16(pb);
> - if (codec->extradata_size > 0) {
> - if (codec->extradata_size > size - 18)
> - codec->extradata_size = size - 18;
> + int cbSize = get_le16(pb); /* cbSize */
> + size -= 18;
is the >16 / -18 intended? shouldnt that be >=18 ?
> + if (cbSize > size)
> + cbSize = size;
cbSize= FFMIN(cbSize, size);
> + if (cbSize >= 22 && id == 0xfffe) { /* WAVEFORMATEXTENSIBLE */
> + codec->bits_per_sample = get_le16(pb);
> + get_le32(pb); /* dwChannelMask */
> + id = get_le32(pb); /* 4 first bytes of GUID */
> + url_fskip(pb, 12); /* skip end of GUID */
> + cbSize -= 22;
> + size -= 22;
> + }
> + if (cbSize > 0) {
> + codec->extradata_size = cbSize;
> codec->extradata = av_mallocz(codec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE);
> get_buffer(pb, codec->extradata, codec->extradata_size);
> + size -= cbSize;
> } else
> codec->extradata_size = 0;
codec->extradata_size= cbSize; before the if() should work too
except these the patch looks ok
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Breaking DRM is a little like attempting to break through a door even
though the window is wide open and the only thing in the house is a bunch
of things you dont want and which you would get tomorrow for free anyway
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20070125/1bc67d71/attachment.pgp>
More information about the ffmpeg-devel
mailing list