From f4a475c7b9cbaa1f037c24757ccff2d669459af0 Mon Sep 17 00:00:00 2001 From: Matthew Jackson <1085847+MattJackson@users.noreply.github.com> Date: Wed, 24 Jun 2026 17:12:17 -0700 Subject: [PATCH] =?UTF-8?q?libfreemkv:=20rc.5.2=20changelog=20=E2=80=94=20?= =?UTF-8?q?audio=20routing,=20AACS=20clip-anchor,=20recovery,=20TopGun,=20?= =?UTF-8?q?keysources=20move?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8cdd1d7..5cde6f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,38 @@ (`FlagInterlaced=1`, `FieldOrder=TFF`) is retained, and MediaInfo still reports "Interlaced / Top Field First" because it reads scan type from the MPEG-2 elementary stream's picture coding extension, not the container flag. +- **Correct AC-3 audio track selected on DVDs with non-standard sub-stream + ordering.** freemkv assigned each declared audio stream a physical sub-stream + by ordinal (`0x80+n`), assuming the IFO's first stream lives at `0x80`. On + discs where the 5.1 main mix sits on a different sub-stream and `0x80` carries + a 2.0 down-mix (e.g. Silence of the Lambs), the 2.0 was muxed under a "5.1" + label. freemkv now probes each physical sub-stream's actual channel count from + the disc — scanning every AC-3 frame and taking the maximum, so a brief 2.0 + logo bed at the feature head can't mask the real 5.1 — and routes each declared + stream onto the sub-stream that genuinely matches. +- **"Decryption failed" on large AACS Blu-ray titles fixed.** The unit-alignment + gate measured `lba % 3` against absolute disc LBA 0, but AACS aligned units are + anchored at each clip's encrypted-region start. A clip whose start is not + 3-aligned had its readable units wrongly rejected — failing the feature/large + titles of some discs while short clips passed. The gate is now clip-anchored. +- **Single-pass disc→MKV recovers marginal/transient sectors before failing.** + The direct-to-MKV path now gives the drive its full ECC recovery budget on a + bad sector (matching the multipass rip) instead of reporting a read failure a + multipass rip would have recovered. +- **4K decode glitches at non-seamless clip joins fixed (Top Gun class).** + Titles assembled from clips joined at non-seamless boundaries no longer drop + reference frames at the join ("Could not find ref" stutter); the splice + keyframe is rewritten so the decoder discards only the genuinely-dangling + leading pictures. + +### Changed + +- **`freemkv-keysources` is now a pure key lookup.** The encrypted content-sample + reader and the candidate-key resolution loop moved into libfreemkv (they read + the disc and validate keys — decryption mechanism, not lookup). A key source + now only looks a key up and hands it back. Downstream API: use + `libfreemkv::read_encrypted_units` / `libfreemkv::resolve_and_apply` (was + `freemkv_keysources::read_sample_units` / `…::resolve_and_apply`). ### Added