Source code

Revision control

Copy as Markdown

Other Tools

<!-- go/cmark -->
<!--* freshness: {owner: 'hlundin' reviewed: '2021-04-13'} *-->
# The WebRTC Audio Coding Module
WebRTC audio coding module can handle both audio sending and receiving. Folder
[`acm2`][acm2] contains implementations of the APIs.
* Audio Sending Audio frames, each of which should always contain 10 ms worth
of data, are provided to the audio coding module through
[`Add10MsData()`][Add10MsData]. The audio coding module uses a provided
audio encoder to encoded audio frames and deliver the data to a
pre-registered audio packetization callback, which is supposed to wrap the
encoded audio into RTP packets and send them over a transport. Built-in
audio codecs are included the [`codecs`][codecs] folder. The
[audio network adaptor][ANA] provides an add-on functionality to an audio
encoder (currently limited to Opus) to make the audio encoder adaptive to
network conditions (bandwidth, packet loss rate, etc).
* Audio Receiving Audio packets are provided to the audio coding module
through [`IncomingPacket()`][IncomingPacket], and are processed by an audio
jitter buffer ([NetEq][NetEq]), which includes decoding of the packets.
Audio decoders are provided by an audio decoder factory. Decoded audio
samples should be queried by calling [`PlayoutData10Ms()`][PlayoutData10Ms].