Remove keydb download/save from the library

keydb I/O moves out of libfreemkv into freemkv-keysources
(KeydbSource::save / ::update). Delete src/keydb.rs entirely (save,
http_get, default_path, write_atomic, UpdateResult) and drop `pub mod
keydb;` — http_get had no real callers. The shared Keydb* Error variants
stay in error.rs (keysources raises them; the every-error-has-a-code
contract depends on them). flate2 is no longer used here, so drop it
from Cargo.toml (zip stays for labels/jar.rs).

CHANGELOG: note the keydb-I/O move; reword the rc.5.2
DefaultDecodedFieldDuration entry to state only the action taken (the
revert) rather than an unverified Windows-fps outcome.
This commit is contained in:
Matthew Jackson
2026-06-26 17:33:57 -07:00
parent 835cc990ad
commit afa218fc8f
4 changed files with 15 additions and 886 deletions
+15 -15
View File
@@ -11,6 +11,11 @@
all seven languages, and a Codes-page entry. Messages are source-agnostic
("key source", never a specific database).
### Changed
- keydb download/save moved out of the library into freemkv-keysources;
libfreemkv no longer has any keydb I/O (it already held no keys).
### Fixed
- **DVD rips now start on the movie, not the disc menu.** A VTS title VOB's
@@ -74,21 +79,16 @@
### Fixed
- **Windows Explorer now reports the full 25 fps for interlaced SD-DVD.**
rc.5.1 added a `DefaultDecodedFieldDuration` (20 ms field) element to the
576i/480i track header on the theory that Windows derives fps from it. The
captured Silence-of-the-Lambs evidence proved the opposite: with
`FlagInterlaced=1` + `DefaultDuration=40 ms` + `DefaultDecodedFieldDuration=20 ms`,
Windows Explorer reported 12.5 fps (half) and MediaInfo flipped the track to
"Frame rate mode: Variable". MakeMKV's correct rip of the same disc OMITS
`DefaultDecodedFieldDuration`, keeps `FlagInterlaced=1` + `FieldOrder=TFF` +
full-frame `DefaultDuration` (40 ms), and Explorer shows the full 25 fps with
MediaInfo "Constant". The element is no longer written (`MkvTrack::video` now
passes `field_duration_ns == 0`); the only frame-rate signal tools trust,
`1/DefaultDuration` = 25 fps, is the full-frame value. Interlace signalling
(`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.
- **Reverted the rc.5.1 `DefaultDecodedFieldDuration` experiment for interlaced
SD-DVD.** rc.5.1 added a 20 ms `DefaultDecodedFieldDuration` field element to
the 576i/480i track header on the theory that Windows derives fps from it.
Captured evidence showed that element made Windows Explorer report 12.5 fps
(half) and MediaInfo flip the track to "Frame rate mode: Variable", while
MakeMKV's rip of the same disc omits it. The element is therefore no longer
written (`MkvTrack::video` now passes `field_duration_ns == 0`); the track
keeps `FlagInterlaced=1` + `FieldOrder=TFF` and the full-frame 40 ms
`DefaultDuration` (`1/DefaultDuration` = 25 fps), matching MakeMKV. How a given
player or shell handler chooses to display interlaced fps is not guaranteed.
- **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