| Index: webrtc/media/engine/webrtcvoiceengine.cc
|
| diff --git a/webrtc/media/engine/webrtcvoiceengine.cc b/webrtc/media/engine/webrtcvoiceengine.cc
|
| index 9636ff32fc4fc98a21402e6d11c4d1433da6ed10..71803cbee38c845e1cf4afbfa90c15ca94f062e3 100644
|
| --- a/webrtc/media/engine/webrtcvoiceengine.cc
|
| +++ b/webrtc/media/engine/webrtcvoiceengine.cc
|
| @@ -1705,6 +1705,12 @@
|
| return true;
|
| }
|
|
|
| + if (playout_) {
|
| + // Receive codecs can not be changed while playing. So we temporarily
|
| + // pause playout.
|
| + ChangePlayout(false);
|
| + }
|
| +
|
| bool result = true;
|
| for (const AudioCodec& codec : new_codecs) {
|
| webrtc::CodecInst voe_codec = {0};
|
| @@ -1729,6 +1735,9 @@
|
| recv_codecs_ = codecs;
|
| }
|
|
|
| + if (desired_playout_ && !playout_) {
|
| + ChangePlayout(desired_playout_);
|
| + }
|
| return result;
|
| }
|
|
|
| @@ -1983,7 +1992,12 @@
|
| }
|
|
|
| void WebRtcVoiceMediaChannel::SetPlayout(bool playout) {
|
| - TRACE_EVENT0("webrtc", "WebRtcVoiceMediaChannel::SetPlayout");
|
| + desired_playout_ = playout;
|
| + return ChangePlayout(desired_playout_);
|
| +}
|
| +
|
| +void WebRtcVoiceMediaChannel::ChangePlayout(bool playout) {
|
| + TRACE_EVENT0("webrtc", "WebRtcVoiceMediaChannel::ChangePlayout");
|
| RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
|
| if (playout_ == playout) {
|
| return;
|
|
|