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
