DVD VOB 14-Byte Pack Header Structure
This article provides a technical reference for the exact 14-byte pack header structure used in DVD Video Object (VOB) files. Because DVD-Video relies on the MPEG-2 Program Stream (ISO/IEC 13818-1) standard, every 2048-byte sector in a VOB file begins with this fixed 14-byte pack header containing synchronization, timing, and multiplexing data.
Byte-by-Byte Layout Overview
| Byte Offset | Field Description | Size | Expected Values / Mask |
|---|---|---|---|
| 0 – 3 | Pack Start Code | 32 bits | 0x000001BA |
| 4 – 9 | System Clock Reference (SCR) & Marker Bits | 48 bits | MPEG-2 SCR format (01b
prefix) |
| 10 – 12 | Program Multiplex Rate & Marker Bits | 24 bits | DVD max rate 10.08 Mbps
(0x0189C1) |
| 13 | Reserved Bits & Pack Stuffing Length | 8 bits | 0xF8 (0 stuffing bytes) |
Detailed Bit-Level Breakdown
Bytes 0–3: Pack Start Code
- Length: 32 bits
- Value:
0x00,0x00,0x01,0xBA - Identifies the beginning of an MPEG-2 Program Stream pack.
Bytes 4–9: System Clock Reference (SCR)
The SCR is a 42-bit value consisting of a 33-bit base clock (at 90 kHz) and a 9-bit extension (at 27 MHz), interleaved with marker bits to prevent start-code emulation.
- Byte 4:
- Bits 7–6: Identifier
01(denotes MPEG-2, unlike MPEG-1 which uses0010) - Bits 5–3:
SCR_base[32..30] - Bit 2: Marker bit (always
1) - Bits 1–0:
SCR_base[29..28]
- Bits 7–6: Identifier
- Byte 5:
- Bits 7–0:
SCR_base[27..20]
- Bits 7–0:
- Byte 6:
- Bits 7–3:
SCR_base[19..15] - Bit 2: Marker bit (always
1) - Bits 1–0:
SCR_base[14..13]
- Bits 7–3:
- Byte 7:
- Bits 7–0:
SCR_base[12..5]
- Bits 7–0:
- Byte 8:
- Bits 7–3:
SCR_base[4..0] - Bit 2: Marker bit (always
1) - Bits 1–0:
SCR_extension[8..7]
- Bits 7–3:
- Byte 9:
- Bits 7–1:
SCR_extension[6..0] - Bit 0: Marker bit (always
1)
- Bits 7–1:
Bytes 10–12: Program Multiplex Rate
Specifies the maximum rate at which the Program Stream is transmitted, measured in units of 50 bytes per second.
- Byte 10:
- Bits 7–0:
program_mux_rate[21..14]
- Bits 7–0:
- Byte 11:
- Bits 7–0:
program_mux_rate[13..6]
- Bits 7–0:
- Byte 12:
- Bits 7–2:
program_mux_rate[5..0] - Bits 1–0: Marker bits (always
11)
- Bits 7–2:
Note: For DVD-Video, this value is fixed at 10.08 Mbps (25,200
units of 50 bytes/s), yielding the 22-bit integer 100800
(0x0189C0). When combined with the two trailing
11 marker bits, Byte 10 to Byte 12 standardly reads as
0x01 0x89 0xC1.
Byte 13: Pack Stuffing Length
- Bits 7–3: Reserved bits (always
11111) - Bits 2–0:
pack_stuffing_length(3 bits)- Indicates the number of optional stuffing bytes immediately following this byte.
- In standard DVD VOB sectors, stuffing is handled inside the PES
packets instead of the pack header, setting this value to
000. - As a result, Byte 13 evaluates to
0xF8(11111000in binary), terminating the pack header at exactly 14 bytes.