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 |
Stream ID |
|
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 |
temperal 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 | Aspect Ratio | Frame Rate |
0 |
forbidden |
forbidden |
1 |
1:1 |
24000/1001 (23.976) |
2 |
4:3 |
24 |
3 |
16:9 |
25 |
4 |
2.21:1(not used in DVD) |
30000/1001 (29.97) |
5 |
reserved |
30 |
6 |
reserved |
50 |
7 |
reserved |
60000/1001 (59.94) |
8 |
reserved |
60 |
9 |
reserved |
reserved |
: |
15 |
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.
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 |
0010 |
video format |
color description flag =0 |
(not present) |
=1 |
color primaries |
transfer characteristics |
matrix coefficients |
byte 5 byte 8 | byte 6 byte 9 | byte 7 byte 10 | byte 8 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 |
display horizontal size |
1 |
display vertical size |
0 0 0 |
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 |
留言列表