How IFO Files Track Offsets Across Split VOB Files

This article explains how DVD Information (IFO) files manage navigation and sector addressing across multi-gigabyte video streams that are broken into 1 GB VOB files. Because the DVD-Video standard enforces a strict file size limit for filesystem compatibility, the system relies on a continuous logical sector addressing model. Rather than tracking each physical file separately, the IFO file treats the entire collection of VOB files in a Title Set as a single contiguous stream, allowing DVD players to seamlessly resolve offsets across file boundaries.

The 1 GB Split Constraint

The DVD-Video specification mandates that no single Video Object (VOB) file can exceed 1 GiB (1,073,741,824 bytes, or roughly 524,288 DVD sectors at 2,048 bytes per sector). This limitation ensures compatibility with older file systems, such as UDF 1.02 and ISO 9660, which struggle with files larger than 1 GB or 2 GB.

When a Video Title Set (VTS) requires more storage than 1 GB, it is divided into a sequence of sequentially numbered files: VTS_xx_1.VOB, VTS_xx_2.VOB, up to VTS_xx_9.VOB.

Virtual Contiguous Addressing

IFO files do not contain references to individual filenames or file boundaries. Instead, the IFO file abstracts all split VOB files associated with a given Title Set into a single continuous logical address space.

Because the address space is treated as one unbroken block, an IFO entry never needs to indicate which specific .VOB file contains a given frame.

Key IFO Tables Managing Offsets

The IFO file uses several lookup tables to point to specific locations within this contiguous space:

  1. VOBU Address Map (VTS_VOBU_ADMAP): A list of starting sector addresses for every Video Object Unit (VOBU) in the title set. Each VOBU begins with a Navigation Pack (NV_PCK) and typically contains 0.4 to 1.0 seconds of video.
  2. Cell Address Table (VTS_C_ADT): Defines the exact start and end sectors for every cell (the basic playback unit) across the virtual VOB stream.
  3. Program Chain Information (VTS_PGCI): Directs the playback sequence by chaining cells together using the sector positions established in the cell and VOBU tables.

How the Player Calculates Physical File Locations

When a playback engine reads an offset from an IFO table, it converts that logical address into a target file and a byte offset within that file.

  1. Sector Accumulation: At disc mount, the player queries the file system to determine the exact sector count of each file in the sequence (VTS_xx_1.VOB, VTS_xx_2.VOB, etc.).
  2. Threshold Comparison: If an IFO instruction requests sector 600,000, and VTS_xx_1.VOB contains 512,000 sectors, the player detects that the target exceeds the bounds of the first file.
  3. Local Offset Calculation: The player subtracts the cumulative total of previous files from the target sector: \[\text{Local Sector} = 600,000 - 512,000 = 88,000\]
  4. Physical Read: The player opens VTS_xx_2.VOB, navigates to local sector 88,000 (byte offset \(88,000 \times 2,048\)), and begins reading data.

Synchronizing with Internal VOB Navigation

In addition to the top-level IFO tables, the VOB files contain embedded navigation metadata that complements the IFO's global map: