Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 244 }; | 244 }; |
| 245 std::map<uint32_t, ReceiveRtpConfig> receive_rtp_config_ | 245 std::map<uint32_t, ReceiveRtpConfig> receive_rtp_config_ |
| 246 GUARDED_BY(receive_crit_); | 246 GUARDED_BY(receive_crit_); |
| 247 | 247 |
| 248 std::unique_ptr<RWLockWrapper> send_crit_; | 248 std::unique_ptr<RWLockWrapper> send_crit_; |
| 249 // Audio and Video send streams are owned by the client that creates them. | 249 // Audio and Video send streams are owned by the client that creates them. |
| 250 std::map<uint32_t, AudioSendStream*> audio_send_ssrcs_ GUARDED_BY(send_crit_); | 250 std::map<uint32_t, AudioSendStream*> audio_send_ssrcs_ GUARDED_BY(send_crit_); |
| 251 std::map<uint32_t, VideoSendStream*> video_send_ssrcs_ GUARDED_BY(send_crit_); | 251 std::map<uint32_t, VideoSendStream*> video_send_ssrcs_ GUARDED_BY(send_crit_); |
| 252 std::set<VideoSendStream*> video_send_streams_ GUARDED_BY(send_crit_); | 252 std::set<VideoSendStream*> video_send_streams_ GUARDED_BY(send_crit_); |
| 253 | 253 |
| 254 VideoSendStream::RtpStateMap suspended_video_send_ssrcs_; | 254 typedef std::map<uint32_t, RtpState> RtpStateMap; |
|
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:
|
kwiberg-webrtc
2017/05/19 01:05:09
using?
ossu
2017/05/22 17:13:59
Alright!
|
| 255 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!
| |
| 256 RtpStateMap suspended_video_send_ssrcs_; | |
| 257 | |
| 255 webrtc::RtcEventLog* event_log_; | 258 webrtc::RtcEventLog* event_log_; |
| 256 | 259 |
| 257 // The following members are only accessed (exclusively) from one thread and | 260 // The following members are only accessed (exclusively) from one thread and |
| 258 // from the destructor, and therefore doesn't need any explicit | 261 // from the destructor, and therefore doesn't need any explicit |
| 259 // synchronization. | 262 // synchronization. |
| 260 RateCounter received_bytes_per_second_counter_; | 263 RateCounter received_bytes_per_second_counter_; |
| 261 RateCounter received_audio_bytes_per_second_counter_; | 264 RateCounter received_audio_bytes_per_second_counter_; |
| 262 RateCounter received_video_bytes_per_second_counter_; | 265 RateCounter received_video_bytes_per_second_counter_; |
| 263 RateCounter received_rtcp_bytes_per_second_counter_; | 266 RateCounter received_rtcp_bytes_per_second_counter_; |
| 264 | 267 |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 502 // thread. Re-enable once that is fixed. | 505 // thread. Re-enable once that is fixed. |
| 503 // RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread()); | 506 // RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread()); |
| 504 return this; | 507 return this; |
| 505 } | 508 } |
| 506 | 509 |
| 507 webrtc::AudioSendStream* Call::CreateAudioSendStream( | 510 webrtc::AudioSendStream* Call::CreateAudioSendStream( |
| 508 const webrtc::AudioSendStream::Config& config) { | 511 const webrtc::AudioSendStream::Config& config) { |
| 509 TRACE_EVENT0("webrtc", "Call::CreateAudioSendStream"); | 512 TRACE_EVENT0("webrtc", "Call::CreateAudioSendStream"); |
| 510 RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread()); | 513 RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread()); |
| 511 event_log_->LogAudioSendStreamConfig(config); | 514 event_log_->LogAudioSendStreamConfig(config); |
| 515 | |
| 516 rtc::Optional<RtpState> suspended_rtp_state; | |
| 517 { | |
| 518 const auto& iter = suspended_audio_send_ssrcs_.find(config.rtp.ssrc); | |
| 519 if (iter != suspended_audio_send_ssrcs_.end()) { | |
| 520 suspended_rtp_state.emplace(iter->second); | |
| 521 } | |
| 522 } | |
| 523 | |
| 512 AudioSendStream* send_stream = new AudioSendStream( | 524 AudioSendStream* send_stream = new AudioSendStream( |
| 513 config, config_.audio_state, &worker_queue_, transport_send_.get(), | 525 config, config_.audio_state, &worker_queue_, transport_send_.get(), |
| 514 bitrate_allocator_.get(), event_log_, call_stats_->rtcp_rtt_stats()); | 526 bitrate_allocator_.get(), event_log_, call_stats_->rtcp_rtt_stats(), |
| 527 suspended_rtp_state); | |
| 515 { | 528 { |
| 516 WriteLockScoped write_lock(*send_crit_); | 529 WriteLockScoped write_lock(*send_crit_); |
| 517 RTC_DCHECK(audio_send_ssrcs_.find(config.rtp.ssrc) == | 530 RTC_DCHECK(audio_send_ssrcs_.find(config.rtp.ssrc) == |
| 518 audio_send_ssrcs_.end()); | 531 audio_send_ssrcs_.end()); |
| 519 audio_send_ssrcs_[config.rtp.ssrc] = send_stream; | 532 audio_send_ssrcs_[config.rtp.ssrc] = send_stream; |
| 520 } | 533 } |
| 521 { | 534 { |
| 522 ReadLockScoped read_lock(*receive_crit_); | 535 ReadLockScoped read_lock(*receive_crit_); |
| 523 for (const auto& kv : audio_receive_ssrcs_) { | 536 for (const auto& kv : audio_receive_ssrcs_) { |
| 524 if (kv.second->config().rtp.local_ssrc == config.rtp.ssrc) { | 537 if (kv.second->config().rtp.local_ssrc == config.rtp.ssrc) { |
| 525 kv.second->AssociateSendStream(send_stream); | 538 kv.second->AssociateSendStream(send_stream); |
| 526 } | 539 } |
| 527 } | 540 } |
| 528 } | 541 } |
| 529 send_stream->SignalNetworkState(audio_network_state_); | 542 send_stream->SignalNetworkState(audio_network_state_); |
| 530 UpdateAggregateNetworkState(); | 543 UpdateAggregateNetworkState(); |
| 531 return send_stream; | 544 return send_stream; |
| 532 } | 545 } |
| 533 | 546 |
| 534 void Call::DestroyAudioSendStream(webrtc::AudioSendStream* send_stream) { | 547 void Call::DestroyAudioSendStream(webrtc::AudioSendStream* send_stream) { |
| 535 TRACE_EVENT0("webrtc", "Call::DestroyAudioSendStream"); | 548 TRACE_EVENT0("webrtc", "Call::DestroyAudioSendStream"); |
| 536 RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread()); | 549 RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread()); |
| 537 RTC_DCHECK(send_stream != nullptr); | 550 RTC_DCHECK(send_stream != nullptr); |
| 538 | 551 |
| 539 send_stream->Stop(); | 552 send_stream->Stop(); |
| 540 | 553 |
| 541 webrtc::internal::AudioSendStream* audio_send_stream = | 554 webrtc::internal::AudioSendStream* audio_send_stream = |
| 542 static_cast<webrtc::internal::AudioSendStream*>(send_stream); | 555 static_cast<webrtc::internal::AudioSendStream*>(send_stream); |
| 543 uint32_t ssrc = audio_send_stream->config().rtp.ssrc; | 556 const uint32_t ssrc = audio_send_stream->config().rtp.ssrc; |
| 557 suspended_audio_send_ssrcs_[ssrc] = audio_send_stream->GetRtpState(); | |
| 544 { | 558 { |
| 545 WriteLockScoped write_lock(*send_crit_); | 559 WriteLockScoped write_lock(*send_crit_); |
| 546 size_t num_deleted = audio_send_ssrcs_.erase(ssrc); | 560 size_t num_deleted = audio_send_ssrcs_.erase(ssrc); |
| 547 RTC_DCHECK_EQ(1, num_deleted); | 561 RTC_DCHECK_EQ(1, num_deleted); |
| 548 } | 562 } |
| 549 { | 563 { |
| 550 ReadLockScoped read_lock(*receive_crit_); | 564 ReadLockScoped read_lock(*receive_crit_); |
| 551 for (const auto& kv : audio_receive_ssrcs_) { | 565 for (const auto& kv : audio_receive_ssrcs_) { |
| 552 if (kv.second->config().rtp.local_ssrc == ssrc) { | 566 if (kv.second->config().rtp.local_ssrc == ssrc) { |
| 553 kv.second->AssociateSendStream(nullptr); | 567 kv.second->AssociateSendStream(nullptr); |
| (...skipping 741 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1295 (use_send_side_bwe && header.extension.hasTransportSequenceNumber)) { | 1309 (use_send_side_bwe && header.extension.hasTransportSequenceNumber)) { |
| 1296 receive_side_cc_.OnReceivedPacket( | 1310 receive_side_cc_.OnReceivedPacket( |
| 1297 packet.arrival_time_ms(), packet.payload_size() + packet.padding_size(), | 1311 packet.arrival_time_ms(), packet.payload_size() + packet.padding_size(), |
| 1298 header); | 1312 header); |
| 1299 } | 1313 } |
| 1300 } | 1314 } |
| 1301 | 1315 |
| 1302 } // namespace internal | 1316 } // namespace internal |
| 1303 | 1317 |
| 1304 } // namespace webrtc | 1318 } // namespace webrtc |
| OLD | NEW |