Michael Niedermayer wrote: > 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 > Done and applied. -- Baptiste COUDURIER GnuPG Key Id: 0x5C1ABAAA SMARTJOG S.A. http://www.smartjog.com Key fingerprint 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA Phone: +33 1 49966312
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4