Redesign of the render buffering in AEC3

This CL centralizes the render buffering in AEC3 so that all render
buffers are updated and synchronized/aligned with the render alignment
buffer.

Bug: webrtc:8597, chromium:790905
Change-Id: I8a94e5c1f27316b6100b420eec9652ea31c1a91d
Reviewed-on: https://webrtc-review.googlesource.com/25680
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20989}
This commit is contained in:
Per Åhgren
2017-12-01 23:01:44 +01:00
committed by Commit Bot
parent f388803265
commit 8ba5861f7e
55 changed files with 1213 additions and 804 deletions

View File

@ -160,7 +160,7 @@ class EchoCanceller3Tester {
// output.
void RunCaptureTransportVerificationTest() {
EchoCanceller3 aec3(
sample_rate_hz_, false,
EchoCanceller3Config(), sample_rate_hz_, false,
std::unique_ptr<BlockProcessor>(
new CaptureTransportVerificationProcessor(num_bands_)));
@ -185,7 +185,7 @@ class EchoCanceller3Tester {
// block processor.
void RunRenderTransportVerificationTest() {
EchoCanceller3 aec3(
sample_rate_hz_, false,
EchoCanceller3Config(), sample_rate_hz_, false,
std::unique_ptr<BlockProcessor>(
new RenderTransportVerificationProcessor(num_bands_)));
@ -249,7 +249,7 @@ class EchoCanceller3Tester {
break;
}
EchoCanceller3 aec3(sample_rate_hz_, false,
EchoCanceller3 aec3(EchoCanceller3Config(), sample_rate_hz_, false,
std::move(block_processor_mock));
for (size_t frame_index = 0; frame_index < kNumFramesToProcess;
@ -331,7 +331,7 @@ class EchoCanceller3Tester {
} break;
}
EchoCanceller3 aec3(sample_rate_hz_, false,
EchoCanceller3 aec3(EchoCanceller3Config(), sample_rate_hz_, false,
std::move(block_processor_mock));
for (size_t frame_index = 0; frame_index < kNumFramesToProcess;
@ -420,7 +420,7 @@ class EchoCanceller3Tester {
} break;
}
EchoCanceller3 aec3(sample_rate_hz_, false,
EchoCanceller3 aec3(EchoCanceller3Config(), sample_rate_hz_, false,
std::move(block_processor_mock));
for (size_t frame_index = 0; frame_index < kNumFramesToProcess;
++frame_index) {
@ -458,12 +458,13 @@ class EchoCanceller3Tester {
// This test verifies that the swapqueue is able to handle jitter in the
// capture and render API calls.
void RunRenderSwapQueueVerificationTest() {
const EchoCanceller3Config config;
EchoCanceller3 aec3(
sample_rate_hz_, false,
config, sample_rate_hz_, false,
std::unique_ptr<BlockProcessor>(
new RenderTransportVerificationProcessor(num_bands_)));
for (size_t frame_index = 0; frame_index < kRenderTransferQueueSize;
for (size_t frame_index = 0; frame_index < kRenderTransferQueueSizeFrames;
++frame_index) {
if (sample_rate_hz_ > 16000) {
render_buffer_.SplitIntoFrequencyBands();
@ -478,7 +479,7 @@ class EchoCanceller3Tester {
aec3.AnalyzeRender(&render_buffer_);
}
for (size_t frame_index = 0; frame_index < kRenderTransferQueueSize;
for (size_t frame_index = 0; frame_index < kRenderTransferQueueSizeFrames;
++frame_index) {
aec3.AnalyzeCapture(&capture_buffer_);
if (sample_rate_hz_ > 16000) {