| Index: webrtc/modules/audio_mixer/source/new_audio_conference_mixer_impl.cc
 | 
| diff --git a/webrtc/modules/audio_mixer/source/new_audio_conference_mixer_impl.cc b/webrtc/modules/audio_mixer/source/new_audio_conference_mixer_impl.cc
 | 
| index 57d4a9d56a27d333e0588d21fe7eefe2f6346174..52dcba497e3c7be7ec3ea6163cebfb4cad7624d8 100644
 | 
| --- a/webrtc/modules/audio_mixer/source/new_audio_conference_mixer_impl.cc
 | 
| +++ b/webrtc/modules/audio_mixer/source/new_audio_conference_mixer_impl.cc
 | 
| @@ -119,9 +119,9 @@ NewAudioConferenceMixerImpl::NewAudioConferenceMixerImpl(int id)
 | 
|        additional_audio_source_list_(),
 | 
|        num_mixed_audio_sources_(0),
 | 
|        use_limiter_(true),
 | 
| -      _timeStamp(0),
 | 
| -      _timeScheduler(kProcessPeriodicityInMs),
 | 
| -      _processCalls(0) {}
 | 
| +      _timeStamp(0) {
 | 
| +  thread_checker_.DetachFromThread();
 | 
| +      }
 | 
|  
 | 
|  bool NewAudioConferenceMixerImpl::Init() {
 | 
|    _crit.reset(CriticalSectionWrapper::CreateCriticalSection());
 | 
| @@ -174,36 +174,9 @@ NewAudioConferenceMixerImpl::~NewAudioConferenceMixerImpl() {
 | 
|    RTC_DCHECK_EQ(_audioFramePool, static_cast<MemoryPool<AudioFrame>*>(nullptr));
 | 
|  }
 | 
|  
 | 
| -// Process should be called every kProcessPeriodicityInMs ms
 | 
| -int64_t NewAudioConferenceMixerImpl::TimeUntilNextProcess() {
 | 
| -  int64_t timeUntilNextProcess = 0;
 | 
| -  CriticalSectionScoped cs(_crit.get());
 | 
| -  if (_timeScheduler.TimeToNextUpdate(timeUntilNextProcess) != 0) {
 | 
| -    WEBRTC_TRACE(kTraceError, kTraceAudioMixerServer, _id,
 | 
| -                 "failed in TimeToNextUpdate() call");
 | 
| -    // Sanity check
 | 
| -    RTC_NOTREACHED();
 | 
| -    return -1;
 | 
| -  }
 | 
| -  return timeUntilNextProcess;
 | 
| -}
 | 
| -
 | 
| -void NewAudioConferenceMixerImpl::Process() {
 | 
| -  // TODO(aleloi) Remove this method.
 | 
| -  RTC_NOTREACHED();
 | 
| -}
 | 
| -
 | 
|  void NewAudioConferenceMixerImpl::Mix(AudioFrame* audio_frame_for_mixing) {
 | 
|    size_t remainingAudioSourcesAllowedToMix = kMaximumAmountOfMixedAudioSources;
 | 
| -  {
 | 
| -    CriticalSectionScoped cs(_crit.get());
 | 
| -    RTC_DCHECK_EQ(_processCalls, 0);
 | 
| -    _processCalls++;
 | 
| -
 | 
| -    // Let the scheduler know that we are running one iteration.
 | 
| -    _timeScheduler.UpdateScheduler();
 | 
| -  }
 | 
| -
 | 
| +  RTC_DCHECK(thread_checker_.CalledOnValidThread());
 | 
|    AudioFrameList mixList;
 | 
|    AudioFrameList rampOutList;
 | 
|    AudioFrameList additionalFramesList;
 | 
| @@ -223,8 +196,6 @@ void NewAudioConferenceMixerImpl::Mix(AudioFrame* audio_frame_for_mixing) {
 | 
|        lowFreq = 32000;
 | 
|      }
 | 
|      if (lowFreq <= 0) {
 | 
| -      CriticalSectionScoped cs(_crit.get());
 | 
| -      _processCalls--;
 | 
|        return;
 | 
|      } else {
 | 
|        switch (lowFreq) {
 | 
| @@ -250,9 +221,6 @@ void NewAudioConferenceMixerImpl::Mix(AudioFrame* audio_frame_for_mixing) {
 | 
|            break;
 | 
|          default:
 | 
|            RTC_NOTREACHED();
 | 
| -
 | 
| -          CriticalSectionScoped cs(_crit.get());
 | 
| -          _processCalls--;
 | 
|            return;
 | 
|        }
 | 
|      }
 | 
| @@ -303,10 +271,6 @@ void NewAudioConferenceMixerImpl::Mix(AudioFrame* audio_frame_for_mixing) {
 | 
|    ClearAudioFrameList(&mixList);
 | 
|    ClearAudioFrameList(&rampOutList);
 | 
|    ClearAudioFrameList(&additionalFramesList);
 | 
| -  {
 | 
| -    CriticalSectionScoped cs(_crit.get());
 | 
| -    _processCalls--;
 | 
| -  }
 | 
|    return;
 | 
|  }
 | 
|  
 | 
| 
 |