DVD VOB Private Stream Header Sub-Stream ID Explained
In a DVD Video Object (VOB) file, the sub-stream ID located inside a
private stream header acts as a secondary demultiplexing identifier that
specifies the exact codec and track number of non-MPEG audio or subtitle
data. Because standard MPEG-2 Program Streams do not natively define
stream types for formats like AC-3, DTS, LPCM, or DVD subpictures, DVD
authoring bundles these tracks under Private Stream 1
(0xBD). This article explains how the sub-stream ID
operates within this architecture to ensure media players route and
decode the correct stream.
Overcoming MPEG-2 Limitations
Standard MPEG-2 Program Streams assign unique Packetized Elementary
Stream (PES) stream IDs for basic video and MPEG-1/2 audio (such as
0x1E0 for video and 0x1C0–0x1DF
for MPEG audio). However, the MPEG-2 specification lacked built-in
identifiers for newer or proprietary formats used on commercial DVDs,
including Dolby Digital (AC-3), DTS, Linear PCM, and DVD
subpictures.
To maintain compliance with the MPEG-2 standard while supporting
these formats, DVD specifications multiplex all such data into
Private Stream 1 (stream ID 0xBD). Because
multiple distinct tracks (such as multiple audio languages and subtitle
tracks) share this single MPEG stream ID, an additional layer of
identification is required.
The Function of the Sub-Stream ID
The sub-stream ID is an 8-bit byte located at the beginning of the PES packet payload in Private Stream 1. Its primary functions include:
- Format Identification: It informs the demultiplexer whether the enclosed packet contains AC-3, DTS, LPCM, or subpicture (bitmap subtitle/menu) data.
- Channel/Track Routing: It designates the specific track index (e.g., Audio Track 1 vs. Audio Track 2, or Subtitle Track 1 vs. Subtitle Track 3).
- Payload Demultiplexing: Media players use the sub-stream ID to extract and send only the user-selected audio track or subtitle stream to the appropriate decoder buffer while discarding the rest.
Common Sub-Stream ID Values
The DVD standard establishes specific hex ranges for the sub-stream ID:
0x20to0x3F(Subpictures): Designates DVD subpicture streams, allowing support for up to 32 distinct subtitle or menu overlay tracks.0x80to0x87(AC-3 Audio): Designates Dolby Digital (AC-3) audio streams, accommodating up to 8 separate audio tracks (e.g.,0x80is AC-3 Stream 0,0x81is AC-3 Stream 1).0x88to0x8F(DTS Audio): Designates Digital Theater Systems (DTS) audio tracks, supporting up to 8 streams.0xA0to0xA7(LPCM Audio): Designates uncompressed Linear PCM audio tracks, supporting up to 8 streams.
Header Structure Context
When a DVD demuxer encounters a PES packet with the ID
0xBD, it skips the standard PES header and immediately
reads the private stream header. Following the sub-stream ID, the header
often contains an offset pointer or frame metadata (such as the number
of frames or audio emphasis flags for LPCM). Once parsed, the player
strips this secondary header information and forwards the raw elementary
stream payload to the appropriate hardware or software decoder.