Chromium Code Reviews| 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..7baa210a79a8dbe224e5195b3fd959f2225e6002 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. |
| +#if RTC_HAS_MSAN |
| + Config& operator=(const Config& config) { |
| + if (this != &config) { |
| + memcpy(this, &config, sizeof(*this)); |
| + } |
| + return *this; |
| + } |
| +#endif |
|
kwiberg-webrtc
2017/08/24 17:46:39
If we're lucky, you can do
#else
static_asser
|
| }; |
| // TODO(mgraczyk): Remove once all methods that use ChannelLayout are gone. |