mirror of
https://github.com/storytold/craft-libs.git
synced 2026-11-14 06:22:24 +00:00
* craft-audio: LOAS / LATM framing in the aac module latm_config and latm_split give a LOAS frame's AudioSpecificConfig and the payload of its sub-frame: one program, one layer, AAC-LC, frameLengthType 0, audioMuxVersion 0 or 1. LATM is an AAC transport, so it belongs with the AAC decoder (feature aac-decode). Moved from FilmCraft's filmcraft-codecs (crates/codecs/src/audio.rs at storytold/filmcraft@db60ee4), with its payload-length test; new tests for a round trip, the refused cases and mutated frames. * craft-audio: LATM takes its channel count from the configuration's layout The channel configuration is an index into ISO/IEC 14496-3 Table 1.19: 7 and 12 are eight channels and 11 is seven, and 8-10 and 13-15 are reserved. latm_config reported the index as the count, and a reserved configuration as that many channels; it now sums the layout and refuses a reserved one. Ported from storytold/filmcraft#4297. * craft-audio: LATM reads a program config element in its StreamMuxConfig With channel configuration 0 the layout is in a program config element. latm_config ignored it and reported two channels, so 5.1 in LATM played as silent stereo. It now reads the element (lining the bits up first, since the AudioSpecificConfig starts at any bit of the frame and the element aligns to its bytes), puts it in the AudioSpecificConfig the decoder gets, and refuses the stream when the element does not parse. With audioMuxVersion 1, what ascLen counts past the configuration is skipped as fill. Ported from storytold/filmcraft#4280 (the LATM part). * craft-audio: README names the LATM functions * craft-audio: rustfmt the LATM module --------- Co-authored-by: mpratsaki <110930793+mpratsaki@users.noreply.github.com>