Chromium Code Reviews| Index: webrtc/call/call.cc |
| diff --git a/webrtc/call/call.cc b/webrtc/call/call.cc |
| index ebc1aeb866237b9c8c16abef5a5499419c228a62..77a76f9f8ece49e9363eef23e056a3aa31079755 100644 |
| --- a/webrtc/call/call.cc |
| +++ b/webrtc/call/call.cc |
| @@ -407,6 +407,14 @@ webrtc::AudioSendStream* Call::CreateAudioSendStream( |
| audio_send_ssrcs_.end()); |
| audio_send_ssrcs_[config.rtp.ssrc] = send_stream; |
| } |
| + { |
| + ReadLockScoped read_lock(*receive_crit_); |
| + for (const auto& kv : audio_receive_ssrcs_) { |
| + if (kv.second->config().rtp.local_ssrc == config.rtp.ssrc) { |
| + kv.second->AssociateSendStream(send_stream); |
| + } |
| + } |
| + } |
| send_stream->SignalNetworkState(audio_network_state_); |
| UpdateAggregateNetworkState(); |
| return send_stream; |
| @@ -421,12 +429,20 @@ void Call::DestroyAudioSendStream(webrtc::AudioSendStream* send_stream) { |
| webrtc::internal::AudioSendStream* audio_send_stream = |
| static_cast<webrtc::internal::AudioSendStream*>(send_stream); |
| + uint32_t ssrc = audio_send_stream->config().rtp.ssrc; |
|
kwiberg-webrtc
2016/11/11 13:47:40
const?
the sun
2016/11/11 20:03:39
Hmm, why here, in particular, and not on every loc
kwiberg-webrtc
2016/11/13 20:17:02
I try to complain in pretty much all such cases, y
the sun
2016/11/14 18:58:06
In the name of consistency with surrounding code I
kwiberg-webrtc
2016/11/15 05:05:02
I don't think the style guide takes a position on
|
| { |
| WriteLockScoped write_lock(*send_crit_); |
| - size_t num_deleted = audio_send_ssrcs_.erase( |
| - audio_send_stream->config().rtp.ssrc); |
| + size_t num_deleted = audio_send_ssrcs_.erase(ssrc); |
| RTC_DCHECK(num_deleted == 1); |
|
kwiberg-webrtc
2016/11/11 13:47:39
RTC_DCHECK_EQ
the sun
2016/11/11 20:03:39
Done.
|
| } |
| + { |
| + ReadLockScoped read_lock(*receive_crit_); |
| + for (const auto& kv : audio_receive_ssrcs_) { |
| + if (kv.second->config().rtp.local_ssrc == ssrc) { |
| + kv.second->AssociateSendStream(nullptr); |
| + } |
| + } |
| + } |
| UpdateAggregateNetworkState(); |
| delete audio_send_stream; |
| } |
| @@ -445,6 +461,13 @@ webrtc::AudioReceiveStream* Call::CreateAudioReceiveStream( |
| audio_receive_ssrcs_[config.rtp.remote_ssrc] = receive_stream; |
| ConfigureSync(config.sync_group); |
| } |
| + { |
| + ReadLockScoped read_lock(*send_crit_); |
| + auto it = audio_send_ssrcs_.find(config.rtp.local_ssrc); |
| + if (it != audio_send_ssrcs_.end()) { |
| + receive_stream->AssociateSendStream(it->second); |
| + } |
| + } |
| receive_stream->SignalNetworkState(audio_network_state_); |
| UpdateAggregateNetworkState(); |
| return receive_stream; |