Index: talk/media/webrtc/webrtcvideoengine2.cc |
diff --git a/talk/media/webrtc/webrtcvideoengine2.cc b/talk/media/webrtc/webrtcvideoengine2.cc |
index 3813519b96d1e01632762d26424c8223f5ad399d..90ab3e5c2b4f7e6159a083b7cb8f25ba7a41c33f 100644 |
--- a/talk/media/webrtc/webrtcvideoengine2.cc |
+++ b/talk/media/webrtc/webrtcvideoengine2.cc |
@@ -1146,6 +1146,19 @@ bool WebRtcVideoChannel2::RemoveSendStream(uint32_t ssrc) { |
removed_stream = it->second; |
send_streams_.erase(it); |
+ |
+ // Switch receiver report SSRCs, the one in use is no longer valid. |
+ if (rtcp_receiver_report_ssrc_ == ssrc) { |
+ rtcp_receiver_report_ssrc_ = send_streams_.empty() |
+ ? kDefaultRtcpReceiverReportSsrc |
+ : send_streams_.begin()->first; |
+ LOG(LS_INFO) << "SetLocalSsrc on all the receive streams because the " |
+ "previous local SSRC was removed."; |
+ |
+ for (auto& kv : receive_streams_) { |
+ kv.second->SetLocalSsrc(rtcp_receiver_report_ssrc_); |
+ } |
+ } |
} |
delete removed_stream; |