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

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

Issue 2967603002: Added the ability to adjust the AEC3 performance for large rooms (Closed)
Patch Set: Changes in response to reviewer commments Created 3 years, 5 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) 2016 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2016 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 #include "webrtc/modules/audio_processing/aec3/echo_canceller3.h" 10 #include "webrtc/modules/audio_processing/aec3/echo_canceller3.h"
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 193
194 if (render_highpass_filter_) { 194 if (render_highpass_filter_) {
195 render_highpass_filter_->Process(render_queue_input_frame_[0]); 195 render_highpass_filter_->Process(render_queue_input_frame_[0]);
196 } 196 }
197 197
198 static_cast<void>(render_transfer_queue_->Insert(&render_queue_input_frame_)); 198 static_cast<void>(render_transfer_queue_->Insert(&render_queue_input_frame_));
199 } 199 }
200 200
201 int EchoCanceller3::instance_count_ = 0; 201 int EchoCanceller3::instance_count_ = 0;
202 202
203 EchoCanceller3::EchoCanceller3(int sample_rate_hz, bool use_highpass_filter) 203 EchoCanceller3::EchoCanceller3(
204 const AudioProcessing::Config::EchoCanceller3& config,
205 int sample_rate_hz,
206 bool use_highpass_filter)
204 : EchoCanceller3(sample_rate_hz, 207 : EchoCanceller3(sample_rate_hz,
205 use_highpass_filter, 208 use_highpass_filter,
206 std::unique_ptr<BlockProcessor>( 209 std::unique_ptr<BlockProcessor>(
207 BlockProcessor::Create(sample_rate_hz))) {} 210 BlockProcessor::Create(config, sample_rate_hz))) {}
208 EchoCanceller3::EchoCanceller3(int sample_rate_hz, 211 EchoCanceller3::EchoCanceller3(int sample_rate_hz,
209 bool use_highpass_filter, 212 bool use_highpass_filter,
210 std::unique_ptr<BlockProcessor> block_processor) 213 std::unique_ptr<BlockProcessor> block_processor)
211 : data_dumper_( 214 : data_dumper_(
212 new ApmDataDumper(rtc::AtomicOps::Increment(&instance_count_))), 215 new ApmDataDumper(rtc::AtomicOps::Increment(&instance_count_))),
213 sample_rate_hz_(sample_rate_hz), 216 sample_rate_hz_(sample_rate_hz),
214 num_bands_(NumBandsForRate(sample_rate_hz_)), 217 num_bands_(NumBandsForRate(sample_rate_hz_)),
215 frame_length_(rtc::CheckedDivExact(LowestBandRate(sample_rate_hz_), 100)), 218 frame_length_(rtc::CheckedDivExact(LowestBandRate(sample_rate_hz_), 100)),
216 output_framer_(num_bands_), 219 output_framer_(num_bands_),
217 capture_blocker_(num_bands_), 220 capture_blocker_(num_bands_),
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 std::string EchoCanceller3::ToString( 327 std::string EchoCanceller3::ToString(
325 const AudioProcessing::Config::EchoCanceller3& config) { 328 const AudioProcessing::Config::EchoCanceller3& config) {
326 std::stringstream ss; 329 std::stringstream ss;
327 ss << "{" 330 ss << "{"
328 << "enabled: " << (config.enabled ? "true" : "false") << "}"; 331 << "enabled: " << (config.enabled ? "true" : "false") << "}";
329 return ss.str(); 332 return ss.str();
330 } 333 }
331 334
332 bool EchoCanceller3::Validate( 335 bool EchoCanceller3::Validate(
333 const AudioProcessing::Config::EchoCanceller3& config) { 336 const AudioProcessing::Config::EchoCanceller3& config) {
334 return true; 337 return (config.echo_decay >= 0.f && config.echo_decay < 1.f);
335 } 338 }
336 339
337 void EchoCanceller3::EmptyRenderQueue() { 340 void EchoCanceller3::EmptyRenderQueue() {
338 RTC_DCHECK_RUNS_SERIALIZED(&capture_race_checker_); 341 RTC_DCHECK_RUNS_SERIALIZED(&capture_race_checker_);
339 bool frame_to_buffer = 342 bool frame_to_buffer =
340 render_transfer_queue_.Remove(&render_queue_output_frame_); 343 render_transfer_queue_.Remove(&render_queue_output_frame_);
341 while (frame_to_buffer) { 344 while (frame_to_buffer) {
342 BufferRenderFrameContent(&render_queue_output_frame_, 0, &render_blocker_, 345 BufferRenderFrameContent(&render_queue_output_frame_, 0, &render_blocker_,
343 block_processor_.get(), &block_, &sub_frame_view_); 346 block_processor_.get(), &block_, &sub_frame_view_);
344 347
345 if (sample_rate_hz_ != 8000) { 348 if (sample_rate_hz_ != 8000) {
346 BufferRenderFrameContent(&render_queue_output_frame_, 1, &render_blocker_, 349 BufferRenderFrameContent(&render_queue_output_frame_, 1, &render_blocker_,
347 block_processor_.get(), &block_, 350 block_processor_.get(), &block_,
348 &sub_frame_view_); 351 &sub_frame_view_);
349 } 352 }
350 353
351 BufferRemainingRenderFrameContent(&render_blocker_, block_processor_.get(), 354 BufferRemainingRenderFrameContent(&render_blocker_, block_processor_.get(),
352 &block_); 355 &block_);
353 356
354 frame_to_buffer = 357 frame_to_buffer =
355 render_transfer_queue_.Remove(&render_queue_output_frame_); 358 render_transfer_queue_.Remove(&render_queue_output_frame_);
356 } 359 }
357 } 360 }
358 361
359 } // namespace webrtc 362 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698