diff --git a/g3doc/sitemap.md b/g3doc/sitemap.md index e58bf9d7ce..5e0a9a8f77 100644 --- a/g3doc/sitemap.md +++ b/g3doc/sitemap.md @@ -17,6 +17,8 @@ * AudioEngine * [ADM](/modules/audio_device/g3doc/audio_device_module.md) * [Audio Coding](/modules/audio_coding/g3doc/index.md) + * AudioProcessingModule + * [APM](/modules/audio_processing/g3doc/audio_processing_module.md) * Video * DataChannel * PeerConnection diff --git a/modules/audio_processing/g3doc/audio_processing_module.md b/modules/audio_processing/g3doc/audio_processing_module.md new file mode 100644 index 0000000000..bb80dc9882 --- /dev/null +++ b/modules/audio_processing/g3doc/audio_processing_module.md @@ -0,0 +1,26 @@ +# Audio Processing Module (APM) + + + + +## 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.