Skip to content

7.34.1 - TrueHD Atmos seeks about twice as fast

Choose a tag to compare

@superuser404notfound superuser404notfound released this 11 Oct 15:58
· 300 commits to main since this release

Changed

  • TrueHD Atmos to APAC is about twice as fast, so a seek past the buffer comes back sooner. The object decode and Apple's APAC encoder each take about a core (Dolby's Unfold demo, M1, release build: 1.36 s and 1.26 s of 27 s), and they ran one after the other on the producer thread, which is what the first segment after a seek past the produced range waited for. Unfold end to end: 2.73 s in 7.34.0, 1.40 s now (10x to 19x real time). Verified on an Apple TV 4K (3rd gen) into a Sonos soundbar: seeks past the buffer come back noticeably faster, still reported as Dolby Atmos. (#731)
    • Encode queue: SpatialAudioBridge hands each rendered 2048-frame chunk to APACEncodePipeline, a serial queue that inherits the producer's QoS, and decodes the next chunk meanwhile. A pool of three chunk buffers is the backpressure. Packets are stamped on the worker by absolute position, so restarts, resets, timeline shifts and a failed chunk keep every later packet where the serial path put it.
    • Segments unchanged: packets now come back a feed or more late, so the producer settles the bridge (AudioTranscodingBridge.settle()) before a keyframe advances its segment cutter or a write cuts the open segment, and at EOF. Every segment of Unfold carries byte-identical audio packets (pts, size, MD5) to 7.34.0 on a pts-routed m2ts, a remuxed MKV with a video offset and a sequential origin. A silence fill goes to the encoder in chunks too.
    • Faster decoder: see Dependencies.

Dependencies

  • LibTrueHD 2.2.0 (.upToNextMinor(from: "2.2.0")): the TrueHD object decode is about 30% faster (1.31 s to 0.92 s for Unfold's 16-element presentation). The truehd crate copied 160-row sample buffers for blocks that are usually 40 samples; truehdd#42 sizes them to the samples they hold, with byte-identical output (PCM and object metadata, verified against truehdd on every fixture and presentation). Until that is merged, LibTrueHD builds from a fork that is upstream main plus that change, which also takes in nine upstream fixes since the previous pin. Release notes: https://github.com/superuser404notfound/LibTrueHD/releases/tag/2.2.0

No API change. The APAC encoder is now the slower half; nothing on the decode side sets the pace any more.