Fix audit findings: DTS AMODE bound, key-fetch negative memoization, PGS probe coverage
- dts: accept all 16 legal AMODE channel-arrangement codes (0-15), not just 0-9. Per ETSI TS 102 114 the 6-bit AMODE field has 16 defined arrangements; only 16-63 are reserved. a reference decoder the spec per-AMODE channel table confirms 10-15 are decodable 6/7/8-channel layouts. The old bound of 10 dropped spec-legal multichannel core frames as undecodable, silencing recoverable audio. Add a regression test (literal 0..16 range) that fails if the bound reverts to 10. - keysource: only memoize a NEGATIVE (empty) key-fetch result when every source genuinely ran and none held the key — never when a source Err'd (network down, unreachable). A transient outage was being cached as a permanent "no key" for the fingerprint, permanently dropping a unit that could be recovered once the source came back. Thread an `errored` flag out of the drivers and gate the cache insert on it. Tests cover both the recover-after-outage case and that a genuine absence is still memoized. - pgs_forced_probe: add happy-path coverage feeding real synthetic BD-TS PGS display sets through the full demux -> parse -> observe -> apply path, both a forced verdict landing and a non-forced verdict clearing a vendor flag. - mp4: correct fit_report doc (audio carried is AC-3/E-AC-3 AND DTS/DTS-HD). - scan_iso test: add independent fixture expectations (volume id) so the parity test is no longer purely tautological against a re-run of the same composition.
This commit is contained in:
+3
-2
@@ -158,8 +158,9 @@ pub struct Mp4FitReport {
|
||||
}
|
||||
|
||||
/// Compute the fit plan without opening a file. Video: the first primary
|
||||
/// HEVC/H.264 track. Audio: every AC-3 / E-AC-3 track. Everything else is
|
||||
/// skipped with a reason.
|
||||
/// HEVC/H.264 track. Audio: every track `audio::audio_fits` carries — the Dolby
|
||||
/// family (AC-3 / E-AC-3) and DTS (core / DTS-HD HRA / DTS-HD MA). Everything
|
||||
/// else is skipped with a reason.
|
||||
pub fn fit_report(title: &DiscTitle) -> Mp4FitReport {
|
||||
let mut included = Vec::new();
|
||||
let mut skipped = Vec::new();
|
||||
|
||||
Reference in New Issue
Block a user