Move AEC3 configuration to its own file under api/audio
This is one of several small steps of separating APM and AEC3.
Bug: webrtc:8844
Change-Id: Ib6e518fec5f7566cab3823ab35fcede8433f8f4e
Reviewed-on: https://webrtc-review.googlesource.com/53142
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Per Ã…hgren <peah@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22028}
diff --git a/modules/audio_processing/include/audio_processing.h b/modules/audio_processing/include/audio_processing.h
index e3bcb3e..457d97a 100644
--- a/modules/audio_processing/include/audio_processing.h
+++ b/modules/audio_processing/include/audio_processing.h
@@ -22,6 +22,7 @@
#include <string.h>
#include <vector>
+#include "api/audio/echo_canceller3_config.h"
#include "api/optional.h"
#include "modules/audio_processing/beamformer/array_util.h"
#include "modules/audio_processing/include/audio_processing_statistics.h"
@@ -1161,98 +1162,6 @@
virtual ~VoiceDetection() {}
};
-// Configuration struct for EchoCanceller3
-struct EchoCanceller3Config {
- struct Delay {
- size_t default_delay = 5;
- size_t down_sampling_factor = 4;
- size_t num_filters = 4;
- size_t api_call_jitter_blocks = 26;
- size_t min_echo_path_delay_blocks = 0;
- size_t delay_headroom_blocks = 2;
- size_t hysteresis_limit_1_blocks = 1;
- size_t hysteresis_limit_2_blocks = 1;
- } delay;
-
- struct Filter {
- struct MainConfiguration {
- size_t length_blocks;
- float leakage_converged;
- float leakage_diverged;
- float error_floor;
- float noise_gate;
- };
-
- struct ShadowConfiguration {
- size_t length_blocks;
- float rate;
- float noise_gate;
- };
-
- MainConfiguration main = {13, 0.005f, 0.1f, 0.001f, 20075344.f};
- ShadowConfiguration shadow = {13, 0.7f, 20075344.f};
-
- MainConfiguration main_initial = {12, 0.05f, 5.f, 0.001f, 20075344.f};
- ShadowConfiguration shadow_initial = {12, 0.9f, 20075344.f};
- } filter;
-
- struct Erle {
- float min = 1.f;
- float max_l = 8.f;
- float max_h = 1.5f;
- } erle;
-
- struct EpStrength {
- float lf = 10.f;
- float mf = 10.f;
- float hf = 10.f;
- float default_len = 0.f;
- bool echo_can_saturate = true;
- bool bounded_erl = false;
- } ep_strength;
-
- struct Mask {
- float m1 = 0.01f;
- float m2 = 0.0001f;
- float m3 = 0.01f;
- float m4 = 0.1f;
- float m5 = 0.1f;
- float m6 = 0.0001f;
- float m7 = 0.01f;
- float m8 = 0.0001f;
- float m9 = 0.1f;
- } gain_mask;
-
- struct EchoAudibility {
- float low_render_limit = 4 * 64.f;
- float normal_render_limit = 64.f;
- } echo_audibility;
-
- struct RenderLevels {
- float active_render_limit = 100.f;
- float poor_excitation_render_limit = 150.f;
- } render_levels;
-
- struct GainUpdates {
- struct GainChanges {
- float max_inc;
- float max_dec;
- float rate_inc;
- float rate_dec;
- float min_inc;
- float min_dec;
- };
-
- GainChanges low_noise = {2.f, 2.f, 1.4f, 1.4f, 1.1f, 1.1f};
- GainChanges initial = {2.f, 2.f, 1.5f, 1.5f, 1.2f, 1.2f};
- GainChanges normal = {2.f, 2.f, 1.5f, 1.5f, 1.2f, 1.2f};
- GainChanges saturation = {1.2f, 1.2f, 1.5f, 1.5f, 1.f, 1.f};
- GainChanges nonlinear = {1.5f, 1.5f, 1.2f, 1.2f, 1.1f, 1.1f};
-
- float floor_first_increase = 0.00001f;
- } gain_updates;
-};
-
class EchoCanceller3Factory : public EchoControlFactory {
public:
EchoCanceller3Factory();