This CL adds the basic framework for AEC3 in the audio processing module.
It will be followed by a number of other CLs that extends this framework.

BUG=webrtc:6018

Review-Url: https://codereview.webrtc.org/2567513003
Cr-Commit-Position: refs/heads/master@{#15593}
diff --git a/webrtc/modules/audio_processing/audio_processing_impl.h b/webrtc/modules/audio_processing/audio_processing_impl.h
index 0375a25..ae4d89b 100644
--- a/webrtc/modules/audio_processing/audio_processing_impl.h
+++ b/webrtc/modules/audio_processing/audio_processing_impl.h
@@ -168,6 +168,7 @@
                 bool beamformer_enabled,
                 bool adaptive_gain_controller_enabled,
                 bool level_controller_enabled,
+                bool echo_canceller3_enabled,
                 bool voice_activity_detector_enabled,
                 bool level_estimator_enabled,
                 bool transient_suppressor_enabled);
@@ -186,6 +187,7 @@
     bool beamformer_enabled_ = false;
     bool adaptive_gain_controller_enabled_ = false;
     bool level_controller_enabled_ = false;
+    bool echo_canceller3_enabled_ = false;
     bool level_estimator_enabled_ = false;
     bool voice_activity_detector_enabled_ = false;
     bool transient_suppressor_enabled_ = false;
@@ -251,6 +253,7 @@
   void InitializeResidualEchoDetector()
       EXCLUSIVE_LOCKS_REQUIRED(crit_render_, crit_capture_);
   void InitializeLowCutFilter() EXCLUSIVE_LOCKS_REQUIRED(crit_capture_);
+  void InitializeEchoCanceller3() EXCLUSIVE_LOCKS_REQUIRED(crit_capture_);
 
   void EmptyQueuedRenderAudio();
   void AllocateRenderQueue()
@@ -382,6 +385,7 @@
     bool beamformer_enabled;
     bool intelligibility_enabled;
     bool level_controller_enabled = false;
+    bool echo_canceller3_enabled = false;
   } capture_nonlocked_;
 
   struct ApmRenderState {