Corrections of the render buffering scheme in AEC3 to ensure causality
This CL modifies the refactored render buffering scheme in AEC3 so that: -A non-causal state can never occur which means that situations with nonrecoverable echo should not occur. -For a stable audio pipeline with a predefined API call jitter, render overruns and underruns can never occur. Bug: webrtc:8629,chromium:793305 Change-Id: I06ba1c368f92db95274090b08475dd02dbb85145 Reviewed-on: https://webrtc-review.googlesource.com/29861 Commit-Queue: Per Åhgren <peah@webrtc.org> Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org> Cr-Commit-Position: refs/heads/master@{#21215}
This commit is contained in:
@ -116,9 +116,6 @@ TEST(BlockProcessor, DISABLED_DelayControllerIntegration) {
|
||||
EXPECT_CALL(*render_delay_buffer_mock, Insert(_))
|
||||
.Times(kNumBlocks)
|
||||
.WillRepeatedly(Return(RenderDelayBuffer::BufferingEvent::kNone));
|
||||
EXPECT_CALL(*render_delay_buffer_mock, IsBlockAvailable())
|
||||
.Times(kNumBlocks)
|
||||
.WillRepeatedly(Return(true));
|
||||
EXPECT_CALL(*render_delay_buffer_mock, SetDelay(kDelayInBlocks))
|
||||
.Times(AtLeast(1));
|
||||
EXPECT_CALL(*render_delay_buffer_mock, MaxDelay()).WillOnce(Return(30));
|
||||
@ -161,10 +158,7 @@ TEST(BlockProcessor, DISABLED_SubmoduleIntegration) {
|
||||
EXPECT_CALL(*render_delay_buffer_mock, Insert(_))
|
||||
.Times(kNumBlocks - 1)
|
||||
.WillRepeatedly(Return(RenderDelayBuffer::BufferingEvent::kNone));
|
||||
EXPECT_CALL(*render_delay_buffer_mock, IsBlockAvailable())
|
||||
.Times(kNumBlocks)
|
||||
.WillRepeatedly(Return(true));
|
||||
EXPECT_CALL(*render_delay_buffer_mock, PrepareCaptureCall())
|
||||
EXPECT_CALL(*render_delay_buffer_mock, PrepareCaptureProcessing())
|
||||
.Times(kNumBlocks);
|
||||
EXPECT_CALL(*render_delay_buffer_mock, SetDelay(9)).Times(AtLeast(1));
|
||||
EXPECT_CALL(*render_delay_buffer_mock, Delay())
|
||||
|
||||
Reference in New Issue
Block a user