[FFmpeg-devel] [PATCH] h264 bitstream filter

Måns Rullgård mans
Mon Sep 3 15:00:06 CEST 2007

Benoit Fouet wrote:
> mark cox wrote:
>>> if someone has a better name for this filter, i'd be happy to apply it
>>> too :)
>> How would you explain what it does in english?
> it converts h264 encapsulated in ISO base media file format to h264
> elementary stream.

That's true but not entirely accurate.  The filter takes individual NAL
units and encapsulates them in an Annex B format bitstream.

> it seems a bit long as a name :)

Yes, it does.

> i don't know if avc is used only for h264 in 'mp4' container or not...
> if it is so, maybe a name like: avc_to_h264 could be used ?
> i must admit i don't really know what to use...

AVC and H.264 are synonymous.  The standard is known by the full names
"ISO/IEC 14496-10" and "ITU-T Recommendation H.264".  In addition, a
number of alternate names are used (or have been) in reference to this
standard.  These include:

- MPEG-4 part 10
- MPEG-4 (in the broadcasting world MPEG4 part 2 is ignored)
- H.264
- JVT (Joint Video Team, nowadays rarely used referring to actual spec)
- H.26L (early drafts went by this name)

All of the above (and those I've missed) include the Annex B stream format.
Unlike earlier MPEG1/2/4 and H.26x codecs, the H.264 specification proper
does not define a full bitstream syntax.  It describes a number of NAL
(Network Abstraction Layer (yes, really)) units, a sequence of which can
be decoded into video frames.  These NAL units have no boundary markers,
and rely on some unspecified format to provide framing.

Annex B of of the document specifies one such format, which wraps NAL
units in a format resembling a traditional MPEG video elementary stream,
thus making it suitable for use with containers like MPEG PS/TS unable
to provide the required framing.  Other formats, such as ISO base media
based formats, are able to properly separate the NAL units and do not need
the Annex B wrapping.

Unfortunately, the H.264 spec suffers from a deficiency shared with some
other specifications that for now shall remain unnamed: it defines several
header-type NAL units (SPS and PPS) without specifying how to pack them
into the single codec data field available in most containers.  Fortunately,
most containers seem to have adopted the packing used by the ISO format
known as MP4.

M?ns Rullg?rd
mans at mansr.com

More information about the ffmpeg-devel mailing list