mux/mp4: DTS audio (dtsc/dtsh + ddts)
Parse the DTS core header (SFREQ/AMODE/RATE/LFF/NBLKS/FSIZE) → a ddts box (sample rate, channel layout mask, core size, computed bitrate, LFE); whole access units (core + DTS-HD extension substreams) pass through, so an HD decoder finds the extension. dtsh when an extension sync follows the core, else dtsc. Fit oracle now carries DTS / DTS-HD MA / DTS-HD HR. Validated on 300 (real DTS-HD MA 7.1): freemkv's mp4 DTS track is byte-identical to ffmpeg -c copy under ffprobe (dts / 48000 / 8ch / 7.1) and decodes clean (exit 0). Channel layout correct.
This commit is contained in:
+4
-3
@@ -12,9 +12,10 @@
|
||||
//! ## Track model
|
||||
//!
|
||||
//! One video track (HEVC / H.264) plus every audio track whose codec has a clean
|
||||
//! MP4 mapping (AC-3 → `ac-3`/`dac3`, E-AC-3 → `ec-3`/`dec3`). This is the fit
|
||||
//! oracle: a codec MP4 can't carry (TrueHD, DTS, LPCM) or that has no sample
|
||||
//! entry here is **excluded, never silently dropped** — [`fit_report`] lets the
|
||||
//! MP4 mapping (AC-3 → `ac-3`/`dac3`, E-AC-3 → `ec-3`/`dec3`, DTS/DTS-HD →
|
||||
//! `dtsc`/`dtsh`/`ddts`). This is the fit oracle: a codec MP4 can't carry
|
||||
//! (TrueHD, LPCM) or that has no sample entry here is **excluded, never silently
|
||||
//! dropped** — [`fit_report`] lets the
|
||||
//! CLI enumerate exactly what was left out and why. Video NALs pass through
|
||||
//! unchanged (the demux hands us length-prefixed hvcC/avcC framing — already
|
||||
//! MP4's form). Decode timestamps are derived (the pipeline carries presentation
|
||||
|
||||
Reference in New Issue
Block a user