27 lines
1.3 KiB
Markdown
27 lines
1.3 KiB
Markdown
|
|
# Audio Processing Module (APM)
|
||
|
|
|
||
|
|
<?% config.freshness.owner = 'peah' %?>
|
||
|
|
<?% config.freshness.reviewed = '2021-04-13' %?>
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
The APM is responsible for applying speech enhancements effects to the
|
||
|
|
microphone signal. These effects are required for VoIP calling and some
|
||
|
|
examples include echo cancellation (AEC), noise suppression (NS) and
|
||
|
|
automatic gain control (AGC).
|
||
|
|
|
||
|
|
The API for APM resides in [`/modules/audio_processing/include`][https://source.chromium.org/chromium/chromium/src/+/master:third_party/webrtc/modules/audio_processing/include].
|
||
|
|
APM is created using the [`AudioProcessingBuilder`][https://source.chromium.org/chromium/chromium/src/+/master:third_party/webrtc/modules/audio_processing/include/audio_processing.h]
|
||
|
|
builder that allows it to be customized and configured.
|
||
|
|
|
||
|
|
Some specific aspects of APM include that:
|
||
|
|
* APM is fully thread-safe in that it can be accessed concurrently from
|
||
|
|
different threads.
|
||
|
|
* APM handles for any input sample rates < 384 kHz and achieves this by
|
||
|
|
automatic reconfiguration whenever a new sample format is observed.
|
||
|
|
* APM handles any number of microphone channels and loudspeaker channels, with
|
||
|
|
the same automatic reconfiguration as for the sample rates.
|
||
|
|
|
||
|
|
|
||
|
|
APM can either be used as part of the WebRTC native pipeline, or standalone.
|