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

Side by Side Diff: webrtc/modules/audio_processing/aec3/render_delay_controller_unittest.cc

Issue 3011193002: Removed the timeout for the delay estimate quality. (Closed)
Patch Set: Fixed unit tests Created 3 years, 3 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 unified diff | Download patch
OLDNEW
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
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 TEST(RenderDelayController, NoRenderSignal) { 46 TEST(RenderDelayController, NoRenderSignal) {
47 std::vector<float> block(kBlockSize, 0.f); 47 std::vector<float> block(kBlockSize, 0.f);
48 for (auto rate : {8000, 16000, 32000, 48000}) { 48 for (auto rate : {8000, 16000, 32000, 48000}) {
49 SCOPED_TRACE(ProduceDebugText(rate)); 49 SCOPED_TRACE(ProduceDebugText(rate));
50 std::unique_ptr<RenderDelayBuffer> delay_buffer( 50 std::unique_ptr<RenderDelayBuffer> delay_buffer(
51 RenderDelayBuffer::Create(NumBandsForRate(rate))); 51 RenderDelayBuffer::Create(NumBandsForRate(rate)));
52 std::unique_ptr<RenderDelayController> delay_controller( 52 std::unique_ptr<RenderDelayController> delay_controller(
53 RenderDelayController::Create(AudioProcessing::Config::EchoCanceller3(), 53 RenderDelayController::Create(AudioProcessing::Config::EchoCanceller3(),
54 rate)); 54 rate));
55 for (size_t k = 0; k < 100; ++k) { 55 for (size_t k = 0; k < 100; ++k) {
56 EXPECT_EQ(0u, delay_controller->GetDelay( 56 EXPECT_EQ(kMinEchoPathDelayBlocks,
57 delay_buffer->GetDownsampledRenderBuffer(), block)); 57 delay_controller->GetDelay(
58 delay_buffer->GetDownsampledRenderBuffer(), block));
58 } 59 }
59 } 60 }
60 } 61 }
61 62
62 // Verifies the basic API call sequence. 63 // Verifies the basic API call sequence.
63 TEST(RenderDelayController, BasicApiCalls) { 64 TEST(RenderDelayController, BasicApiCalls) {
64 std::vector<float> capture_block(kBlockSize, 0.f); 65 std::vector<float> capture_block(kBlockSize, 0.f);
65 size_t delay_blocks = 0; 66 size_t delay_blocks = 0;
66 for (auto rate : {8000, 16000, 32000, 48000}) { 67 for (auto rate : {8000, 16000, 32000, 48000}) {
67 std::vector<std::vector<float>> render_block( 68 std::vector<std::vector<float>> render_block(
68 NumBandsForRate(rate), std::vector<float>(kBlockSize, 0.f)); 69 NumBandsForRate(rate), std::vector<float>(kBlockSize, 0.f));
69 std::unique_ptr<RenderDelayBuffer> render_delay_buffer( 70 std::unique_ptr<RenderDelayBuffer> render_delay_buffer(
70 RenderDelayBuffer::Create(NumBandsForRate(rate))); 71 RenderDelayBuffer::Create(NumBandsForRate(rate)));
71 std::unique_ptr<RenderDelayController> delay_controller( 72 std::unique_ptr<RenderDelayController> delay_controller(
72 RenderDelayController::Create(AudioProcessing::Config::EchoCanceller3(), 73 RenderDelayController::Create(AudioProcessing::Config::EchoCanceller3(),
73 rate)); 74 rate));
74 for (size_t k = 0; k < 10; ++k) { 75 for (size_t k = 0; k < 10; ++k) {
75 render_delay_buffer->Insert(render_block); 76 render_delay_buffer->Insert(render_block);
76 render_delay_buffer->UpdateBuffers(); 77 render_delay_buffer->UpdateBuffers();
77 delay_blocks = delay_controller->GetDelay( 78 delay_blocks = delay_controller->GetDelay(
78 render_delay_buffer->GetDownsampledRenderBuffer(), capture_block); 79 render_delay_buffer->GetDownsampledRenderBuffer(), capture_block);
79 } 80 }
80 EXPECT_FALSE(delay_controller->AlignmentHeadroomSamples()); 81 EXPECT_FALSE(delay_controller->AlignmentHeadroomSamples());
81 EXPECT_EQ(0u, delay_blocks); 82 EXPECT_EQ(kMinEchoPathDelayBlocks, delay_blocks);
82 } 83 }
83 } 84 }
84 85
85 // Verifies that the RenderDelayController is able to align the signals for 86 // Verifies that the RenderDelayController is able to align the signals for
86 // simple timeshifts between the signals. 87 // simple timeshifts between the signals.
87 TEST(RenderDelayController, Alignment) { 88 TEST(RenderDelayController, Alignment) {
88 Random random_generator(42U); 89 Random random_generator(42U);
89 std::vector<float> capture_block(kBlockSize, 0.f); 90 std::vector<float> capture_block(kBlockSize, 0.f);
90 size_t delay_blocks = 0; 91 size_t delay_blocks = 0;
91 for (auto rate : {8000, 16000, 32000, 48000}) { 92 for (auto rate : {8000, 16000, 32000, 48000}) {
(...skipping 14 matching lines...) Expand all
106 render_delay_buffer->Insert(render_block); 107 render_delay_buffer->Insert(render_block);
107 render_delay_buffer->UpdateBuffers(); 108 render_delay_buffer->UpdateBuffers();
108 delay_blocks = delay_controller->GetDelay( 109 delay_blocks = delay_controller->GetDelay(
109 render_delay_buffer->GetDownsampledRenderBuffer(), capture_block); 110 render_delay_buffer->GetDownsampledRenderBuffer(), capture_block);
110 } 111 }
111 112
112 constexpr int kDelayHeadroomBlocks = 1; 113 constexpr int kDelayHeadroomBlocks = 1;
113 size_t expected_delay_blocks = 114 size_t expected_delay_blocks =
114 std::max(0, static_cast<int>(delay_samples / kBlockSize) - 115 std::max(0, static_cast<int>(delay_samples / kBlockSize) -
115 kDelayHeadroomBlocks); 116 kDelayHeadroomBlocks);
116 if (expected_delay_blocks < 2) {
117 expected_delay_blocks = 0;
118 }
119 117
120 EXPECT_EQ(expected_delay_blocks, delay_blocks); 118 EXPECT_EQ(expected_delay_blocks, delay_blocks);
121 119
122 const rtc::Optional<size_t> headroom_samples = 120 const rtc::Optional<size_t> headroom_samples =
123 delay_controller->AlignmentHeadroomSamples(); 121 delay_controller->AlignmentHeadroomSamples();
124 ASSERT_TRUE(headroom_samples); 122 ASSERT_TRUE(headroom_samples);
125 EXPECT_NEAR(delay_samples - delay_blocks * kBlockSize, *headroom_samples, 123 EXPECT_NEAR(delay_samples - delay_blocks * kBlockSize, *headroom_samples,
126 4); 124 4);
127 } 125 }
128 } 126 }
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 EXPECT_DEATH( 226 EXPECT_DEATH(
229 std::unique_ptr<RenderDelayController>(RenderDelayController::Create( 227 std::unique_ptr<RenderDelayController>(RenderDelayController::Create(
230 AudioProcessing::Config::EchoCanceller3(), rate)), 228 AudioProcessing::Config::EchoCanceller3(), rate)),
231 ""); 229 "");
232 } 230 }
233 } 231 }
234 232
235 #endif 233 #endif
236 234
237 } // namespace webrtc 235 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698