[FFmpeg-devel] MOV Muxer fix to respect the standard
Larbi Joubala
larbi.joubala
Fri May 22 15:23:13 CEST 2009
M?ns Rullg?rd a ?crit :
> "Fran?ois Revol" <revol at free.fr> writes:
>
>
>>> Hi guys,
>>>
>>> I recently found when I generated a mp4 file that this file
>>> doesn't
>>> totally respect the standard(ISO media file format 14496-12) in
>>> particulary for the box 'hdlr'. The handler description(named in the
>>> standard as 'name') must be a NULL-terminated string in UTF8 while in
>>> the generated file I saw that the string is not NULL-terminated and
>>> it
>>> is preceded by its size while it is not specifies by the standard.
>>> If you confirm that, I have joined within this mail a patch that
>>> you
>>> can apply.
>>>
>> From what I recall, in many places MOV does use PASCAL strings (length
>> + non \0), while MP4 changed this to be C strings (\0 terminated),
>> which is about the only significant difference (sometimes I wondered if
>> it's not just to crash MOV parsers).
>>
>> I don't have time, but you'll definitely want to check both QT and MP4
>> specs for this.
>>
>
> ISO 14496-12 says null-terminated string, and QT says "counted
> string", so they are incompatible. Of course, any size/termination is
> unnecessary since the string is the last element of the box and the
> box size is known. Fools writing specs again...
>
>
Fortunaletly, the box size is known otherwise any MP4/3GP/MOVdemuxer
will fail to parse a file. However, There is a problem if the MOV
backend of libavformat really want to be fully compliant with the
following standards ISO 14496-12 and MOV.
What I propose is to generate a correct 'hdlr' box depending on the file
format: name handler with PASCAL strings for MOV files and C strings for
3GP/MP4 files.
What do you think about this?
Larbi Joubala
More information about the ffmpeg-devel
mailing list