Role of Private Stream Headers in VOB Files

In DVD-Video architecture, Video Object (VOB) files rely on the MPEG-2 Program Stream format to multiplex video, audio, and control data into a single, cohesive file. This article examines the critical function of private stream headers within VOB multiplexing, explaining how they enable decoders to identify, separate, and synchronize supplementary content—such as Dolby Digital (AC-3), DTS, LPCM audio, and subpicture subtitles—that standard MPEG-2 specifications do not natively handle.

The MPEG-2 Foundation and the Need for Private Streams

A standard MPEG-2 Program Stream assigns unique stream IDs to differentiate between elementary video streams and native MPEG audio streams. However, DVD technology required support for formats beyond original MPEG standards, including multi-channel AC-3, DTS, uncompressed LPCM audio, and run-length encoded subtitle overlays (subpictures).

Because the base MPEG-2 specification lacked stream identifiers for these non-native formats, the DVD specification routes this data through generic containers known as Private Stream 1 (identifier 0xBD) and Private Stream 2 (identifier 0xBF).

Sub-Stream Identification

The primary function of the private stream header is sub-stream identification. Within a VOB file, Private Stream 1 carries multiple competing data types simultaneously. Without additional signaling, a demultiplexer cannot determine whether an incoming packet belongs to an AC-3 audio track, a DTS stream, or a subtitle track.

To resolve this ambiguity, DVD authoring inserts a private stream header at the beginning of the Packetized Elementary Stream (PES) payload. This header includes a sub-stream ID that explicitly categorizes the payload:

By reading this one-byte identifier, the demultiplexer immediately knows which internal decoding pipeline must receive the packet.

Delivering Synchronization and Frame Metadata

Beyond routing, private stream headers provide essential playback parameters. For audio streams, the header frequently details the number of audio frames present within the PES packet and specifies the starting offset of the first audio frame.

This mechanism allows the player to correctly align the audio payload with the Presentation Time Stamp (PTS) found in the outer PES header. If an audio frame spans across packet boundaries, the private header provides the exact byte offset where the next complete frame begins, preventing audio glitching or desynchronization during playback.

While Private Stream 1 handles media delivery, Private Stream 2 (0xBF) uses private headers to deliver Navigation Packs (NV_PCK). These packs contain Presentation Control Information (PCI) and Data Search Information (DSI).

The headers inside these packs tell the DVD player how to handle seamless branching, multi-angle scenes, user-interaction menus, and high-speed fast-forward or rewind operations. They provide the sector addresses of adjacent video frames, allowing the drive mechanism to skip through the disc without decoding the entire stream.

The Demultiplexing Workflow

When a media player or software demuxer processes a multiplexed VOB file, the private stream headers guide the demuxing sequence:

  1. The demuxer reads the outer MPEG-2 pack and PES headers to identify a private stream (0xBD or 0xBF).
  2. It parses the private stream header immediately following the standard PES header.
  3. It extracts the sub-stream ID, frame offsets, and track numbers.
  4. It strips the transport overhead and routes the clean elementary stream to the designated decoder (such as an AC-3 decoder or subtitle renderer).

Without private stream headers, multiplexed VOB files would be limited strictly to basic MPEG video and MPEG-1 Layer II audio, rendering the advanced multi-track audio and interactive subtitle features of the DVD standard impossible to decode.