| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2  *  Copyright (c) 2012 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 39 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 50       // AEC_UNSPECIFIED_ERROR | 50       // AEC_UNSPECIFIED_ERROR | 
| 51       // AEC_UNINITIALIZED_ERROR | 51       // AEC_UNINITIALIZED_ERROR | 
| 52       // AEC_NULL_POINTER_ERROR | 52       // AEC_NULL_POINTER_ERROR | 
| 53       return AudioProcessing::kUnspecifiedError; | 53       return AudioProcessing::kUnspecifiedError; | 
| 54   } | 54   } | 
| 55 } | 55 } | 
| 56 }  // namespace | 56 }  // namespace | 
| 57 | 57 | 
| 58 EchoCancellationImpl::EchoCancellationImpl(const AudioProcessing* apm, | 58 EchoCancellationImpl::EchoCancellationImpl(const AudioProcessing* apm, | 
| 59                                            CriticalSectionWrapper* crit) | 59                                            CriticalSectionWrapper* crit) | 
| 60     : ProcessingComponent(), | 60   : ProcessingComponent(), | 
| 61       apm_(apm), | 61     apm_(apm), | 
| 62       crit_(crit), | 62     crit_(crit), | 
| 63       drift_compensation_enabled_(false), | 63     drift_compensation_enabled_(false), | 
| 64       metrics_enabled_(false), | 64     metrics_enabled_(false), | 
| 65       suppression_level_(kModerateSuppression), | 65     suppression_level_(kModerateSuppression), | 
| 66       stream_drift_samples_(0), | 66     stream_drift_samples_(0), | 
| 67       was_stream_drift_set_(false), | 67     was_stream_drift_set_(false), | 
| 68       stream_has_echo_(false), | 68     stream_has_echo_(false), | 
| 69       delay_logging_enabled_(false), | 69     delay_logging_enabled_(false), | 
| 70       extended_filter_enabled_(false), | 70     delay_correction_enabled_(false), | 
| 71       reported_delay_enabled_(true) { | 71     reported_delay_enabled_(true) {} | 
| 72 } |  | 
| 73 | 72 | 
| 74 EchoCancellationImpl::~EchoCancellationImpl() {} | 73 EchoCancellationImpl::~EchoCancellationImpl() {} | 
| 75 | 74 | 
| 76 int EchoCancellationImpl::ProcessRenderAudio(const AudioBuffer* audio) { | 75 int EchoCancellationImpl::ProcessRenderAudio(const AudioBuffer* audio) { | 
| 77   if (!is_component_enabled()) { | 76   if (!is_component_enabled()) { | 
| 78     return apm_->kNoError; | 77     return apm_->kNoError; | 
| 79   } | 78   } | 
| 80 | 79 | 
| 81   assert(audio->num_frames_per_band() <= 160); | 80   assert(audio->num_frames_per_band() <= 160); | 
| 82   assert(audio->num_channels() == apm_->num_reverse_channels()); | 81   assert(audio->num_channels() == apm_->num_reverse_channels()); | 
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 321 int EchoCancellationImpl::Initialize() { | 320 int EchoCancellationImpl::Initialize() { | 
| 322   int err = ProcessingComponent::Initialize(); | 321   int err = ProcessingComponent::Initialize(); | 
| 323   if (err != apm_->kNoError || !is_component_enabled()) { | 322   if (err != apm_->kNoError || !is_component_enabled()) { | 
| 324     return err; | 323     return err; | 
| 325   } | 324   } | 
| 326 | 325 | 
| 327   return apm_->kNoError; | 326   return apm_->kNoError; | 
| 328 } | 327 } | 
| 329 | 328 | 
| 330 void EchoCancellationImpl::SetExtraOptions(const Config& config) { | 329 void EchoCancellationImpl::SetExtraOptions(const Config& config) { | 
| 331   // Both ExtendedFilter and DelayCorrection are diabled by default. If any one | 330   delay_correction_enabled_ = config.Get<DelayCorrection>().enabled; | 
| 332   // of them is true, then the extended filter mode is enabled. |  | 
| 333   extended_filter_enabled_ = config.Get<ExtendedFilter>().enabled || |  | 
| 334                              config.Get<DelayCorrection>().enabled; |  | 
| 335   reported_delay_enabled_ = config.Get<ReportedDelay>().enabled; | 331   reported_delay_enabled_ = config.Get<ReportedDelay>().enabled; | 
| 336   Configure(); | 332   Configure(); | 
| 337 } | 333 } | 
| 338 | 334 | 
| 339 void* EchoCancellationImpl::CreateHandle() const { | 335 void* EchoCancellationImpl::CreateHandle() const { | 
| 340   Handle* handle = NULL; | 336   Handle* handle = NULL; | 
| 341   if (WebRtcAec_Create(&handle) != apm_->kNoError) { | 337   if (WebRtcAec_Create(&handle) != apm_->kNoError) { | 
| 342     handle = NULL; | 338     handle = NULL; | 
| 343   } else { | 339   } else { | 
| 344     assert(handle != NULL); | 340     assert(handle != NULL); | 
| (...skipping 18 matching lines...) Expand all  Loading... | 
| 363 } | 359 } | 
| 364 | 360 | 
| 365 int EchoCancellationImpl::ConfigureHandle(void* handle) const { | 361 int EchoCancellationImpl::ConfigureHandle(void* handle) const { | 
| 366   assert(handle != NULL); | 362   assert(handle != NULL); | 
| 367   AecConfig config; | 363   AecConfig config; | 
| 368   config.metricsMode = metrics_enabled_; | 364   config.metricsMode = metrics_enabled_; | 
| 369   config.nlpMode = MapSetting(suppression_level_); | 365   config.nlpMode = MapSetting(suppression_level_); | 
| 370   config.skewMode = drift_compensation_enabled_; | 366   config.skewMode = drift_compensation_enabled_; | 
| 371   config.delay_logging = delay_logging_enabled_; | 367   config.delay_logging = delay_logging_enabled_; | 
| 372 | 368 | 
| 373   WebRtcAec_enable_extended_filter( | 369   WebRtcAec_enable_delay_correction(WebRtcAec_aec_core( | 
| 374       WebRtcAec_aec_core(static_cast<Handle*>(handle)), | 370       static_cast<Handle*>(handle)), delay_correction_enabled_ ? 1 : 0); | 
| 375       extended_filter_enabled_ ? 1 : 0); |  | 
| 376   WebRtcAec_enable_reported_delay(WebRtcAec_aec_core( | 371   WebRtcAec_enable_reported_delay(WebRtcAec_aec_core( | 
| 377       static_cast<Handle*>(handle)), reported_delay_enabled_ ? 1 : 0); | 372       static_cast<Handle*>(handle)), reported_delay_enabled_ ? 1 : 0); | 
| 378   return WebRtcAec_set_config(static_cast<Handle*>(handle), config); | 373   return WebRtcAec_set_config(static_cast<Handle*>(handle), config); | 
| 379 } | 374 } | 
| 380 | 375 | 
| 381 int EchoCancellationImpl::num_handles_required() const { | 376 int EchoCancellationImpl::num_handles_required() const { | 
| 382   return apm_->num_output_channels() * | 377   return apm_->num_output_channels() * | 
| 383          apm_->num_reverse_channels(); | 378          apm_->num_reverse_channels(); | 
| 384 } | 379 } | 
| 385 | 380 | 
| 386 int EchoCancellationImpl::GetHandleError(void* handle) const { | 381 int EchoCancellationImpl::GetHandleError(void* handle) const { | 
| 387   assert(handle != NULL); | 382   assert(handle != NULL); | 
| 388   return MapError(WebRtcAec_get_error_code(static_cast<Handle*>(handle))); | 383   return MapError(WebRtcAec_get_error_code(static_cast<Handle*>(handle))); | 
| 389 } | 384 } | 
| 390 }  // namespace webrtc | 385 }  // namespace webrtc | 
| OLD | NEW | 
|---|