On 06/08/2011 03:49 AM, Alex Converse wrote:

> On Tue, Jun 7, 2011 at 6:56 PM, Justin Ruggles <[email protected]> 
> wrote:
>> On 06/07/2011 06:04 PM, Alex Converse wrote:
>>
>>> The 'wfex' is just a Microsoft WaveFormatEx struct.
>>> ---
>>>  libavformat/mov.c |   14 ++++++++++++++
>>>  1 files changed, 14 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/libavformat/mov.c b/libavformat/mov.c
>>> index 3aec86c..0630b6e 100644
>>> --- a/libavformat/mov.c
>>> +++ b/libavformat/mov.c
>>> @@ -507,6 +507,19 @@ static int mov_read_dac3(MOVContext *c, AVIOContext 
>>> *pb, MOVAtom atom)
>>>      return 0;
>>>  }
>>>
>>> +static int mov_read_wfex(MOVContext *c, AVIOContext *pb, MOVAtom atom)
>>> +{
>>> +    AVStream *st;
>>> +
>>> +    if (c->fc->nb_streams < 1)
>>> +        return 0;
>>> +    st = c->fc->streams[c->fc->nb_streams-1];
>>> +
>>> +    ff_get_wav_header(pb, st->codec, atom.size);
>>> +
>>> +    return 0;
>>> +}
>>> +
>>>  static int mov_read_pasp(MOVContext *c, AVIOContext *pb, MOVAtom atom)
>>>  {
>>>      const int num = avio_rb32(pb);
>>> @@ -2249,6 +2262,7 @@ static const MOVParseTableEntry 
>>> mov_default_parse_table[] = {
>>>  { MKTAG('e','s','d','s'), mov_read_esds },
>>>  { MKTAG('d','a','c','3'), mov_read_dac3 }, /* AC-3 info */
>>>  { MKTAG('w','i','d','e'), mov_read_wide }, /* place holder */
>>> +{ MKTAG('w','f','e','x'), mov_read_wfex },
>>>  { MKTAG('c','m','o','v'), mov_read_cmov },
>>>  { 0, NULL }
>>>  };
>>
>>
>> Interesting...
>>
>> What happens if extradata is already set? ff_get_wav_header() doesn't
>> seem to handle that cleanly.
>>
> 
> Good catch. Should that be handled by mov_read_wfex() or ff_get_wav_header()?


It wouldn't be a bad idea for ff_get_wav_header() to check for existing
extradata and free it before setting the new extradata.  Also I guess we
need to decide which extradata take precedence.

-Justin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to