[FFmpeg-devel] MOV Muxer fix to respect the standard
Fri May 22 15:28:44 CEST 2009
On Fri, May 22, 2009 at 1:23 PM, Larbi Joubala
<larbi.joubala at resonate-mp4.com> wrote:
> 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?
I would tend to agree because as a side effect, als streams muxed into
mp4 will work with the reference codec.
> Larbi Joubala
More information about the ffmpeg-devel