## MPEG Headers Quick Reference

This is a quick reference to the various headers and streams found in MPEG/DVD. For a complete description you should get a copy of ISO/IEC 13818.
This is an incomplete work-in-progress

### The header

Every stream or table begins with a 32-bit start code, codes 00 through B8 are video stream start codes (fully defined in 13818-2), and codes B9-FF are stream-id's

byte 0 | byte 1 | byte 2 | byte 3
--- | --- | --- | ---
0000 0000 0000 0000 0000 0001 Start code prefix | Start Code -or- Stream ID

Start Code | used for
--- | ---
0x00 | Picture
0x01 - 0xAF | slice
0xB0 | reserved
0xB1 | reserved
0xB2 | user data
0xB3 | Sequence header
0xB4 | sequence error
0xB5 | extension
0xB6 | reserved
0xB7 | sequence end
0xB8 | Group of Pictures
Stream ID | used for
--- | ---
0xB9 | Program end (terminates a program stream)
0xBA | Pack header
0xBB | System Header
0xBC | Program Stream Map
0xBD | Private stream 1
0xBE | Padding stream
0xBF | Private stream 2
0xC0 - 0xDF | MPEG-1 or MPEG-2 audio stream
0xE0 - 0xEF | MPEG-1 or MPEG-2 video stream
0xF0 | ECM Stream
0xF1 | EMM Stream
0xF2 | ITU-T Rec. H.222.0 | ISO/IEC 13818-1 Annex A or ISO/IEC 13818-6_DSMCC_stream
0xF3 | ISO/IEC_13522_stream
0xF4 | ITU-T Rec. H.222.1 type A
0xF5 | ITU-T Rec. H.222.1 type B
0xF6 | ITU-T Rec. H.222.1 type C
0xF7 | ITU-T Rec. H.222.1 type D
0xF8 | ITU-T Rec. H.222.1 type E
0xF9 | ancillary_stream
0xFA - 0xFE | reserved
0xFF | Program Stream Directory

### Picture header (0100)

Variable length.

byte 4 | byte 5 | byte 6 | byte 7
--- | --- | --- | ---
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
temporal sequence number | frame type 1=I, 2=P 3=B, 4=D | VBV delay | ---

additional fields appended beginning at byte 7 bit 2:
If frame type = 2 (P) or 3 (B) the following 4 bits are appended to the header:

3 | 2 | 1 | 0
--- | --- | --- | ---
full_pel_forward_vector | forward_f_code

This field is used by MPEG-1 only, for MPEG-2 it should be set to 0 1 1 1

If frame type = 3 (B) the following 4 bits are appended to the header:

3 | 2 | 1 | 0
--- | --- | --- | ---
full_pel_backward_vector | backward_f_code

This field is used by MPEG-1 only, for MPEG-2 it should be set to 0 1 1 1

additionally if the next bit is "1" (extra_bit_picture) it is followed by 8 bits of "extra" data (discarded by decoders). This continues until a "0" bit is encountered.

### Sequence header (01B3)

Variable length.

byte 4 | byte 5 | byte 6 | byte 7
--- | --- | --- | ---
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
horizontal size | vertical size | aspect ratio | frame rate

byte 8 | byte 9 | byte 10 | byte 11
--- | --- | --- | ---
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
bit rate | 1 | VBV buffer size | constrained parameters flag | load intra quantiser matrix | (load non-intra quantiser matrix)

If either load quantiser matrix flag is =1, it is immediately followed by the 64 byte table (moving the "load non-intra quantiser matrix" flag, in the case of "load intra quantiser matrix")

Code | MPEG-1 Aspect Ratio (PAR) height / width | MPEG-2 Aspect Ratio (DAR) | Frame Rate
--- | --- | --- | ---
0 | forbidden | forbidden | forbidden
1 | 1.0000 | SAR 1:1 (Square Samples) | 24000/1001 (23.976)
2 | 0.6735 | 4:3 | 24
3 | 0.7031 PAL 16:9 | 16:9 | 25
4 | 0.7615 | 2.21:1 | 30000/1001 (29.97)
5 | 0.8055 | reserved | 30
6 | 0.8437 NTSC 16:9 | reserved | 50
7 | 0.8935 | reserved | 60000/1001 (59.94)
8 | 0.9375 PAL 4:3 | reserved | 60
9 | 0.9815 | reserved | reserved
10 | 1.0255 | reserved | reserved
11 | 1.0695 | reserved | reserved
12 | 1.1250 NTSC 4:3 | reserved | reserved
13 | 1.1575 | reserved | reserved
14 | 1.2015 | reserved | reserved
15 | reserved | reserved | reserved

