membraneframework / membrane_core

The core of the Membrane Framework, multimedia processing framework written in Elixir
https://membrane.stream
Apache License 2.0
1.29k stars 36 forks source link

[membrane_aac_plugin] Add support for LATM/LOAS encapsulation #762

Closed kidq330 closed 7 months ago

kidq330 commented 7 months ago

As per #682, to add support for RFC6416 in the AAC (de)payloaders we should extend the AAC parser's functionality to be able to convert between the different types of AAC encapsulations, including LATM/LOAS.

kidq330 commented 7 months ago

Since it was decided to put this task on hold, I'm doccumenting the research effort up until now.

Relevant specs: ISO/IEC 14496 (2009) Part 3 - Audio, subclause 1.7 - LOAS and LATM specification RFC3640 - AAC over RTP, MPEG4-Generic RFC5691 - Contains application of RFC3640 RFC6416 - AAC over RTP, MP4A-LATM, obsoletes 3016 which sometimes comes up in discussions.

Relevant implementations: AAC decoder in opencore-amr/fdk-aac AAC encoder in opencore-amr/fdk-aac ffmpeg LATM encoder (muxer?) gstreamer PRs for LATM (not yet merged): fdkaac: Add support for LATM/LOAS aacparse/rtpmp4apay/depay: Add support for LATM Microsoft Media Foundation AAC Decoder

Miscellaneous: MultimediaWiki, RTSP streams that supposedly use MP4A-LATM - https://wiki.multimedia.cx/index.php/RTSP ffmpeg ADTS AAC to AudioSpecificConfig bitstream filter https://stackoverflow.com/questions/59854620/missing-element-mpeg4-generic-audio-rtp-depayloader-gstreamer https://github.com/mstorsjo/fdk-aac/issues/85 https://www.wowza.com/docs/enable-the-mp4a-latm-media-type-for-aac-audio https://github.com/carsten-gross/ts2shout/issues/3

FraunhoferIIS_Application-Bulletin_AAC-Transport-Formats.pdf

darthez commented 7 months ago

Turned out to be waaaay too complex; effort benefit ratio sucks.