libfreemkv: rc.5.1 DVD correctness fixes
- CSS: unlock scrambled-sector reads on enforcing drives via bus-auth only; classify sense 6F/03 as CSS-locked; early-bail on a fully locked scan; gate the AACS handshake off DVD discs. - DVD first-play menu no longer prepended to the feature: read the title VOBS base from vtstt_vobs (0xC4), not the menu VOBS vtsm_vobs (0xC0). - Interlaced field-duration (DefaultDecodedFieldDuration) written as a direct TrackEntry child rather than inside Video, so Windows reports the correct frame rate. - Audio channel count read from the AC-3 bitstream; FieldOrder set to TFF; per-track BPS tags. - Structured disc diagnostics at --log-level 3; reduced per-operation log spam.
This commit is contained in:
@@ -24,6 +24,9 @@ const PROGRAM_END_ID: u8 = 0xB9;
|
||||
|
||||
/// Private stream 1 (AC3, DTS, LPCM, subtitles).
|
||||
const PRIVATE_STREAM_1: u8 = 0xBD;
|
||||
/// Private stream 2 (0xBF) — DVD navigation (PCI/DSI). Carries no muxable
|
||||
/// elementary stream; expected to be dropped on every disc.
|
||||
const PRIVATE_STREAM_2: u8 = 0xBF;
|
||||
|
||||
/// Hard cap on the demuxer's reassembly buffer. A length-0 (unbounded) video
|
||||
/// PES is delimited by the next PS-layer boundary; if a corrupt stream declares
|
||||
@@ -108,6 +111,16 @@ impl PsPacket {
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
/// Whether this is a DVD navigation packet (private_stream_2, 0xBF —
|
||||
/// PCI/DSI). These carry no muxable elementary stream and are EXPECTED to
|
||||
/// be dropped on every DVD, so a per-packet WARN is noise: the mux loops
|
||||
/// count them and emit one finalize summary instead. A `dvd_pid()` of
|
||||
/// `None` for any OTHER stream_id is unexpected (a possibly-dropped real
|
||||
/// stream) and stays an individual WARN.
|
||||
pub fn is_nav(&self) -> bool {
|
||||
self.stream_id == PRIVATE_STREAM_2
|
||||
}
|
||||
}
|
||||
|
||||
/// MPEG-2 Program Stream demuxer.
|
||||
|
||||
Reference in New Issue
Block a user