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. |