OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |