[Ffmpeg-devel] Re: Re: [PATCH] x264 avc encoding, movenc avcC, ctts

bond b-o-n-d
Mon Feb 20 12:55:33 CET 2006

> I got here a sample produced by FCP which does not contain 'iods' atom.
> I consider FCP being the reference, so 'iods' is not needed when 'mp42'
> ftyp is used.
> Are all of "isom"/"mp42"/"mp41" completely valid mp4 types? If for
> instance one of them is obsolete, I'd vote for adhering to the current
> standard (be it "isom" or "mp4.")

mp41 is for the old first version of the MP4 specs so not useable anymore
(14496-1), mp42 is for 14996-14 as its now (eg asp/aac streams in mp4), avc1
brand is for 14496-15 files (avc in mp4), isom brand is for everything
that said i would use "mp42" for aac/aac files and "avc1" for avc files

iods is definitely not needed for avc mp4 files and regarding part2 files
needed for isma compliance (which noone cares about/needs). if its easy to
write an iods atom than why not simply write it always (or never?). i dont
know any player that needs the iods atom btw (and i tested nearly all mp4
players/parsers available on windows)

about the bifs/od, its a hard task to implement correct (!) ones of those.
also as no player cares about those and as they are not mandatory, i would
also simply not waste my time on making these work
if you still want to check how a correct bifs/od should look like, check the
ones mp4box writes

after all there are more serious issues as i listed here:

> Exactly, mostly Apple stuff, FCP, Quicktime player. I based my efforts
> on samples produced by FCP.

i have no idea what FCD is, but i know that qt is not 100% trustable.
i do know that mp4box from the gpac project and mp4creator from the mpeg4ip
project are definitely writing correct files, in a sense that i tested them
really extensively with any asp/aac/avc stream imagineable and i dont know
any open issues
therefore i would really recommend comparing the outcome of mp4box with what
these ffmpeg patchs produce (eg regarding the ctts values)

> > yes, every codec which supports b frames needs CTTS
> > also the CODEC_TYPE_VIDEO check is redundant CODEC_ID_H264 is always
> All right, then I will check for B frames instead.
> just add it for mpeg4 and h264

ctts is only mandatory when b-frames are used. if not using b-frames and
still writing a ctts it would be a waste of space

> > BTW, what is AVC? I was under the impression that AVC (Advanced Video
> > Coding) = MPEG4 Part 10 = H.264... So, I cannot understand the "encode
> > nals correctly for AVC" part
> > [...]
> AVC is special variant of H264 found in mp4/mov containers.

avc is definitely NOT a variant of h.264! mpeg-4 avc is just another name
for the 100% identical h.264 standard. that is because both independant
standard bodies, the ITU and ISO, specified exactly the same format.
from the ITU side its called H.264, from the ISO side its called MPEG-4 AVC,
still they both are 100% identical

More information about the ffmpeg-devel mailing list