| Index: webrtc/modules/audio_processing/echo_cancellation_impl.cc
 | 
| diff --git a/webrtc/modules/audio_processing/echo_cancellation_impl.cc b/webrtc/modules/audio_processing/echo_cancellation_impl.cc
 | 
| index 1422cb8d72791e4d5d2c2ee3108cbb9851deb581..07f96fa170564a189256b3e4da77826f7a81ba3b 100644
 | 
| --- a/webrtc/modules/audio_processing/echo_cancellation_impl.cc
 | 
| +++ b/webrtc/modules/audio_processing/echo_cancellation_impl.cc
 | 
| @@ -59,10 +59,14 @@ const size_t EchoCancellationImpl::kAllowedValuesOfSamplesPerFrame1;
 | 
|  const size_t EchoCancellationImpl::kAllowedValuesOfSamplesPerFrame2;
 | 
|  
 | 
|  EchoCancellationImpl::EchoCancellationImpl(const AudioProcessing* apm,
 | 
| -                                           CriticalSectionWrapper* crit)
 | 
| +                                           CriticalSectionWrapper* crit,
 | 
| +                                           rtc::ThreadChecker* render_thread,
 | 
| +                                           rtc::ThreadChecker* capture_thread)
 | 
|      : ProcessingComponent(),
 | 
|        apm_(apm),
 | 
|        crit_(crit),
 | 
| +      render_thread_(render_thread),
 | 
| +      capture_thread_(capture_thread),
 | 
|        drift_compensation_enabled_(false),
 | 
|        metrics_enabled_(false),
 | 
|        suppression_level_(kModerateSuppression),
 | 
| @@ -79,6 +83,7 @@ EchoCancellationImpl::EchoCancellationImpl(const AudioProcessing* apm,
 | 
|  EchoCancellationImpl::~EchoCancellationImpl() {}
 | 
|  
 | 
|  int EchoCancellationImpl::ProcessRenderAudio(const AudioBuffer* audio) {
 | 
| +  RTC_DCHECK(render_thread_->CalledOnValidThread());
 | 
|    if (!is_component_enabled()) {
 | 
|      return apm_->kNoError;
 | 
|    }
 | 
| @@ -128,6 +133,7 @@ int EchoCancellationImpl::ProcessRenderAudio(const AudioBuffer* audio) {
 | 
|  // Read chunks of data that were received and queued on the render side from
 | 
|  // a queue. All the data chunks are buffered into the farend signal of the AEC.
 | 
|  void EchoCancellationImpl::ReadQueuedRenderData() {
 | 
| +  RTC_DCHECK(capture_thread_->CalledOnValidThread());
 | 
|    if (!is_component_enabled()) {
 | 
|      return;
 | 
|    }
 | 
| @@ -155,6 +161,7 @@ void EchoCancellationImpl::ReadQueuedRenderData() {
 | 
|  }
 | 
|  
 | 
|  int EchoCancellationImpl::ProcessCaptureAudio(AudioBuffer* audio) {
 | 
| +  RTC_DCHECK(capture_thread_->CalledOnValidThread());
 | 
|    if (!is_component_enabled()) {
 | 
|      return apm_->kNoError;
 | 
|    }
 | 
| @@ -445,6 +452,7 @@ int EchoCancellationImpl::ConfigureHandle(void* handle) const {
 | 
|    config.nlpMode = MapSetting(suppression_level_);
 | 
|    config.skewMode = drift_compensation_enabled_;
 | 
|    config.delay_logging = delay_logging_enabled_;
 | 
| +
 | 
|    WebRtcAec_enable_extended_filter(
 | 
|        WebRtcAec_aec_core(static_cast<Handle*>(handle)),
 | 
|        extended_filter_enabled_ ? 1 : 0);
 | 
| 
 |