Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(246)

Unified Diff: webrtc/modules/audio_processing/aec3/residual_echo_estimator_unittest.cc

Issue 2782423003: Major updates to the echo removal functionality in AEC3 (Closed)
Patch Set: Added initialization of uninitialized vector Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698