LPCM Audio Sub-Stream ID Range in VOB Containers
This article provides a direct overview of the sub-stream ID range allocated for Linear Pulse Code Modulation (LPCM) audio tracks within DVD VOB containers. It explains how the underlying MPEG-2 Program Stream architecture multiplexes audio data and details the exact hexadecimal identifiers demuxers use to locate and extract uncompressed audio tracks.
The LPCM Sub-Stream ID Range
Inside a VOB (Video Object) container, the sub-stream ID range
reserved for Linear PCM (LPCM) audio tracks is 0xA0
to 0xA7 in hexadecimal (160 to 167 in
decimal).
This allocation allows a single title in a VOB container to carry up to eight distinct LPCM audio tracks, mapped sequentially:
- Audio Stream 0:
0xA0 - Audio Stream 1:
0xA1 - Audio Stream 2:
0xA2 - Audio Stream 3:
0xA3 - Audio Stream 4:
0xA4 - Audio Stream 5:
0xA5 - Audio Stream 6:
0xA6 - Audio Stream 7:
0xA7
How VOB Containers Handle Audio Streams
The VOB format is based on the MPEG-2 Program Stream standard. Under
this standard, non-MPEG native audio formats—such as LPCM, AC-3 (Dolby
Digital), and DTS—cannot use standard MPEG audio stream IDs
(0xC0–0xDF).
Instead, the DVD specification routes these audio formats through
Private Stream 1, which uses the standard stream ID
0xBD. To differentiate between the various
formats and individual tracks multiplexed within Private Stream 1, DVD
authors use a 1-byte sub-stream ID header placed at the beginning of
each packet payload.
Context Within Other Sub-Stream Allocations
To avoid conflicts during playback and demuxing, different audio
codecs and elements receive isolated sub-stream ID blocks within Private
Stream 1 (0xBD):
0x20–0x3F: Sub-picture / Subtitle streams (up to 32 streams)0x80–0x87: AC-3 (Dolby Digital) audio streams (up to 8 streams)0x88–0x8F: DTS audio streams (up to 8 streams)0xA0–0xA7: LPCM audio streams (up to 8 streams)
When a media player or demuxer encounters a packet with stream ID
0xBD, it inspects the first byte of the private data. If
the value falls between 0xA0 and 0xA7, the
demuxer immediately routes the payload to the uncompressed PCM audio
decoder.