| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  *  Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. | 2  *  Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. | 
| 3  * | 3  * | 
| 4  *  Use of this source code is governed by a BSD-style license | 4  *  Use of this source code is governed by a BSD-style license | 
| 5  *  that can be found in the LICENSE file in the root of the source | 5  *  that can be found in the LICENSE file in the root of the source | 
| 6  *  tree. An additional intellectual property rights grant can be found | 6  *  tree. An additional intellectual property rights grant can be found | 
| 7  *  in the file PATENTS.  All contributing project authors may | 7  *  in the file PATENTS.  All contributing project authors may | 
| 8  *  be found in the AUTHORS file in the root of the source tree. | 8  *  be found in the AUTHORS file in the root of the source tree. | 
| 9  */ | 9  */ | 
| 10 | 10 | 
| 11 #ifndef WEBRTC_MODULES_AUDIO_PROCESSING_AEC3_ECHO_REMOVER_H_ | 11 #ifndef WEBRTC_MODULES_AUDIO_PROCESSING_AEC3_ECHO_REMOVER_H_ | 
| 12 #define WEBRTC_MODULES_AUDIO_PROCESSING_AEC3_ECHO_REMOVER_H_ | 12 #define WEBRTC_MODULES_AUDIO_PROCESSING_AEC3_ECHO_REMOVER_H_ | 
| 13 | 13 | 
| 14 #include <vector> | 14 #include <vector> | 
| 15 | 15 | 
| 16 #include "webrtc/base/optional.h" | 16 #include "webrtc/base/optional.h" | 
| 17 #include "webrtc/modules/audio_processing/aec3/echo_path_variability.h" | 17 #include "webrtc/modules/audio_processing/aec3/echo_path_variability.h" | 
|  | 18 #include "webrtc/modules/audio_processing/aec3/render_buffer.h" | 
| 18 | 19 | 
| 19 namespace webrtc { | 20 namespace webrtc { | 
| 20 | 21 | 
| 21 // Class for removing the echo from the capture signal. | 22 // Class for removing the echo from the capture signal. | 
| 22 class EchoRemover { | 23 class EchoRemover { | 
| 23  public: | 24  public: | 
| 24   static EchoRemover* Create(int sample_rate_hz); | 25   static EchoRemover* Create(int sample_rate_hz); | 
| 25   virtual ~EchoRemover() = default; | 26   virtual ~EchoRemover() = default; | 
| 26 | 27 | 
| 27   // Removes the echo from a block of samples from the capture signal. The | 28   // Removes the echo from a block of samples from the capture signal. The | 
| 28   // supplied render signal is assumed to be pre-aligned with the capture | 29   // supplied render signal is assumed to be pre-aligned with the capture | 
| 29   // signal. | 30   // signal. | 
| 30   virtual void ProcessBlock( | 31   virtual void ProcessCapture( | 
| 31       const rtc::Optional<size_t>& echo_path_delay_samples, | 32       const rtc::Optional<size_t>& echo_path_delay_samples, | 
| 32       const EchoPathVariability& echo_path_variability, | 33       const EchoPathVariability& echo_path_variability, | 
| 33       bool capture_signal_saturation, | 34       bool capture_signal_saturation, | 
| 34       const std::vector<std::vector<float>>& render, | 35       const RenderBuffer& render_buffer, | 
| 35       std::vector<std::vector<float>>* capture) = 0; | 36       std::vector<std::vector<float>>* capture) = 0; | 
| 36 | 37 | 
| 37   // Updates the status on whether echo leakage is detected in the output of the | 38   // Updates the status on whether echo leakage is detected in the output of the | 
| 38   // echo remover. | 39   // echo remover. | 
| 39   virtual void UpdateEchoLeakageStatus(bool leakage_detected) = 0; | 40   virtual void UpdateEchoLeakageStatus(bool leakage_detected) = 0; | 
| 40 }; | 41 }; | 
| 41 | 42 | 
| 42 }  // namespace webrtc | 43 }  // namespace webrtc | 
| 43 | 44 | 
| 44 #endif  // WEBRTC_MODULES_AUDIO_PROCESSING_AEC3_ECHO_REMOVER_H_ | 45 #endif  // WEBRTC_MODULES_AUDIO_PROCESSING_AEC3_ECHO_REMOVER_H_ | 
| OLD | NEW | 
|---|