Chromium Code Reviews

Side by Side Diff: webrtc/voice_engine/channel.cc

Issue 1628683002: Use separate rtp module lists for send and receive in PacketRouter. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Addressed comments. Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 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 107 matching lines...)
118 public: 118 public:
119 RtpPacketSenderProxy() : rtp_packet_sender_(nullptr) { 119 RtpPacketSenderProxy() : rtp_packet_sender_(nullptr) {
120 } 120 }
121 121
122 void SetPacketSender(RtpPacketSender* rtp_packet_sender) { 122 void SetPacketSender(RtpPacketSender* rtp_packet_sender) {
123 RTC_DCHECK(thread_checker_.CalledOnValidThread()); 123 RTC_DCHECK(thread_checker_.CalledOnValidThread());
124 rtc::CritScope lock(&crit_); 124 rtc::CritScope lock(&crit_);
125 rtp_packet_sender_ = rtp_packet_sender; 125 rtp_packet_sender_ = rtp_packet_sender;
126 } 126 }
127 127
128 bool HasPacketSender() const {
129 RTC_DCHECK(thread_checker_.CalledOnValidThread());
130 rtc::CritScope lock(&crit_);
131 return rtp_packet_sender_ != nullptr;
132 }
133
128 // Implements RtpPacketSender. 134 // Implements RtpPacketSender.
129 void InsertPacket(Priority priority, 135 void InsertPacket(Priority priority,
130 uint32_t ssrc, 136 uint32_t ssrc,
131 uint16_t sequence_number, 137 uint16_t sequence_number,
132 int64_t capture_time_ms, 138 int64_t capture_time_ms,
133 size_t bytes, 139 size_t bytes,
134 bool retransmission) override { 140 bool retransmission) override {
135 rtc::CritScope lock(&crit_); 141 rtc::CritScope lock(&crit_);
136 if (rtp_packet_sender_) { 142 if (rtp_packet_sender_) {
137 rtp_packet_sender_->InsertPacket(priority, ssrc, sequence_number, 143 rtp_packet_sender_->InsertPacket(priority, ssrc, sequence_number,
(...skipping 2777 matching lines...)
2915 kRtpExtensionTransportSequenceNumber); 2921 kRtpExtensionTransportSequenceNumber);
2916 bool ret = rtp_header_parser_->RegisterRtpHeaderExtension( 2922 bool ret = rtp_header_parser_->RegisterRtpHeaderExtension(
2917 kRtpExtensionTransportSequenceNumber, id); 2923 kRtpExtensionTransportSequenceNumber, id);
2918 RTC_DCHECK(ret); 2924 RTC_DCHECK(ret);
2919 } 2925 }
2920 2926
2921 void Channel::SetCongestionControlObjects( 2927 void Channel::SetCongestionControlObjects(
2922 RtpPacketSender* rtp_packet_sender, 2928 RtpPacketSender* rtp_packet_sender,
2923 TransportFeedbackObserver* transport_feedback_observer, 2929 TransportFeedbackObserver* transport_feedback_observer,
2924 PacketRouter* packet_router) { 2930 PacketRouter* packet_router) {
2931 bool sender = rtp_packet_sender != nullptr ||
2932 (rtp_packet_sender_proxy_.get() &&
2933 rtp_packet_sender_proxy_->HasPacketSender());
the sun 2016/01/25 15:42:01 Can this property change as a consequence of this
stefan-webrtc 2016/01/25 16:00:26 It can change to null as the stream is being teare
the sun 2016/01/26 09:17:03 Very well, but I think this code is becoming hard
stefan-webrtc 2016/01/26 10:50:38 Agree, done.
2925 RTC_DCHECK(packet_router != nullptr || packet_router_ != nullptr); 2934 RTC_DCHECK(packet_router != nullptr || packet_router_ != nullptr);
2926 if (transport_feedback_observer) { 2935 if (transport_feedback_observer) {
2927 RTC_DCHECK(feedback_observer_proxy_.get()); 2936 RTC_DCHECK(feedback_observer_proxy_.get());
2928 feedback_observer_proxy_->SetTransportFeedbackObserver( 2937 feedback_observer_proxy_->SetTransportFeedbackObserver(
2929 transport_feedback_observer); 2938 transport_feedback_observer);
2930 } 2939 }
2931 if (rtp_packet_sender) { 2940 if (rtp_packet_sender) {
2932 RTC_DCHECK(rtp_packet_sender_proxy_.get()); 2941 RTC_DCHECK(rtp_packet_sender_proxy_.get());
2933 rtp_packet_sender_proxy_->SetPacketSender(rtp_packet_sender); 2942 rtp_packet_sender_proxy_->SetPacketSender(rtp_packet_sender);
2934 } 2943 }
2935 if (seq_num_allocator_proxy_.get()) { 2944 if (seq_num_allocator_proxy_.get()) {
2936 seq_num_allocator_proxy_->SetSequenceNumberAllocator(packet_router); 2945 seq_num_allocator_proxy_->SetSequenceNumberAllocator(packet_router);
2937 } 2946 }
2938 _rtpRtcpModule->SetStorePacketsStatus(rtp_packet_sender != nullptr, 600); 2947 _rtpRtcpModule->SetStorePacketsStatus(rtp_packet_sender != nullptr, 600);
2939 if (packet_router != nullptr) { 2948 if (packet_router != nullptr) {
2940 packet_router->AddRtpModule(_rtpRtcpModule.get()); 2949 packet_router->AddRtpModule(_rtpRtcpModule.get(), sender);
2941 } else { 2950 } else {
2942 packet_router_->RemoveRtpModule(_rtpRtcpModule.get()); 2951 packet_router_->RemoveRtpModule(_rtpRtcpModule.get(), sender);
2943 } 2952 }
2944 packet_router_ = packet_router; 2953 packet_router_ = packet_router;
2945 } 2954 }
2946 2955
2947 void Channel::SetRTCPStatus(bool enable) { 2956 void Channel::SetRTCPStatus(bool enable) {
2948 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId), 2957 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId),
2949 "Channel::SetRTCPStatus()"); 2958 "Channel::SetRTCPStatus()");
2950 _rtpRtcpModule->SetRTCPStatus(enable ? RtcpMode::kCompound : RtcpMode::kOff); 2959 _rtpRtcpModule->SetRTCPStatus(enable ? RtcpMode::kCompound : RtcpMode::kOff);
2951 } 2960 }
2952 2961
(...skipping 1151 matching lines...)
4104 int64_t min_rtt = 0; 4113 int64_t min_rtt = 0;
4105 if (_rtpRtcpModule->RTT(remoteSSRC, &rtt, &avg_rtt, &min_rtt, &max_rtt) 4114 if (_rtpRtcpModule->RTT(remoteSSRC, &rtt, &avg_rtt, &min_rtt, &max_rtt)
4106 != 0) { 4115 != 0) {
4107 return 0; 4116 return 0;
4108 } 4117 }
4109 return rtt; 4118 return rtt;
4110 } 4119 }
4111 4120
4112 } // namespace voe 4121 } // namespace voe
4113 } // namespace webrtc 4122 } // namespace webrtc
OLDNEW
« webrtc/modules/pacing/packet_router.cc ('K') | « webrtc/video/vie_channel.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine