summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/modules/audio_processing/g3doc/audio_processing_module.md
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libwebrtc/modules/audio_processing/g3doc/audio_processing_module.md')
-rw-r--r--third_party/libwebrtc/modules/audio_processing/g3doc/audio_processing_module.md26
1 files changed, 26 insertions, 0 deletions
diff --git a/third_party/libwebrtc/modules/audio_processing/g3doc/audio_processing_module.md b/third_party/libwebrtc/modules/audio_processing/g3doc/audio_processing_module.md
new file mode 100644
index 0000000000..a77f62fbaf
--- /dev/null
+++ b/third_party/libwebrtc/modules/audio_processing/g3doc/audio_processing_module.md
@@ -0,0 +1,26 @@
+<!-- go/cmark -->
+<!--* freshness: {owner: 'peah' reviewed: '2021-04-13'} *-->
+
+# 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/+/main:third_party/webrtc/modules/audio_processing/include].
+APM is created using the [`AudioProcessingBuilder`][https://source.chromium.org/chromium/chromium/src/+/main: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.