How VTSI Sector Address Tables Map to Split VOBs

This article examines how DVD-Video players resolve physical file boundaries when reading Video Title Set Information (VTSI). It details how the sector address tables inside the IFO files represent data as a continuous logical stream and explains the mathematical translation players use to locate sectors across multiple, split 1 GB VOB files.

The Contiguous Logical Sector Model

The DVD-Video specification limits individual VOB (Video Object) files to a maximum size of 1 GB (1,073,741,824 bytes, or 524,288 sectors of 2,048 bytes each) to maintain compatibility with older operating systems and file systems like FAT32 and UDF 1.02. To store long-form video, titles are split sequentially across multiple files named VTS_xx_1.VOB, VTS_xx_2.VOB, up to VTS_xx_9.VOB.

Despite this physical fragmentation on the disc, the VTSI tables within VTS_xx_0.IFO do not contain distinct file pointers or direct file-path references for each split segment. Instead, the VTSI treats the collection of split files as a single, contiguous address space.

Key VTSI Address Tables

Two primary tables within the VTSI define sector locations for playback navigation:

  1. VTS_VOBU_ADMAP (VOBU Address Map): Lists the start addresses of every Video Object Unit (VOBU) relative to the beginning of the title set's presentation space.
  2. VTS_C_ADT (Cell Address Table): Defines the start and end sector addresses for every cell (chapter or scene component) within the title set.

Both tables store addresses as relative sector numbers (RLBA), where sector 0 corresponds to the very first sector of VTS_xx_1.VOB.

Mapping Logical Sectors to Split Files

When a DVD navigation engine queries the VTSI for a target sector, it maps the global sector offset to a physical file and an internal file offset.

To determine the correct file:

  1. The player reads the file system directory to get the exact sector count and starting disc Logical Block Address (LBA) of each sequential split file (VTS_xx_1.VOB, VTS_xx_2.VOB, etc.).
  2. The player maintains a cumulative running total of sectors across these files.
  3. If the target sector address \(S\) is smaller than the capacity of VTS_xx_1.VOB, the target resides in VTS_xx_1.VOB at sector \(S\).
  4. If \(S\) exceeds the capacity of VTS_xx_1.VOB, the player subtracts the sector lengths of preceding files until the relative offset falls within the sector range of a subsequent file:

\[\text{Local Sector Offset} = S - \sum_{i=1}^{k-1} \text{Size}(\text{VTS\_xx\_}i\text{.VOB})\]

Where \(k\) is the target file index in the sequence.

Boundary Alignment and Seamless Traversal

Because sector offsets in the VTSI are completely agnostic of file splits, authoring systems ensure that split points do not interrupt essential data structures: