Elementary stream
An elementary stream (ES) as defined by the MPEG communication protocol is usually the output of an audio or video encoder. ES contains only one kind of data, e.g. audio, video or closed caption. An elementary stream is often referred to as "elementary", "data", "audio", or "video" bitstreams or streams. The format of the elementary stream depends upon the codec or data carried in the stream, but will often carry a common header when packetized into a packetized elementary stream.
Header for MPEG-2 video elementary stream
Field Name | # of bits | Description |
---|---|---|
start code | 32 | 0x000001B3 |
Horizontal Size | 12 | |
Vertical Size | 12 | |
Aspect ratio | 4 | |
Frame rate code | 4 | |
Bit rate | 18 | Actual bit rate = bit rate * 400, rounded upwards. Use 0x3FFFF for variable bit rate. |
Marker bit | 1 | Always 1. |
VBV buf size | 10 | Size of video buffer verifier = 16*1024*vbv buf size |
constrained parameters flag | 1 | |
load intra quantizer matrix | 1 | If bit set then intra quantizer matrix follows, otherwise use default values. |
intra quantizer matrix | 0 or 64*8 | |
load non intra quantizer matrix | 1 | If bit set then non intra quantizer matrix follows. |
non intra quantizer matrix | 0 or 64*8 |
General layout of MPEG-1 audio elementary stream
The digitized sound signal is divided up into blocks of 384 samples in Layer I and 1152 samples in Layers II and III. The sound sample block is encoded within an audio frame:
- header
- error check
- audio data
- ancillary data
The header of a frame contains general information such as the MPEG Layer, the sampling frequency, the number of channels, whether the frame is CRC protected, whether the sound is the original:
Field Name | # of bits | Description |
---|---|---|
sync word | 12 | 0xFFF |
ID | 1 | '1'=mpeg1 '0'=mpeg2 |
layer | 2 | '11'=1 '10'=2 '01'=3 |
no protection | 1 | '0'=Protected by CRC (16bit CRC follows header) '1'=Not Protected |
bit rate index | 4 | |
sampling frequency | 2 | kHz '00'=44.1 '01'=48 '10'=32 |
padding | 1 | |
private | 1 | |
mode | 2 | '00'=Stereo '01'=joint stereo '10'=dual channel '11'=single channel |
mode extension | 2 | |
copyright | 1 | 0=none 1=yes |
original or copy | 1 | 0=copy 1=original |
emphasis | 2 |
Although most of this information may be the same for all frames, MPEG decided to give each audio frame such a header in order to simplify synchronization and bitstream editing.