[FFmpeg-devel] [PATCH] Parse bext metadata in wav (BWF)

Måns Rullgård mans
Thu Mar 3 13:06:07 CET 2011


Tomas H?rdin <tomas.hardin at codemill.se> writes:

> Michael Niedermayer skrev 2011-03-03 00:44:
>> On Wed, Mar 02, 2011 at 05:52:22PM +0100, Benjamin Larsson wrote:
>>> On 03/02/2011 04:14 PM, Tomas H?rdin wrote:
>>>> Hi
>>>>
>>>> The following patch set makes the wav demuxer parse the bext tag used in
>>>> the Broadcast Wave Format (BWF). Doing so requires reworking the wav
>>>> demuxer a bit, since it stops parsing the file once the data tag has
>>>> been found. I have a sample where said tag is in the footer.
>>>>
>>>> In short, it'll parse the entire file if the file is seekable. If it's
>>>> non-seekable then only the header is parsed. Any tags encountered are
>>>> handled by the same switch statement, so tags before the fmt tag won't
>>>> get ignored.
>>>>
>>>> I have no idea how to git-send-mail work on Windows, so mailing all
>>>> patches might take a minute or two.
>>>>
>>>> /Tomas
>>>
>>
>>> @@ -258,7 +265,21 @@ static int wav_read_header(AVFormatContext *s,
>>>                   return AVERROR_INVALIDDATA;
>>>               }
>>>
>>> +    if (!rf64)
>>> +        data_size = size;
>>> +    if (!data_size) {
>>> +        wav->data_end = INT64_MAX;
>>> +    } else
>>> +        wav->data_end= url_ftell(pb) + data_size;
>>> +
>>> +            /* we can't look for metadata past the data tag if streaming, so stop parsing */
>>> +            if (pb->is_streamed)
>>>               goto break_loop;
>>> +
>>> +            /* keep going in order to parse footer metadata chunks */
>>> +            data_ofs = url_ftell(pb);
>>> +            next_tag_ofs = wav->data_end;
>>> +            break;
>>>           case MKTAG('f','a','c','t'):
>>>               if(!sample_count)
>>>               sample_count = avio_rl32(pb);
>> [...]
>>> Looks ok.
>>
>> no comment
>
> Please elaborate. This is equivalent to the old code AFAICT. I just
> rearranged and dropped the useless size < 0 check (it never is).
>
> Should I refactor it some more?

The indentation is a bit wonky.

-- 
M?ns Rullg?rd
mans at mansr.com



More information about the ffmpeg-devel mailing list