Chromium Code Reviews| Index: webrtc/call/call.cc |
| diff --git a/webrtc/call/call.cc b/webrtc/call/call.cc |
| index d178406b2972307b3d77998ebaa303b31c1aef35..22f5af36d2965c8aca40333518a8ba4286a66d6d 100644 |
| --- a/webrtc/call/call.cc |
| +++ b/webrtc/call/call.cc |
| @@ -251,7 +251,10 @@ class Call : public webrtc::Call, |
| std::map<uint32_t, VideoSendStream*> video_send_ssrcs_ GUARDED_BY(send_crit_); |
| std::set<VideoSendStream*> video_send_streams_ GUARDED_BY(send_crit_); |
| - VideoSendStream::RtpStateMap suspended_video_send_ssrcs_; |
|
pbos-webrtc
2017/05/22 15:40:18
Does this mean that there's some VideoSendStream::
ossu
2017/05/22 17:13:59
I chose to let RtpStateMap be a shorthand for std:
|
| + typedef std::map<uint32_t, RtpState> RtpStateMap; |
|
kwiberg-webrtc
2017/05/19 01:05:09
using?
ossu
2017/05/22 17:13:59
Alright!
|
| + RtpStateMap suspended_audio_send_ssrcs_; |
|
pbos-webrtc
2017/05/22 15:39:50
Can you do GUARDED_BY (configuration_thread_checke
ossu
2017/05/22 17:13:59
Alright!
|
| + RtpStateMap suspended_video_send_ssrcs_; |
| + |
| webrtc::RtcEventLog* event_log_; |
| // The following members are only accessed (exclusively) from one thread and |
| @@ -509,9 +512,19 @@ webrtc::AudioSendStream* Call::CreateAudioSendStream( |
| TRACE_EVENT0("webrtc", "Call::CreateAudioSendStream"); |
| RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread()); |
| event_log_->LogAudioSendStreamConfig(config); |
| + |
| + rtc::Optional<RtpState> suspended_rtp_state; |
| + { |
| + const auto& iter = suspended_audio_send_ssrcs_.find(config.rtp.ssrc); |
| + if (iter != suspended_audio_send_ssrcs_.end()) { |
| + suspended_rtp_state.emplace(iter->second); |
| + } |
| + } |
| + |
| AudioSendStream* send_stream = new AudioSendStream( |
| config, config_.audio_state, &worker_queue_, transport_send_.get(), |
| - bitrate_allocator_.get(), event_log_, call_stats_->rtcp_rtt_stats()); |
| + bitrate_allocator_.get(), event_log_, call_stats_->rtcp_rtt_stats(), |
| + suspended_rtp_state); |
| { |
| WriteLockScoped write_lock(*send_crit_); |
| RTC_DCHECK(audio_send_ssrcs_.find(config.rtp.ssrc) == |
| @@ -540,7 +553,8 @@ 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; |
| + const uint32_t ssrc = audio_send_stream->config().rtp.ssrc; |
| + suspended_audio_send_ssrcs_[ssrc] = audio_send_stream->GetRtpState(); |
| { |
| WriteLockScoped write_lock(*send_crit_); |
| size_t num_deleted = audio_send_ssrcs_.erase(ssrc); |