Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

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: Add more dchecks. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
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...) Expand 10 before | Expand all | Expand 10 after
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 2773 matching lines...) Expand 10 before | Expand all | Expand 10 after
2911 } 2917 }
2912 2918
2913 void Channel::EnableReceiveTransportSequenceNumber(int id) { 2919 void Channel::EnableReceiveTransportSequenceNumber(int id) {
2914 rtp_header_parser_->DeregisterRtpHeaderExtension( 2920 rtp_header_parser_->DeregisterRtpHeaderExtension(
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::RegisterSenderCongestionControlObjects(
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) {
2925 RTC_DCHECK(packet_router != nullptr || packet_router_ != nullptr); 2931 RTC_DCHECK(packet_router && !packet_router_);
2926 if (transport_feedback_observer) { 2932 RTC_DCHECK(transport_feedback_observer && feedback_observer_proxy_.get());
2927 RTC_DCHECK(feedback_observer_proxy_.get()); 2933 RTC_DCHECK(seq_num_allocator_proxy_.get());
2928 feedback_observer_proxy_->SetTransportFeedbackObserver( 2934 RTC_DCHECK(rtp_packet_sender && rtp_packet_sender_proxy_.get());
2929 transport_feedback_observer); 2935 feedback_observer_proxy_->SetTransportFeedbackObserver(
2930 } 2936 transport_feedback_observer);
2931 if (rtp_packet_sender) { 2937 seq_num_allocator_proxy_->SetSequenceNumberAllocator(packet_router);
2932 RTC_DCHECK(rtp_packet_sender_proxy_.get()); 2938 rtp_packet_sender_proxy_->SetPacketSender(rtp_packet_sender);
2933 rtp_packet_sender_proxy_->SetPacketSender(rtp_packet_sender);
2934 }
2935 if (seq_num_allocator_proxy_.get()) {
2936 seq_num_allocator_proxy_->SetSequenceNumberAllocator(packet_router);
2937 }
2938 _rtpRtcpModule->SetStorePacketsStatus(rtp_packet_sender != nullptr, 600); 2939 _rtpRtcpModule->SetStorePacketsStatus(rtp_packet_sender != nullptr, 600);
2939 if (packet_router != nullptr) { 2940 packet_router->AddRtpModule(_rtpRtcpModule.get(), true);
the sun 2016/01/28 15:33:45 Could we call _rtpRtcpModule->SetSendingMediaStatu
stefan-webrtc 2016/01/28 15:52:00 I think we can, but as I'm not likely to be able t
2940 packet_router->AddRtpModule(_rtpRtcpModule.get());
2941 } else {
2942 packet_router_->RemoveRtpModule(_rtpRtcpModule.get());
2943 }
2944 packet_router_ = packet_router; 2941 packet_router_ = packet_router;
2945 } 2942 }
2946 2943
2944 void Channel::RegisterReceiverCongestionControlObjects(
2945 PacketRouter* packet_router) {
2946 RTC_DCHECK(packet_router && !packet_router_);
2947 packet_router->AddRtpModule(_rtpRtcpModule.get(), false);
2948 packet_router_ = packet_router;
2949 }
2950
2951 void Channel::ResetCongestionControlObjects() {
2952 _rtpRtcpModule->SetStorePacketsStatus(false, 600);
2953 if (feedback_observer_proxy_) {
the sun 2016/01/28 15:33:45 This is always true? Do an RTC_DCHECK() like in Re
stefan-webrtc 2016/01/28 15:52:00 No, it's not true if pacing hasn't been enabled fo
the sun 2016/01/29 10:07:07 Ah ok, very well. Another option would be to alway
stefan-webrtc 2016/01/29 10:59:55 That's an option. I'll make it so.
2954 feedback_observer_proxy_->SetTransportFeedbackObserver(nullptr);
2955 }
2956 if (seq_num_allocator_proxy_) {
2957 seq_num_allocator_proxy_->SetSequenceNumberAllocator(nullptr);
2958 }
2959 bool sender = false;
2960 if (rtp_packet_sender_proxy_) {
2961 sender = rtp_packet_sender_proxy_->HasPacketSender();
2962 rtp_packet_sender_proxy_->SetPacketSender(nullptr);
the sun 2016/01/28 15:33:45 Always just SetPacketSender(nullptr)? Remove HasPa
stefan-webrtc 2016/01/28 15:52:00 I need HasPacketSender() to determine if it's a se
the sun 2016/01/29 10:07:07 I think a single point of decision making is prefe
stefan-webrtc 2016/01/29 10:59:55 Ack. I think it will be hard to do at the moment u
2963 }
2964 packet_router_->RemoveRtpModule(_rtpRtcpModule.get(), sender);
2965 packet_router_ = nullptr;
2966 }
2967
2947 void Channel::SetRTCPStatus(bool enable) { 2968 void Channel::SetRTCPStatus(bool enable) {
2948 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId), 2969 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId),
2949 "Channel::SetRTCPStatus()"); 2970 "Channel::SetRTCPStatus()");
2950 _rtpRtcpModule->SetRTCPStatus(enable ? RtcpMode::kCompound : RtcpMode::kOff); 2971 _rtpRtcpModule->SetRTCPStatus(enable ? RtcpMode::kCompound : RtcpMode::kOff);
2951 } 2972 }
2952 2973
2953 int 2974 int
2954 Channel::GetRTCPStatus(bool& enabled) 2975 Channel::GetRTCPStatus(bool& enabled)
2955 { 2976 {
2956 RtcpMode method = _rtpRtcpModule->RTCP(); 2977 RtcpMode method = _rtpRtcpModule->RTCP();
(...skipping 1147 matching lines...) Expand 10 before | Expand all | Expand 10 after
4104 int64_t min_rtt = 0; 4125 int64_t min_rtt = 0;
4105 if (_rtpRtcpModule->RTT(remoteSSRC, &rtt, &avg_rtt, &min_rtt, &max_rtt) 4126 if (_rtpRtcpModule->RTT(remoteSSRC, &rtt, &avg_rtt, &min_rtt, &max_rtt)
4106 != 0) { 4127 != 0) {
4107 return 0; 4128 return 0;
4108 } 4129 }
4109 return rtt; 4130 return rtt;
4110 } 4131 }
4111 4132
4112 } // namespace voe 4133 } // namespace voe
4113 } // namespace webrtc 4134 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698