Commit Graph
2117 Commits
Author SHA1 Message Date
Matthew Jackson a53d40bfac m2ts: sink rides the clip-join timeline
A multi-clip playlist's source PTS restarts at each clip join. The m2ts sink passed it
through, so one TS stepped back in time at every join, and the DTS deriver's order guard
then wrote every later reordered AU as PTS only (a 34-clip UHD title kept DTS on its first
clip alone). The sink now maps each frame through TimelineContinuity, driven by the base
video view, and fails a seam plan that dropped most of the title, as the other sinks do.
v1.7.7-rc7
2026-10-02 01:07:32 -07:00
Matthew Jackson 7c718e31e4 read: an image extent's sub-unit tail is read and judged by the decrypt stage, not refused E9030
The image Read policy refused any extent tail shorter than one 3-sector AACS unit. Blu-ray
stream files always end on the unit grid, but an HD DVD .EVO need not, and a clear HD DVD
now rips through the keyed pipeline (unit_align 3), so the main title of a real disc failed
E9030 at the end of its first off-grid extent. The tail is now one short read, as the live
policy already did; the decrypt stage passes it when clear and refuses it (E7013) when it is
the head of an encrypted unit.
2026-10-02 01:07:32 -07:00
Matthew Jackson 37fde516af Harden wall-clock-sensitive tests against slow runners 2026-10-02 00:24:41 -07:00
Matthew Jackson 54b50a815e disc tests: DVD takes the one encryption decision on its CSS scramble flag
Clear content passes with no key source asked, scrambled content with no recovered key refuses
E7027, a recovered key descrambles.
v1.7.7-rc6
2026-10-01 22:46:14 -07:00
Matthew Jackson dc6d0fe693 keys: one encryption decision for every AACS format, the HD DVD clear case folded into it
KeyRing::acquire probes the pieces in scope once, each unit judged by its format's detector
(BD/UHD: the CPI flag; HD DVD: flagged or not whole MPEG-PS). Content read in the clear asks
no source, whatever key files the disc declares; for FMTS the forensic segments must read clear
too. Encrypted content goes to the format's keying (BD/UHD per piece, HD DVD best effort) and is
refused E7022 / E7032 when no source has the key. Replaces 9e9ff21's HD DVD-only check.
2026-10-01 22:46:14 -07:00
Matthew Jackson 6727fe893a mkv: an MPEG-2 track's DefaultDuration follows its measured frame period
DefaultDuration came from the IFO's video standard (29.97 for NTSC). A soft-telecined film
title carries 23.976 coded frames a second, so the header disagreed with the frame count
(11440 frames over 476 s on the dvd fixture's title 2). finish() now rewrites the value when
the kept frames' PTS span measures another standard rate.
2026-10-01 22:03:31 -07:00
Matthew Jackson 07a7ea8aad dvd: warn about titles split across PGCs once per disc, not per title per scan
62d56df warned from parse_pgcit for every split title on every scan; a CLI rip scans its disc
three times, so a DVD with four split titles logged the same warning twelve times. The scan
now logs one line per disc naming every split title, and a rescan of that disc logs it at
debug.
2026-10-01 22:03:30 -07:00
Matthew Jackson 8e317afc16 source: an image or folder names its title by the meta title, else the playlist, as 1.7.7
ed02bc1 named every disc layout's output title by its meta title, else its volume id. A
folder's volume id is its directory name, so a DVD title ripped from an image and from its
extracted folder got different segment titles and the two MKVs stopped being byte-identical.
A drive still names by meta title, else volume id.
2026-10-01 22:03:30 -07:00
Matthew Jackson 9e9ff21ba1 keys: an HD DVD copy already in the clear needs no key, whatever its title-key file declares
e44ee04/1f5f5df refused every HD DVD declaring more than one CPS unit before reading any
content (E7022), so a decrypted image that kept its AACS directory stopped ripping. Acquisition
now samples each piece first: unflagged, structurally whole MPEG-PS packs make a clear set.
2026-10-01 21:44:18 -07:00
Matthew Jackson 414766ec44 tests: the progressing-consumer join test applies one item per quarter window, so a slow runner's sleep overshoot is not a stall v1.7.7-rc5 2026-10-01 18:29:34 -07:00
Matthew Jackson de4658dab8 scsi(macos): take the default IOKit port as MACH_PORT_NULL, no availability check for the Rust link to resolve v1.7.7-rc4 2026-10-01 17:19:24 -07:00
Matthew Jackson f7ed7278b2 Keep a Stop over the empty-output MkvInvalid it causes v1.7.7-rc3 2026-10-01 15:27:23 -07:00
Matthew Jackson ca0f9d5bc8 Keep a strict read error over the empty-output MkvInvalid it causes 2026-10-01 15:23:31 -07:00
Matthew Jackson 134fdd973f Cargo.lock: drop local patch.unused entries 2026-10-01 15:17:42 -07:00
Matthew Jackson 09b9324903 Merge branch 'audit-lib-G6' into audit-fix-lib 2026-10-01 15:17:42 -07:00
Matthew Jackson 6af1dcd912 Merge branch 'audit-lib-G5' into audit-fix-lib 2026-10-01 15:16:36 -07:00
Matthew Jackson 735efac62b mkv tests: drop redundant cast 2026-10-01 15:15:06 -07:00
Matthew Jackson 92b14006a2 mux: EditionFlagDefault uses its registered ID, SeekHead refuses an unreserved target; tests for decode_ts reorder clamp, VobSub stop, field order, late AAC CodecPrivate 2026-10-01 15:14:54 -07:00
Matthew Jackson f49f966c46 video codecs: pin param-set re-assert, SEI, discontinuity, slice types, field pairing, reorder; warn on unparseable HEVC SPS 2026-10-01 15:14:11 -07:00
Matthew Jackson d3534bafdd audio codecs: pin ADTS/PCE, DTS CRC/EXSS, LPCM tables, free-format padding, TrueHD LFE; doc and naming fixes 2026-10-01 15:14:11 -07:00
Matthew Jackson 566c9c8df3 Merge branch 'audit-lib-G8' into audit-fix-lib 2026-10-01 15:12:46 -07:00
Matthew Jackson 92a79afef0 Merge branch 'audit-lib-G7' into audit-fix-lib 2026-10-01 15:12:46 -07:00
Matthew Jackson b14e6f1113 Merge branch 'audit-lib-G4' into audit-fix-lib 2026-10-01 15:12:45 -07:00
Matthew Jackson 8f5b45b907 Merge branch 'audit-lib-G3' into audit-fix-lib 2026-10-01 15:12:45 -07:00
Matthew Jackson 31a0f0d4d2 Merge branch 'audit-lib-G2b' into audit-fix-lib 2026-10-01 15:12:45 -07:00
Matthew Jackson 3b24038700 Merge branch 'audit-lib-G2a' into audit-fix-lib 2026-10-01 15:12:45 -07:00
Matthew Jackson 38b302fc86 lint_stop: drop the ctrm items_after_test_module baseline entry 2026-10-01 15:11:16 -07:00
Matthew Jackson a0a058a012 fmt, clippy 2026-10-01 15:09:36 -07:00
Matthew Jackson d8c6ea7fb1 labels/deluxe: fetch the binding class by name, escape disc text, test confidence and union bounds 2026-10-01 15:09:19 -07:00
Matthew Jackson 10e2d400bd demux_thread: test the PS tail flush 2026-10-01 15:08:28 -07:00
Matthew Jackson 286997119a select: test extension pairing by index 2026-10-01 15:07:17 -07:00
Matthew Jackson c37ef82dbf tests: header gate rebase and subtitle, fvi header provenance, hvcC cut arrays, FMKV stream fields, json mvc and cue times 2026-10-01 15:07:14 -07:00
Matthew Jackson bbeb2d5ead pipelined: test the resync gate on the EOF flush 2026-10-01 15:06:22 -07:00
Matthew Jackson b8f88bfe9a stdio: tests for the zero-frame header and frame padding 2026-10-01 15:05:39 -07:00
Matthew Jackson 6fc8f657ac selected: test for translated per-track answers and passthrough 2026-10-01 15:04:29 -07:00
Matthew Jackson 089ef9edda dirimage: keep PVD interchange level 3 (golden images pin it) 2026-10-01 15:03:28 -07:00
Matthew Jackson 19066aa771 labels: log caught parser panics, pin label tables and selection rules with tests 2026-10-01 15:02:36 -07:00
Matthew Jackson 535d1b8dd9 disc: warn on unreadable cert and MKB prefix, cap null mapfile name, release MKB padding capacity, fix stale docs; table tests 2026-10-01 15:02:03 -07:00
Matthew Jackson 82b2dd6cd2 disc tests: DVD nav join, halt polls, HD DVD Stop handling, PGS LBA bound, forced flag, unreadable MKB and cert 2026-10-01 15:02:03 -07:00
Matthew Jackson 389340bb92 extract: a File Entry that fails after listing loses that file only; loss, progress and blank accounting tests 2026-10-01 15:02:03 -07:00
Matthew Jackson 4876f61d47 bluray: 3D size follows the interleaved extents, meta title drops control characters; scan tests for skipped playlist, late Stop, nibble mapping 2026-10-01 15:02:03 -07:00
Matthew Jackson 927bc1f8ec network: tests for timing range and header guards and the incomplete reset 2026-10-01 15:01:53 -07:00
Matthew Jackson cd208c8c18 demux_sink: authored PGS clear beats a capped duration, hostile chapter names neutralised; driver: stop paths pinned, dead live_keyed param removed 2026-10-01 15:00:26 -07:00
Matthew Jackson 66162585d1 tsmux/ps/videomap: doc and comment fixes; tests for MPEG audio stream ids and display aspect 2026-10-01 14:59:10 -07:00
Matthew Jackson 1355b35026 session: no expect after scan; identity: raw INQUIRY doc; tests for ctx env switches, diag labels, firmware date cap, unlock bridge mapping 2026-10-01 14:58:07 -07:00
Matthew Jackson c9e7f81036 sector: an unreadable AACS unit head is a guess, not a cached CPI; docs and batch/threshold dedupe; tests for blank reporting, byte-view clip, producer latch, BD-TS gates, forwarding 2026-10-01 14:58:06 -07:00
Matthew Jackson 5189ef1f6e drive/scsi: DVD+ DL media is DVD, sg open errno keeps its cause, status-only failures carry no sense; may-block labels, stale comments; tests for the stop, CDB and allow-list guards 2026-10-01 14:58:06 -07:00
Matthew Jackson 858847ffcf ts: cap path reuses drop_partial; resolve: dead raw-key copy removed, AACS unit constant; ts tests 2026-10-01 14:54:45 -07:00
Matthew Jackson 2908d11f09 io: accurate docs for open_block_sink, debug_enabled, drop-chunk comment; SAFETY note on macOS prefetch 2026-10-01 14:52:23 -07:00
Matthew Jackson cb3949f390 io, whole_disc: tests for durable-sync errors and clamps, padded reads, flusher latch, rebind, WAIT_AFTER credit; fix flusher and writeback docs 2026-10-01 14:52:22 -07:00