Index: webrtc/modules/audio_processing/include/audio_processing.h |
diff --git a/webrtc/modules/audio_processing/include/audio_processing.h b/webrtc/modules/audio_processing/include/audio_processing.h |
index 0a0951791abc623dd2932a5f54011a2e9d1cbfb5..de77bac30ae04f796f7803331acc76680a46212d 100644 |
--- a/webrtc/modules/audio_processing/include/audio_processing.h |
+++ b/webrtc/modules/audio_processing/include/audio_processing.h |
@@ -17,6 +17,7 @@ |
#include <math.h> |
#include <stddef.h> // size_t |
#include <stdio.h> // FILE |
+#include <string.h> |
#include <vector> |
#include "webrtc/modules/audio_processing/beamformer/array_util.h" |
@@ -267,6 +268,49 @@ class AudioProcessing : public rtc::RefCountInterface { |
// The functionality is not yet activated in the code and turning this on |
// does not yet have the desired behavior. |
struct EchoCanceller3 { |
+ struct Param { |
+ struct Erle { |
+ float min = 1.f; |
+ float max_l = 8.f; |
+ float max_h = 1.5f; |
+ } erle; |
+ |
+ struct EpStrength { |
+ float lf = 100.f; |
+ float mf = 1000.f; |
+ float hf = 5000.f; |
+ float default_len = 0.7f; |
+ } ep_strength; |
+ |
+ struct Mask { |
+ float m1 = 0.01f; |
+ float m2 = 0.001f; |
+ float m3 = 0.01f; |
+ float m4 = 0.1f; |
+ } gain_mask; |
+ |
+ struct EchoAudibility { |
+ float low_render_limit = 192.f; |
+ float normal_render_limit = 64.f; |
+ } echo_audibility; |
+ |
+ 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 = {8.f, 8.f, 2.f, 2.f, 4.f, 4.f}; |
+ GainChanges normal = {4.f, 4.f, 2.f, 2.f, 1.2f, 2.f}; |
+ GainChanges saturation = {1.2f, 1.2f, 1.5f, 1.5f, 1.f, 1.f}; |
+ |
+ float floor_first_increase = 0.001f; |
+ } gain_updates; |
+ } param; |
bool enabled = false; |
} echo_canceller3; |
@@ -277,6 +321,17 @@ class AudioProcessing : public rtc::RefCountInterface { |
struct GainController2 { |
bool enabled = false; |
} gain_controller2; |
+ |
+ // Explicit copy assignment implementation to avoid issues with memory |
+ // sanitizer complaints in case of self-assignment. |
+ // TODO(peah): Add buildflag to ensure that this is only included for memory |
+ // sanitizer builds. |
+ Config& operator=(const Config& config) { |
+ if (this != &config) { |
+ memcpy(this, &config, sizeof(*this)); |
+ } |
+ return *this; |
+ } |
}; |
// TODO(mgraczyk): Remove once all methods that use ChannelLayout are gone. |