Skip to content

2.3.0 - decoding about a third faster again

Latest

Choose a tag to compare

@superuser404notfound superuser404notfound released this 13 Oct 07:14
· 1 commit to main since this release

Changed

  • Decoding is about a third faster again. The truehd pin moves to harletty's speed work on the decoder, which includes the truehdd#42 change from 2.2.0 and adds: blocks decoded in place instead of copied, bits read straight from the slice with table-driven Huffman codes, CRC-8 eight bytes per step, prediction filters for several channels side by side, and matrices applied to a whole block. Through the C API on an M1: Unfold's 16-element presentation 0.98 s before, 0.60 s after (29x to 45x real time), the first 120 s of Dolby's 7.1.4 test file 3.04 s to 2.00 s.
  • truehd pin: superuser404notfound/truehdd@5c8b880, mirrored unchanged from harletty's branch (upstream main 02d29cd plus 17 commits), so the pin does not depend on a third-party branch. It returns to upstream once the work is merged there. NOTICE says so.

Verification

Output is unchanged. harness/verify.sh passes in full: PCM bit-exact against truehdd, object metadata, reset and seek, arbitrary chunking, every slice links, both link orders next to a second Rust library, Swift through the module map. examples/decode_bench hashes every output field (PCM, speakers, timing, object metadata) and gives the same checksum as 2.2.1 on Unfold, the 7.1.4 test file and FFmpeg's FATE atmos.thd. The truehdd CLI at the 2.2.1 pin and at 5c8b880 writes byte-identical files for every fixture in truehd/tests/assets and every sample at presentations 0 to 3 (60 decodes). cargo test --release is 8/8, and AetherEngine's suite passes against this build.

Same C API (API version unchanged), same slices and minimum OS versions. No wrapper change.