Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / webrtc / modules / audio_processing / echo_cancellation_impl.cc
index 0d6d159..d4bd781 100644 (file)
@@ -63,12 +63,12 @@ EchoCancellationImpl::EchoCancellationImpl(const AudioProcessing* apm,
     drift_compensation_enabled_(false),
     metrics_enabled_(false),
     suppression_level_(kModerateSuppression),
-    device_sample_rate_hz_(48000),
     stream_drift_samples_(0),
     was_stream_drift_set_(false),
     stream_has_echo_(false),
     delay_logging_enabled_(false),
-    delay_correction_enabled_(false) {}
+    delay_correction_enabled_(false),
+    reported_delay_enabled_(true) {}
 
 EchoCancellationImpl::~EchoCancellationImpl() {}
 
@@ -202,20 +202,6 @@ bool EchoCancellationImpl::is_drift_compensation_enabled() const {
   return drift_compensation_enabled_;
 }
 
-int EchoCancellationImpl::set_device_sample_rate_hz(int rate) {
-  CriticalSectionScoped crit_scoped(crit_);
-  if (rate < 8000 || rate > 96000) {
-    return apm_->kBadParameterError;
-  }
-
-  device_sample_rate_hz_ = rate;
-  return Initialize();
-}
-
-int EchoCancellationImpl::device_sample_rate_hz() const {
-  return device_sample_rate_hz_;
-}
-
 void EchoCancellationImpl::set_stream_drift_samples(int drift) {
   was_stream_drift_set_ = true;
   stream_drift_samples_ = drift;
@@ -351,16 +337,19 @@ void* EchoCancellationImpl::CreateHandle() const {
   return handle;
 }
 
-int EchoCancellationImpl::DestroyHandle(void* handle) const {
+void EchoCancellationImpl::DestroyHandle(void* handle) const {
   assert(handle != NULL);
-  return WebRtcAec_Free(static_cast<Handle*>(handle));
+  WebRtcAec_Free(static_cast<Handle*>(handle));
 }
 
 int EchoCancellationImpl::InitializeHandle(void* handle) const {
   assert(handle != NULL);
+  // TODO(ajm): Drift compensation is disabled in practice. If restored, it
+  // should be managed internally and not depend on the hardware sample rate.
+  // For now, just hardcode a 48 kHz value.
   return WebRtcAec_Init(static_cast<Handle*>(handle),
-                       apm_->sample_rate_hz(),
-                       device_sample_rate_hz_);
+                       apm_->proc_sample_rate_hz(),
+                       48000);
 }
 
 int EchoCancellationImpl::ConfigureHandle(void* handle) const {
@@ -373,6 +362,8 @@ int EchoCancellationImpl::ConfigureHandle(void* handle) const {
 
   WebRtcAec_enable_delay_correction(WebRtcAec_aec_core(
       static_cast<Handle*>(handle)), delay_correction_enabled_ ? 1 : 0);
+  WebRtcAec_enable_reported_delay(WebRtcAec_aec_core(
+      static_cast<Handle*>(handle)), reported_delay_enabled_ ? 1 : 0);
   return WebRtcAec_set_config(static_cast<Handle*>(handle), config);
 }