Skip to content

v0.2.2

Choose a tag to compare

@MejiroRina MejiroRina released this 02 Jun 12:27
· 40 commits to main since this release
5d8a366

Speeds up HCA decoding, AFS cue lookup and USM extraction with bit-identical output, and adds streaming 16-bit PCM decoding. This release is built from main and does not contain the in-memory extraction APIs from 0.2.1.

⚠️ Breaking changes

  • 0.2.1 was tagged from a branch that was never merged, so this release does not have its additions: Rust extract_acb_to_memory, extract_usm_to_memory, ExtractedAcbTrack and ExtractedUsmStream, Python extract_acb_bytes and extract_usm_bytes, and the cridecoder.pyi stubs. If you use them, stay on 0.2.1 or move to 0.2.3, which brings the Rust functions back (its ExtractedUsmStream has a name field where 0.2.1 had filename). Python in-memory extraction returns, with different signatures, in 0.3.2, and the stubs in 0.3.0. (f776365)

Added

  • Decode HCA straight to interleaved 16-bit PCM, one frame at a time (decode_frame_i16) or as chunks passed to a callback (decode_to_pcm16_chunks). Chunks hold only valid samples after encoder-delay trimming, so audio can be piped into another encoder without an intermediate WAV file. (5d8a366)

Performance

  • Speed up HCA decoding with bit-exact WAV output: specialized IMDCT stages with constant tables, a faster block decode and PCM conversion, and a reused WAV output buffer. (5d8a366, 16ec188, bce2891, a9a15d5, a822089, ee2cb3d, 8833391)
  • Speed up AFS cue lookup and the extraction of unmasked USM chunks. (5d8a366)

Artifacts

Maintenance
  • Bump PyO3 from 0.28.2 to 0.28.3. (#4)
  • Bump serde_json from 1.0.149 to 1.0.150. (#3)
  • Bump actions/setup-python from 5 to 6. (#2)
  • Exclude editor and build leftovers from the published crate. (8833391)

Full Changelog: v0.2.1...v0.2.2