Index: webrtc/modules/audio_processing/aec3/residual_echo_estimator.h |
diff --git a/webrtc/modules/audio_processing/aec3/residual_echo_estimator.h b/webrtc/modules/audio_processing/aec3/residual_echo_estimator.h |
index 1334e63256b475b3a7bd024fe86fec792e1ff50b..6c8a7b26e4e18c77e03a56ea3d4145d03cd51bcd 100644 |
--- a/webrtc/modules/audio_processing/aec3/residual_echo_estimator.h |
+++ b/webrtc/modules/audio_processing/aec3/residual_echo_estimator.h |
@@ -36,8 +36,37 @@ class ResidualEchoEstimator { |
std::array<float, kFftLengthBy2Plus1>* R2); |
private: |
+ // Resets the state. |
+ void Reset(); |
+ |
+ // Estimates the residual echo power based on the echo return loss enhancement |
+ // (ERLE) and the linear power estimate. |
+ void LinearEstimate(const std::array<float, kFftLengthBy2Plus1>& S2_linear, |
+ const std::array<float, kFftLengthBy2Plus1>& erle, |
+ size_t delay, |
+ std::array<float, kFftLengthBy2Plus1>* R2); |
+ |
+ // Estimates the residual echo power based on the estimate of the echo path |
+ // gain. |
+ void NonLinearEstimate(const std::array<float, kFftLengthBy2Plus1>& X2, |
+ const std::array<float, kFftLengthBy2Plus1>& Y2, |
+ std::array<float, kFftLengthBy2Plus1>* R2); |
+ |
+ // Adds the estimated unmodelled echo power to the residual echo power |
+ // estimate. |
+ void AddEchoReverb(const std::array<float, kFftLengthBy2Plus1>& S2, |
+ bool saturated_echo, |
+ size_t delay, |
+ float reverb_decay_factor, |
+ std::array<float, kFftLengthBy2Plus1>* R2); |
+ |
std::array<float, kFftLengthBy2Plus1> R2_old_; |
std::array<int, kFftLengthBy2Plus1> R2_hold_counter_; |
+ std::array<float, kFftLengthBy2Plus1> R2_reverb_; |
+ int S2_old_index_ = 0; |
+ std::array<std::array<float, kFftLengthBy2Plus1>, kAdaptiveFilterLength> |
+ S2_old_; |
+ bool headset_detected_cached_ = false; |
RTC_DISALLOW_COPY_AND_ASSIGN(ResidualEchoEstimator); |
}; |