How DSI Packs Enable Fast-Forward and Rewind in VOBs

This article explains the role of Data Search Information (DSI) packs in DVD-Video navigation, detailing how they allow media players to perform trick-play functions such as fast-forward and rewind. By embedding precise sector offsets and reference tables inside the Video Object (VOB) structure, DSI packs eliminate the need for full stream decoding during high-speed navigation, enabling seamless jumps between key video frames.

The Role of the DSI Pack in VOB Architecture

A Video Object (VOB) file is structured as a collection of Video Object Units (VOBUs). Each VOBU typically contains 0.4 to 1.0 seconds of multiplexed video, audio, and sub-picture data. At the very beginning of every VOBU sits a Navigation Pack (NV_PCK), which contains two distinct sub-packets:

  1. PCI (Presentation Control Information): Handles real-time display aspects, such as angle changes and highlight buttons.
  2. DSI (Data Search Information): Contains the spatial and navigational metadata required to locate data within the VOB stream without parsing the entire file.

Because MPEG-2 compression relies heavily on inter-frame dependencies (using I-frames, P-frames, and B-frames), a player cannot easily decode video in reverse or skip arbitrarily without knowing where the next independent Intra-frame (I-frame) resides. The DSI pack solves this problem by functioning as a localized roadmap.

The VOBU Search Information (VOBU_SRI) Table

The primary mechanism within the DSI pack that facilitates fast-forward and rewind is the VOBU Search Information (VOBU_SRI) table.

The VOBU_SRI contains an array of relative sector addresses pointing to other VOBUs located both forward and backward in time relative to the current position. These pointers are categorized into fixed time intervals, typically covering:

Each entry in the table stores the relative block address (RLBN) of the target VOBU. If a target VOBU does not exist (for example, seeking backward from the very beginning of a title), the table marks the entry with an end-of-search flag.

How Fast-Forward Operates

During high-speed forward playback (such as 2x, 4x, or 16x speed), decoding every frame is computationally expensive and unnecessary. The player utilizes the DSI pack as follows:

  1. The player reads the NV_PCK of the current VOBU and parses the DSI block.
  2. It references the VOBU_SRI table to locate a future VOBU corresponding to the selected multiplier speed (e.g., jumping 1.0 second forward for a 2x rate).
  3. The drive optical pickup seeks directly to the target sector defined by the forward pointer, skipping all intermediate B-frames, P-frames, and non-video data.
  4. The player decodes only the first I-frame of that target VOBU, renders it to the screen, reads its corresponding DSI pack, and repeats the process.

How Rewind Operates

Rewinding compressed video is inherently difficult because standard MPEG streams are unidirectional; P-frames and B-frames reference past frames and cannot be decoded backward. The DSI pack bypasses this limitation entirely:

  1. When the user initiates a rewind command, the player reads the current VOBU's DSI pack.
  2. It looks up the backward pointers in the VOBU_SRI table to identify preceding VOBUs at the required temporal offset.
  3. The player seeks backward to the sector specified by the pointer.
  4. It extracts and decodes the standalone I-frame found at that location and displays it.
  5. The player then reads the DSI pack of this older VOBU to find the next backward target, effectively jumping backward from I-frame to I-frame.

Maintaining Stream Consistency

In addition to jump tables, the DSI pack contains reference addresses for the first reference frame (the start of the I-frame) and the end address of the reference frame within the current VOBU. This ensures that the decoding hardware reads only the minimal amount of data necessary to construct an image before moving the read head to the next sector, ensuring responsive and jitter-free trick-play performance.