Skip to content

3.2.0 - interpolation out of the shipped binary again

Latest

Choose a tag to compare

@superuser404notfound superuser404notfound released this 05 Nov 08:08

Changed

  • The shipped library leaves matrix interpolation out again. matrix-interpolation is opt-in once more, as in 3.0.0: ./build.sh builds without it, so the interpolating decode is not compiled into the binary, and every handle reads a stream's interpolation values and discards them. Channel-based presentations (2.0, 5.1, 7.1) carry no interpolation and stay bit-exact; the object presentation (3) of a stream that interpolates decodes approximately. AetherEngine's TrueHD path no longer needs the exact object decode: it builds every output from the stream's lossless channel presentation and reads the object presentation only as statistics (AetherEngine#731).
  • TRUEHD_ATMOS_FEATURES=matrix-interpolation builds (and harness/verify.sh checks) the exact decoder for measurements. TRUEHD_ATMOS_NO_INTERPOLATION is no longer read.

API, ABI (API 2, 112-byte TrueHDAtmosBlock), the bed companion and the per-handle truehd_atmos_decoder_set_ignore_interpolation are unchanged. Every static slice is about 11 KB smaller.

Verification

harness/verify.sh passes in full against a non-interpolating truehdd CLI at the same pin (superuser404notfound/truehdd@33bae16): PCM bit-exact on every sample and fixture (Dolby "Unfold" included, whose object presentation interpolates), object metadata, reset and seek, arbitrary chunking, every slice links, both link orders next to a second Rust library, Swift through the module map. cargo test is 12/12.

Same slices and minimum OS versions.

Full diff: 3.1.0...3.2.0