Skip to content

fdkaac: Add support for LATM and LOAS

ISO/IEC 14496-3 (MPEG-4 Audio) defines the LATM/LOAS mechanism to transport streams without using ISO/IEC 14496-1 (MPEG-4 Systems) for audio only applications. The transport mechanism uses a two-layer approach, namely a multiplex layer and a synchronization layer. The multiplex layer viz. (Low-overhead MPEG-4 Audio Transport Multiplex: LATM) manages multiplexing of several MPEG-4 Audio payloads and their AudioSpecificConfig elements. LATM might be considered as LOAS without the synchronization layer.

As per the spec, the multiplexed element viz. AudioMuxElement without synchronization shall only be used for transmission channels where the underlying transport layer already provides frame synchronization. An example case is using AAC with bluetooth.

LATM MCP1 encoded data can be payloaded in RTP for sending the AAC stream via bluetooth.

For details on bitstream, see the Fraunhofer IIS Application Bulletin on AAC transport formats. https://www.iis.fraunhofer.de/content/dam/iis/de/doc/ame/wp/FraunhoferIIS_Application-Bulletin_AAC-Transport-Formats.pdf

Note that muxConfigPresent needs to be set at the application layer and signals whether the configuration is sent within or outside the stream. This cannot be determined by parsing the bitstream. We introduce two different stream formats to be able to distinguish between the MCP0 and MCP1 case, viz. latm-mcp0/1.

Support in aacparser, rtpmp4apay/depay is here.

LATM support has been tested in PulseAudio for both encode and decode. See this MR.

Edited by Sanchayan Maity

Merge request reports