| Index: talk/media/webrtc/webrtcvoiceengine.cc | 
| diff --git a/talk/media/webrtc/webrtcvoiceengine.cc b/talk/media/webrtc/webrtcvoiceengine.cc | 
| index 642fd3d233e649ecbcb989a85391176b1761e0dc..358645d853f5e07ee5a5eb303e9e8fef9928cd6c 100644 | 
| --- a/talk/media/webrtc/webrtcvoiceengine.cc | 
| +++ b/talk/media/webrtc/webrtcvoiceengine.cc | 
| @@ -369,7 +369,6 @@ WebRtcVoiceEngine::WebRtcVoiceEngine() | 
| adm_(NULL), | 
| log_filter_(SeverityToFilter(kDefaultLogSeverity)), | 
| is_dumping_aec_(false), | 
| -      desired_local_monitor_enable_(false), | 
| tx_processor_ssrc_(0), | 
| rx_processor_ssrc_(0) { | 
| Construct(); | 
| @@ -382,7 +381,6 @@ WebRtcVoiceEngine::WebRtcVoiceEngine(VoEWrapper* voe_wrapper, | 
| adm_(NULL), | 
| log_filter_(SeverityToFilter(kDefaultLogSeverity)), | 
| is_dumping_aec_(false), | 
| -      desired_local_monitor_enable_(false), | 
| tx_processor_ssrc_(0), | 
| rx_processor_ssrc_(0) { | 
| Construct(); | 
| @@ -572,7 +570,6 @@ void WebRtcVoiceEngine::Terminate() { | 
| StopAecDump(); | 
|  | 
| voe_wrapper_->base()->Terminate(); | 
| -  desired_local_monitor_enable_ = false; | 
| } | 
|  | 
| int WebRtcVoiceEngine::GetCapabilities() { | 
| @@ -933,14 +930,8 @@ bool WebRtcVoiceEngine::SetDevices(const Device* in_device, | 
| << ") and speaker to (id=" << out_id << ", name=" << out_name | 
| << ")"; | 
|  | 
| -  // If we're running the local monitor, we need to stop it first. | 
| -  bool ret = true; | 
| -  if (!PauseLocalMonitor()) { | 
| -    LOG(LS_WARNING) << "Failed to pause local monitor"; | 
| -    ret = false; | 
| -  } | 
| - | 
| // Must also pause all audio playback and capture. | 
| +  bool ret = true; | 
| for (WebRtcVoiceMediaChannel* channel : channels_) { | 
| if (!channel->PausePlayout()) { | 
| LOG(LS_WARNING) << "Failed to pause playout"; | 
| @@ -990,12 +981,6 @@ bool WebRtcVoiceEngine::SetDevices(const Device* in_device, | 
| } | 
| } | 
|  | 
| -  // Resume local monitor. | 
| -  if (!ResumeLocalMonitor()) { | 
| -    LOG(LS_WARNING) << "Failed to resume local monitor"; | 
| -    ret = false; | 
| -  } | 
| - | 
| if (ret) { | 
| LOG(LS_INFO) << "Set microphone to (id=" << in_id <<" name=" << in_name | 
| << ") and speaker to (id="<< out_id << " name=" << out_name | 
| @@ -1083,42 +1068,6 @@ int WebRtcVoiceEngine::GetInputLevel() { | 
| static_cast<int>(ulevel) : -1; | 
| } | 
|  | 
| -bool WebRtcVoiceEngine::SetLocalMonitor(bool enable) { | 
| -  desired_local_monitor_enable_ = enable; | 
| -  return ChangeLocalMonitor(desired_local_monitor_enable_); | 
| -} | 
| - | 
| -bool WebRtcVoiceEngine::ChangeLocalMonitor(bool enable) { | 
| -  // The voe file api is not available in chrome. | 
| -  if (!voe_wrapper_->file()) { | 
| -    return false; | 
| -  } | 
| -  if (enable && !monitor_) { | 
| -    monitor_.reset(new WebRtcMonitorStream); | 
| -    if (voe_wrapper_->file()->StartRecordingMicrophone(monitor_.get()) == -1) { | 
| -      LOG_RTCERR1(StartRecordingMicrophone, monitor_.get()); | 
| -      // Must call Stop() because there are some cases where Start will report | 
| -      // failure but still change the state, and if we leave VE in the on state | 
| -      // then it could crash later when trying to invoke methods on our monitor. | 
| -      voe_wrapper_->file()->StopRecordingMicrophone(); | 
| -      monitor_.reset(); | 
| -      return false; | 
| -    } | 
| -  } else if (!enable && monitor_) { | 
| -    voe_wrapper_->file()->StopRecordingMicrophone(); | 
| -    monitor_.reset(); | 
| -  } | 
| -  return true; | 
| -} | 
| - | 
| -bool WebRtcVoiceEngine::PauseLocalMonitor() { | 
| -  return ChangeLocalMonitor(false); | 
| -} | 
| - | 
| -bool WebRtcVoiceEngine::ResumeLocalMonitor() { | 
| -  return ChangeLocalMonitor(desired_local_monitor_enable_); | 
| -} | 
| - | 
| const std::vector<AudioCodec>& WebRtcVoiceEngine::codecs() { | 
| return codecs_; | 
| } | 
|  |