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
b62efb79a8
mux: stdio header read before a selection is resolved, MP4 sink rides the clip-join timeline, laced MKV frames share one decode budget; udf/extract: unread File Entry and dead bus fail instead of staging holes
2026-10-01 14:32:41 -07:00
Matthew Jackson
62d56dff5b
bdnav: BC compare per libbluray; labels: camelCase split, deluxe master enums and Rc stack names; ifo: warn on multi-PGC titles; h264/hevc: param sets lead the AU in hierarchy order
2026-10-01 14:27:14 -07:00
Matthew Jackson
08aece29ff
lint: tree sink takes extract's lint baselines; recovery slot reservation is a plain CAS loop
2026-10-01 08:34:14 -07:00
Matthew Jackson
00cd0d42cf
sink: dir:// is a TreeSink; extract runs the read/decrypt chain into it
2026-10-01 08:04:48 -07:00
Matthew Jackson
389725a7ee
read: m2ts:// reads through the one Read stage and prefetcher; the byte prefetcher is removed
2026-10-01 08:02:21 -07:00
Matthew Jackson
db69131636
decrypt: one constructor for the decryption stage (keys, a key ring's view, or content-detected)
2026-10-01 07:58:43 -07:00
Matthew Jackson
2f51b1cdcf
docs: trim three comment blocks to the comment-guard caps
2026-09-30 22:52:16 -07:00
Matthew Jackson
96e538c559
cleanup: drop dead error variants (E9009, E9063, E9082), the io::sink and fmp4/m2ts_mux/HevcMux scaffolding, stale comments and doc links
2026-09-30 22:50:43 -07:00
Matthew Jackson
3a2c448a74
test: live-mux driver tests hold the drive-holder lock; drop a duplicated cfg
2026-09-30 22:17:03 -07:00
Matthew Jackson
9ab985fbb2
sink: iso:// and null:// block sinks; a live DVD extracts descrambled; an encrypted folder is keyed like its image; platform null device
2026-09-30 22:15:08 -07:00
Matthew Jackson
064679b201
read: one Read stage (live and image policies) behind one prefetcher and demux; DiscStream removed
2026-09-30 21:58:08 -07:00
Matthew Jackson
01507ddb10
pes: PesSource and PesSink replace pes::Stream; sink caps; TrueHD labels completed in-stream on every path; selection on container inputs
2026-09-30 21:44:58 -07:00
Matthew Jackson
ed02bc1392
source: open_source opens every input incl. disc://; MuxSource replaced by Source; one image probe; disc-named output titles
2026-09-30 21:28:56 -07:00
Matthew Jackson
1f5f5df8cb
keys: acquire from KeyEvidence into a KeyRing, not from a scanned Disc
2026-09-30 21:11:07 -07:00
Matthew Jackson
79b7893f2e
ctx: one run context (halt, events, loss counters) for every stage
2026-09-30 20:36:53 -07:00
Matthew Jackson
9f87155c95
docs: name the m2ts private-data audio by its layout, not a reference implementation
2026-09-30 20:11:59 -07:00
Matthew Jackson
8b165585b8
mux: m2ts output paces a PCR and arrival stamps; ADTS keeps every raw_data_block
...
M2TS output had no PCR and zero TP_extra_header arrival stamps, and an AAC
access unit from a multi-block ADTS frame was re-framed as one block. Write
adaptation-only PCR packets on PID 0x1001 (the PMT's PCR_PID) at most 100 ms
apart, stamp every packet's ATS from the same 27 MHz clock (at most 1 s before
its DTS, 128 Mb/s per packet), restart with the discontinuity_indicator on a
timeline jump past 10 s, and declare the ADTS block count from the duration.
Parity goldens re-blessed: only the m2ts output lines change (the added PCR
packets and non-zero ATS).
2026-09-30 20:09:33 -07:00
Matthew Jackson
9e792fc105
mux: expose is_blocked_ip so callers vet network:// targets with the library's own rule
2026-09-30 19:54:14 -07:00
Matthew Jackson
98b17c3898
decrypt: one CSS pack test for disc and file; stage re-review fixes (blank heads, damaged stale-CPI units, refused-read retry)
2026-09-30 19:41:58 -07:00
Matthew Jackson
ff3c18c404
mux: m2ts output declares tracks in an HDMV PMT; carry AAC/MP2/MP3 through m2ts input, m2ts and mp4 output
...
M2TS output had no PAT/PMT, so FFmpeg could not name BD LPCM (or AAC):
write PAT + HDMV-registered PMT every 100 ms of PTS progress, re-frame AAC
as ADTS from its ASC, and give MPEG audio the 0xC0 stream_id. Loose m2ts
input types FFmpeg's stream_type 0x06 audio from its stream_id and ES sync.
mp4:// carries AAC/MP2/MP3 as mp4a + esds.
Parity goldens re-blessed: only m2ts output bytes change (the added
PAT/PMT packets).
2026-09-30 19:41:46 -07:00
Matthew Jackson
1583c5e139
test: parity goldens pin today's paths (bytes, counters, verdicts)
2026-09-30 19:26:52 -07:00
Matthew Jackson
d335fe5f89
mux: network:// allows LAN and loopback targets
2026-09-30 19:22:35 -07:00
Matthew Jackson
b67d82a5e1
docs: fix the output_depth intra-doc link
2026-09-30 19:02:37 -07:00
Matthew Jackson
7005cc0551
decrypt: stale CPI on 3/4-synced TS incl. a partial tail; FMKV files skip the pack search
...
A clear unit with a few damaged packets keeps opening without keys. Also moves
the network accept_staged allow-list entry and trims a comment.
2026-09-30 18:53:31 -07:00
Matthew Jackson
880bbcab4a
decrypt: stage review fixes: early stream verdict, strict stale CPI, partial units at EOF only
...
A byte stream is ruled out from five bytes, so network:// and stdio:// parse
the FMKV header as soon as it arrives. A stale CPI flag is cleared only on
wholly clear TS. A flagged partial unit is blanked only when it ends the
source. A file stage finds a VOB's first aligned pack past damaged sectors,
and one damaged unit at a clip's head no longer hides its source packets.
Raw mpg falls back to the raw head on E7022 too; an uncrackable PS verdict is
kept so a retry does not scan again; SectorBytes reports a short source as
UnexpectedEof; disc_root_of canonicalizes, follows SSIF and drops HD DVD.
2026-09-30 18:53:31 -07:00
Matthew Jackson
b6579a85ff
decrypt: one content-detected decryption stage for every input
...
Every input() source now passes the decryption stage. mpg:// and m2ts:// read
through DecryptingSectorSource::detecting (CSS cracked once via the shared
css::crack_title_key; a loose BD-TS keyed on arrival from InputOptions.keys,
E7022 when no key opens it); mkv://, mp4://, network:// and stdio:// through
sector::stage::Stage, which hands a clear container through untouched and
refuses encrypted content unless raw. PsFileCss, resolve_ps_file_title_key and
descramble_ps_region are gone; the disc keeps its libdvdcss pack layout
(css::Packs). A flagged trailing partial AACS unit is blanked and counted on
every reader. Adds disc_root_of for finding a loose clip's disc folder.
2026-09-30 18:53:23 -07:00
Matthew Jackson
10d85b2444
damage: keep going where usable content remains (E7031, UDF FID, MPLS/CLPI truncation, whole-disc E7032)
2026-09-30 18:49:12 -07:00
Matthew Jackson
d552ffed88
lpcm: keep the source bit depth (16-bit stays 16-bit, 20/24-bit output 24-bit)
2026-09-30 18:45:38 -07:00
Matthew Jackson
7c35ce6ef4
mux: timeline origin is the earliest sample of any track (mkv, mp4)
2026-09-30 18:43:34 -07:00
Matthew Jackson
b6b888bb55
mux: zero read batch is coded E9085; de-flake two sleep tests; changelog and doc fixes from the 1.7.7 review
2026-09-30 18:42:56 -07:00
Matthew Jackson
e52f190f89
changelog: 1.8.0 entry (changes since 1.7.7)
2026-09-30 18:33:07 -07:00
Matthew Jackson
e05358624f
build(deps): bump roxmltree from 0.20.0 to 0.21.1 ( #28 )
...
Bumps [roxmltree](https://github.com/RazrFalcon/roxmltree) from 0.20.0 to 0.21.1.
- [Changelog](https://github.com/RazrFalcon/roxmltree/blob/master/CHANGELOG.md)
- [Commits](https://github.com/RazrFalcon/roxmltree/compare/v0.20.0...v0.21.1)
---
updated-dependencies:
- dependency-name: roxmltree
dependency-version: 0.21.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
2026-09-30 16:31:10 -07:00
Matthew Jackson
0a3667729e
build(deps): bump the minor-and-patch group with 2 updates ( #27 )
...
Bumps the minor-and-patch group with 2 updates: [rustix](https://github.com/bytecodealliance/rustix) and [crossbeam-channel](https://github.com/crossbeam-rs/crossbeam).
Updates `rustix` from 1.1.4 to 1.1.5
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Changelog](https://github.com/bytecodealliance/rustix/blob/main/CHANGES.md)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v1.1.4...v1.1.5)
Updates `crossbeam-channel` from 0.5.16 to 0.5.17
- [Release notes](https://github.com/crossbeam-rs/crossbeam/releases)
- [Changelog](https://github.com/crossbeam-rs/crossbeam/blob/main/CHANGELOG.md)
- [Commits](https://github.com/crossbeam-rs/crossbeam/compare/crossbeam-channel-0.5.16...crossbeam-channel-0.5.17)
---
updated-dependencies:
- dependency-name: rustix
dependency-version: 1.1.5
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: crossbeam-channel
dependency-version: 0.5.17
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: minor-and-patch
...
2026-09-30 16:31:10 -07:00
Matthew Jackson
132a64c814
deps: freemkv-unlock is a version dep with a git-tag override
...
The committed ../freemkv-unlock path dep made every Dependabot cargo run fail (it cannot fetch paths outside the repo). Now freemkv-unlock = "1.7" resolved by a [patch.crates-io] git tag, like every other sibling; release-orchestrate re-pins it. Local dev: .cargo/config.toml path-patches freemkv-unlock; CI does the same. Dependabot config unified.
2026-09-30 16:08:19 -07:00
Matthew Jackson
c0618a0e8a
mux: pin the live stream's dead-source code and resync gate in tests
2026-09-30 16:05:07 -07:00
Matthew Jackson
8e7b2e2821
network: sync the halt tests on handshakes, not sleeps
2026-09-30 16:05:06 -07:00
Matthew Jackson
1e3e18d861
mux: tighten driver tests to the exact error codes and outcomes they guard
2026-09-30 16:05:06 -07:00
Matthew Jackson
81f798646a
mux: test skip_errors and selection through every source arm
2026-09-30 16:05:06 -07:00
Matthew Jackson
f7a241b5e8
mux: make the demux worker exit and cancel tests able to fail
2026-09-30 16:05:06 -07:00
Matthew Jackson
d176d9c71d
mux: stamp a dir:// source as an image in the provenance header
2026-09-30 16:05:06 -07:00
Matthew Jackson
f956511d5c
mux: refuse an FMKV header with more streams than frame track ids
2026-09-30 16:05:06 -07:00
Matthew Jackson
c827d9dd1e
mux: check a keyed session's selection and key gate before taking its reader
2026-09-30 16:05:06 -07:00
Matthew Jackson
cc8f7853cc
network: try every vetted address with a bounded connect; keepalive on the sender
2026-09-30 16:05:06 -07:00
Matthew Jackson
239447fab1
mux: repeat the highway's terminal read error on later reads
2026-09-30 16:05:06 -07:00
Matthew Jackson
35a69c15a2
mux: count resync-dropped frames in the highway's errors
2026-09-30 16:05:06 -07:00
Matthew Jackson
e6780eed56
mux: warn once per dropped PS stream, not once per packet
2026-09-30 16:05:06 -07:00
Matthew Jackson
0e6922cf8a
mux: end a failed or stopped network title with a reset, not a clean close
2026-09-30 16:05:06 -07:00
Matthew Jackson
570c54fc3c
mux: treat a stopped read in a bad zone as a stop, not bad media
2026-09-30 16:05:06 -07:00
Matthew Jackson
0c61a72cc1
mux: refuse a zero read batch on the live disc stream
2026-09-30 16:05:06 -07:00