From 3992cee53893048d0d219adcabd684ab268c2ba8 Mon Sep 17 00:00:00 2001 From: Matthew Jackson <1085847+MattJackson@users.noreply.github.com> Date: Sun, 4 Oct 2026 11:01:03 -0700 Subject: [PATCH] dvd: the unit chain's end is 0xFFFFFFFF by the book; the seamless bit is not a clock statement --- src/disc/dvd.rs | 6 +++--- src/ifo.rs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/disc/dvd.rs b/src/disc/dvd.rs index a79fb980..15ba1ee3 100644 --- a/src/disc/dvd.rs +++ b/src/disc/dvd.rs @@ -21,12 +21,12 @@ fn load_vmg( const DSI_DATA: usize = 0x407; const DSI_ILVU_EA: usize = DSI_DATA + 32 + 2; const DSI_NEXT_ILVU_SA: usize = DSI_DATA + 32 + 6; -// SML_PBI's "no next unit": 0x7FFFFFFF by the book, and discs also write 0xFFFFFFFF. +// SML_PBI's "no next unit": 0xFFFFFFFF by the book, and discs also write 0x7FFFFFFF. const NO_NEXT_ILVU: u32 = 0x7FFF_FFFF; // The sector ranges an interleaved cell plays: its own interleaved units, found by following -// each unit's navigation pack (its end, then the next unit's start). `None` when a pack does not -// read or parse, which leaves the cell's whole range to the caller. +// each unit's navigation pack. The chain runs per VOB, past the cell, so it is clipped to the +// cell. `None` when a pack does not read or parse, which leaves the cell's range to the caller. fn interleaved_units( reader: &mut dyn SectorSource, vob_start: u32, diff --git a/src/ifo.rs b/src/ifo.rs index 3d129522..2706c537 100644 --- a/src/ifo.rs +++ b/src/ifo.rs @@ -101,7 +101,7 @@ pub struct CellCategory { pub block_mode: u8, /// bits 5-4: 0=not part of a block, 1=angle block. pub block_type: u8, - /// bit 3: seamless playback (STC continuous). + /// bit 3: seamless playback linked in PCI (not a statement that the STC continues). pub seamless_play: bool, /// bit 2: interleaved (multi-angle / seamless-branch interleave). pub interleaved: bool,