Index: webrtc/media/engine/webrtcvoiceengine.cc |
diff --git a/webrtc/media/engine/webrtcvoiceengine.cc b/webrtc/media/engine/webrtcvoiceengine.cc |
index f96c8e741e04ad94075ad69add97fab351230e01..f374b76e3eae7709dc22e8dbba6b8e4ef2f58fbf 100644 |
--- a/webrtc/media/engine/webrtcvoiceengine.cc |
+++ b/webrtc/media/engine/webrtcvoiceengine.cc |
@@ -1609,6 +1609,14 @@ class WebRtcVoiceMediaChannel::WebRtcAudioReceiveStream { |
RecreateAudioReceiveStream(); |
} |
+ void MaybeRecreateAudioReceiveStream(const std::string& sync_group) { |
+ RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
+ if (config_.sync_group != sync_group) { |
+ config_.sync_group = sync_group; |
+ RecreateAudioReceiveStream(); |
+ } |
+ } |
+ |
webrtc::AudioReceiveStream::Stats GetStats() const { |
RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
RTC_DCHECK(stream_); |
@@ -2276,10 +2284,13 @@ bool WebRtcVoiceMediaChannel::AddRecvStream(const StreamParams& sp) { |
return false; |
} |
- // Remove the default receive stream if one had been created with this ssrc; |
- // we'll recreate it then. |
+ // If the default receive stream was created with this ssrc, we unmark it as |
+ // being the default stream, and possibly recreate the AudioReceiveStream, if |
+ // sync_label has changed. |
if (IsDefaultRecvStream(ssrc)) { |
- RemoveRecvStream(ssrc); |
+ recv_streams_[ssrc]->MaybeRecreateAudioReceiveStream(sp.sync_label); |
+ default_recv_ssrc_ = -1; |
+ return true; |
} |
if (GetReceiveChannelId(ssrc) != -1) { |