### extension header (01B5)

There are a variety of extensions, denoted by the first 4 bits.

#### Sequence_Extension

Fixed length.

byte 4 | byte 5 | byte 6 | byte 7 | byte 8 | byte 9
--- | --- | --- | --- | --- | ---
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
0001 | profile and level | progressive_sequence | chroma_format | horizontal size extension | vertical size extension | bit rate extension | 1 | vbv buffer size extension | low delay | frame rate extension n | frame rate extension d

#### Sequence_Display_Extension

Variable length.
With no color description information, the last 3 bits of byte 8 are not part of this table.

byte 4 | byte 5 | byte 6 | byte 7 | byte 8
--- | --- | --- | --- | ---
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
0010 | video format | color description flag =0 | display horizontal size | 1 | display vertical size |

With color description information, the last 3 bits of byte 11 are not part of this table.

byte 4 | byte 5 | byte 6 | byte 7 | byte 8 | byte 9 | byte 10 | byte 11
--- | --- | --- | --- | --- | --- | --- | ---
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
0010 | video format | color description flag =1 | color primaries | transfer characteristics | matrix coefficients | display horizontal size | 1 | display vertical size |

#### Picture_Display_Extension

Variable length, depending on number of offsets encoded (see section 6.3.12 of ISO/IEC 13818-2).
For a single offset (the last 2 bits of byte 8 are not part of this table).

byte 4 | byte 5 | byte 6 | byte 7 | byte 8
--- | --- | --- | --- | ---
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
0111 | frame_center_horizontal_offset[1] | 1 | frame_center_vertical_offset[1] | 1 |

For two offsets.

byte 4 | byte 5 | byte 6 | byte 7 | byte 8 | byte 9 | byte 10 | byte 11 | byte 12
--- | --- | --- | --- | --- | --- | --- | --- | ---
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
0111 | frame_center_horizontal_offset[1] | 1 | frame_center_vertical_offset[1] | 1 | frame_center_horizontal_offset[2] | 1 | frame_center_vertical_offset[2] | 1

For three offsets (the maximum, the last 6 bits of byte 17 are not part of this table).

byte 4 | byte 5 | byte 6 | byte 7 | byte 8 | byte 9 | byte 10 | byte 11 | byte 12 | byte 13 | byte 14 | byte 15 | byte 16 | byte 17
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
0111 | frame_center_horizontal_offset[1] | 1 | frame_center_vertical_offset[1] | 1 | frame_center_horizontal_offset[2] | 1 | frame_center_vertical_offset[2] | 1 | frame_center_horizontal_offset[3] | 1 | frame_center_vertical_offset[3] | 1 |

#### Picture_Coding_Extension

Variable length.

byte 4 | byte 5 | byte 6
--- | --- | ---
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
1000 | f_code[0][0] (forward horizontal) | f_code[0][1] (forward vertical) | f_code[1][0] (backward horizontal) | f_code[1][1] (backward vertical) | intra_DC_precision | picture_structure

byte 7
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
--- | --- | --- | --- | --- | --- | --- | ---
Top_Field_First | frame_pred_frame_dct | concealment_motion_vectors | q_scale_type | intra_vlc_format | alternate_scan | Repeat_First_Field | chroma_420_type

byte 8 | byte 9 | byte 10
--- | --- | ---
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
progressive_frame | composite_display =0 | 0 0 0 0 0 0 | (not present)
=1 | v_axis | field_sequence | sub_carrier | burst_amplitude | sub_carrier_phase | 0 0

### Group Of Pictures (GOP) (01B8)

Fixed length, contains 3 flags and the time stamp for the first frame.

byte 4 | byte 5 | byte 6 | byte 7
--- | --- | --- | ---
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
drop frame flag | hour (0-23) | minute (0-59) | 1 | second (0-59) | frame (0-59) | closed GOP | broken GOP | 0 0 0 0 0

DVD-Video info home | Copyright © 2001 - 2020 STN Software, all rights reserved.