Index: webrtc/modules/audio_processing/aec3/residual_echo_estimator_unittest.cc |
diff --git a/webrtc/modules/audio_processing/aec3/residual_echo_estimator_unittest.cc b/webrtc/modules/audio_processing/aec3/residual_echo_estimator_unittest.cc |
index 79e6ff0a483cfa8ecefeabb4b4df6b1ce57afb9e..824467d9dd3241a66a50d81e53ed59eae18b35bc 100644 |
--- a/webrtc/modules/audio_processing/aec3/residual_echo_estimator_unittest.cc |
+++ b/webrtc/modules/audio_processing/aec3/residual_echo_estimator_unittest.cc |
@@ -10,8 +10,6 @@ |
#include "webrtc/modules/audio_processing/aec3/residual_echo_estimator.h" |
-// TODO(peah): Reactivate once the next CL has landed. |
-#if 0 |
#include "webrtc/base/random.h" |
#include "webrtc/modules/audio_processing/aec3/aec_state.h" |
#include "webrtc/modules/audio_processing/aec3/aec3_fft.h" |
@@ -22,20 +20,16 @@ namespace webrtc { |
#if RTC_DCHECK_IS_ON && GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID) |
-// Verifies that the check for non-null output gains works. |
-TEST(ResidualEchoEstimator, NullOutputGains) { |
+// Verifies that the check for non-null output residual echo power works. |
+TEST(ResidualEchoEstimator, NullResidualEchoPowerOutput) { |
AecState aec_state; |
- FftBuffer X_buffer(Aec3Optimization::kNone, 10, std::vector<size_t>(1, 10)); |
+ RenderBuffer render_buffer(Aec3Optimization::kNone, 3, 10, |
+ std::vector<size_t>(1, 10)); |
std::vector<std::array<float, kFftLengthBy2Plus1>> H2; |
- std::array<float, kFftLengthBy2Plus1> E2_main; |
- std::array<float, kFftLengthBy2Plus1> E2_shadow; |
std::array<float, kFftLengthBy2Plus1> S2_linear; |
- std::array<float, kFftLengthBy2Plus1> S2_fallback; |
std::array<float, kFftLengthBy2Plus1> Y2; |
- |
- EXPECT_DEATH(ResidualEchoEstimator().Estimate(true, aec_state, X_buffer, H2, |
- E2_main, E2_shadow, S2_linear, |
- S2_fallback, Y2, nullptr), |
+ EXPECT_DEATH(ResidualEchoEstimator().Estimate(true, aec_state, render_buffer, |
+ S2_linear, Y2, nullptr), |
""); |
} |
@@ -44,7 +38,8 @@ TEST(ResidualEchoEstimator, NullOutputGains) { |
TEST(ResidualEchoEstimator, BasicTest) { |
ResidualEchoEstimator estimator; |
AecState aec_state; |
- FftBuffer X_buffer(Aec3Optimization::kNone, 10, std::vector<size_t>(1, 10)); |
+ RenderBuffer render_buffer(Aec3Optimization::kNone, 3, 10, |
+ std::vector<size_t>(1, 10)); |
std::array<float, kFftLengthBy2Plus1> E2_main; |
std::array<float, kFftLengthBy2Plus1> E2_shadow; |
std::array<float, kFftLengthBy2Plus1> S2_linear; |
@@ -52,7 +47,7 @@ TEST(ResidualEchoEstimator, BasicTest) { |
std::array<float, kFftLengthBy2Plus1> Y2; |
std::array<float, kFftLengthBy2Plus1> R2; |
EchoPathVariability echo_path_variability(false, false); |
- std::array<float, kBlockSize> x; |
+ std::vector<std::vector<float>> x(3, std::vector<float>(kBlockSize, 0.f)); |
std::vector<std::array<float, kFftLengthBy2Plus1>> H2(10); |
Random random_generator(42U); |
FftData X; |
@@ -63,6 +58,7 @@ TEST(ResidualEchoEstimator, BasicTest) { |
H2_k.fill(0.01f); |
} |
H2[2].fill(10.f); |
+ H2[2][0] = 0.1f; |
constexpr float kLevel = 10.f; |
E2_shadow.fill(kLevel); |
@@ -71,21 +67,20 @@ TEST(ResidualEchoEstimator, BasicTest) { |
S2_fallback.fill(kLevel); |
Y2.fill(kLevel); |
- for (int k = 0; k < 100; ++k) { |
- RandomizeSampleVector(&random_generator, x); |
- fft.PaddedFft(x, x_old, &X); |
- X_buffer.Insert(X); |
+ for (int k = 0; k < 2000; ++k) { |
+ RandomizeSampleVector(&random_generator, x[0]); |
+ std::for_each(x[0].begin(), x[0].end(), [](float& a) { a /= 30.f; }); |
+ fft.PaddedFft(x[0], x_old, &X); |
+ render_buffer.Insert(x); |
- aec_state.Update(H2, rtc::Optional<size_t>(2), X_buffer, E2_main, E2_shadow, |
- Y2, x, echo_path_variability, false); |
+ aec_state.HandleEchoPathChange(echo_path_variability); |
+ aec_state.Update(H2, rtc::Optional<size_t>(2), render_buffer, E2_main, Y2, |
+ x[0], false); |
- estimator.Estimate(true, aec_state, X_buffer, H2, E2_main, E2_shadow, |
- S2_linear, S2_fallback, Y2, &R2); |
+ estimator.Estimate(true, aec_state, render_buffer, S2_linear, Y2, &R2); |
} |
std::for_each(R2.begin(), R2.end(), |
[&](float a) { EXPECT_NEAR(kLevel, a, 0.1f); }); |
} |
} // namespace webrtc |
- |
-#endif |