Index: webrtc/modules/audio_processing/aec3/render_delay_buffer.cc |
diff --git a/webrtc/modules/audio_processing/aec3/render_delay_buffer.cc b/webrtc/modules/audio_processing/aec3/render_delay_buffer.cc |
index f53a92519c8c47f3e11ff927a01d885024dd5fc8..cf3e2482ef7f5f364a5d3de371a0dc94f17bf562 100644 |
--- a/webrtc/modules/audio_processing/aec3/render_delay_buffer.cc |
+++ b/webrtc/modules/audio_processing/aec3/render_delay_buffer.cc |
@@ -102,10 +102,11 @@ class RenderDelayBufferImpl final : public RenderDelayBuffer { |
RenderDelayBufferImpl::RenderDelayBufferImpl(size_t num_bands) |
: optimization_(DetectOptimization()), |
- fft_buffer_(optimization_, |
- num_bands, |
- std::max(30, kAdaptiveFilterLength), |
- std::vector<size_t>(1, kAdaptiveFilterLength)), |
+ fft_buffer_( |
+ optimization_, |
+ num_bands, |
+ std::max(kResidualEchoPowerRenderWindowSize, kAdaptiveFilterLength), |
+ std::vector<size_t>(1, kAdaptiveFilterLength)), |
api_call_jitter_buffer_(num_bands) { |
buffer_.fill(std::vector<std::vector<float>>( |
num_bands, std::vector<float>(kBlockSize, 0.f))); |
@@ -175,23 +176,19 @@ void RenderDelayBufferImpl::SetDelay(size_t delay) { |
// If there is a new delay set, clear the fft buffer. |
fft_buffer_.Clear(); |
- const size_t max_delay = buffer_.size() - 1; |
- if (max_delay < delay) { |
+ if ((buffer_.size() - 1) < delay) { |
// If the desired delay is larger than the delay buffer, shorten the delay |
// buffer size to achieve the desired alignment with the available buffer |
// size. |
- const size_t delay_decrease = delay - max_delay; |
- RTC_DCHECK_LT(delay_decrease, buffer_.size()); |
- |
downsampled_render_buffer_.position = |
- (downsampled_render_buffer_.position + kSubBlockSize * delay_decrease) % |
+ (downsampled_render_buffer_.position + |
+ kSubBlockSize * (delay - (buffer_.size() - 1))) % |
downsampled_render_buffer_.buffer.size(); |
last_insert_index_ = |
- (last_insert_index_ + buffer_.size() - delay_decrease) % buffer_.size(); |
- |
- RTC_DCHECK_EQ(max_delay, delay_ - delay_decrease); |
- delay_ = max_delay; |
+ (last_insert_index_ - (delay - (buffer_.size() - 1)) + buffer_.size()) % |
+ buffer_.size(); |
+ delay_ = buffer_.size() - 1; |
} else { |
delay_ = delay; |
} |