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

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

Issue 2787123003: Correction of the AEC3 underrun behavior and minor other corrections (Closed)
Patch Set: 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 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 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 RenderDelayBufferImpl::~RenderDelayBufferImpl() = default; 119 RenderDelayBufferImpl::~RenderDelayBufferImpl() = default;
120 120
121 void RenderDelayBufferImpl::Reset() { 121 void RenderDelayBufferImpl::Reset() {
122 // Empty all data in the buffers. 122 // Empty all data in the buffers.
123 delay_ = 0; 123 delay_ = 0;
124 last_insert_index_ = 0; 124 last_insert_index_ = 0;
125 downsampled_render_buffer_.position = 0; 125 downsampled_render_buffer_.position = 0;
126 downsampled_render_buffer_.buffer.fill(0.f); 126 downsampled_render_buffer_.buffer.fill(0.f);
127 fft_buffer_.Clear(); 127 fft_buffer_.Clear();
128 api_call_jitter_buffer_.Reset(); 128 api_call_jitter_buffer_.Reset();
129 for (auto& c : buffer_) {
peah-webrtc 2017/04/06 13:39:08 After a buffer delay reset (due to a too long buff
130 for (auto& b : c) {
131 std::fill(b.begin(), b.end(), 0.f);
132 }
133 }
129 } 134 }
130 135
131 bool RenderDelayBufferImpl::Insert(std::vector<std::vector<float>>* block) { 136 bool RenderDelayBufferImpl::Insert(std::vector<std::vector<float>>* block) {
132 RTC_DCHECK_EQ(block->size(), buffer_[0].size()); 137 RTC_DCHECK_EQ(block->size(), buffer_[0].size());
133 RTC_DCHECK_EQ((*block)[0].size(), buffer_[0][0].size()); 138 RTC_DCHECK_EQ((*block)[0].size(), buffer_[0][0].size());
134 139
135 if (api_call_jitter_buffer_.Full()) { 140 if (api_call_jitter_buffer_.Full()) {
136 // Report buffer overrun and let the caller handle the overrun. 141 // Report buffer overrun and let the caller handle the overrun.
137 return false; 142 return false;
138 } 143 }
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 } 200 }
196 } 201 }
197 202
198 } // namespace 203 } // namespace
199 204
200 RenderDelayBuffer* RenderDelayBuffer::Create(size_t num_bands) { 205 RenderDelayBuffer* RenderDelayBuffer::Create(size_t num_bands) {
201 return new RenderDelayBufferImpl(num_bands); 206 return new RenderDelayBufferImpl(num_bands);
202 } 207 }
203 208
204 } // namespace webrtc 209 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698