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

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

Issue 1705763002: Remove PacketRouter sender distinction. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: revert sending_media_ = false 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
« no previous file with comments | « webrtc/video/vie_channel.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 class RtpPacketSenderProxy : public RtpPacketSender { 117 class RtpPacketSenderProxy : public RtpPacketSender {
118 public: 118 public:
119 RtpPacketSenderProxy() : rtp_packet_sender_(nullptr) {} 119 RtpPacketSenderProxy() : rtp_packet_sender_(nullptr) {}
120 120
121 void SetPacketSender(RtpPacketSender* rtp_packet_sender) { 121 void SetPacketSender(RtpPacketSender* rtp_packet_sender) {
122 RTC_DCHECK(thread_checker_.CalledOnValidThread()); 122 RTC_DCHECK(thread_checker_.CalledOnValidThread());
123 rtc::CritScope lock(&crit_); 123 rtc::CritScope lock(&crit_);
124 rtp_packet_sender_ = rtp_packet_sender; 124 rtp_packet_sender_ = rtp_packet_sender;
125 } 125 }
126 126
127 bool HasPacketSender() const {
128 RTC_DCHECK(thread_checker_.CalledOnValidThread());
129 rtc::CritScope lock(&crit_);
130 return rtp_packet_sender_ != nullptr;
131 }
132
133 // Implements RtpPacketSender. 127 // Implements RtpPacketSender.
134 void InsertPacket(Priority priority, 128 void InsertPacket(Priority priority,
135 uint32_t ssrc, 129 uint32_t ssrc,
136 uint16_t sequence_number, 130 uint16_t sequence_number,
137 int64_t capture_time_ms, 131 int64_t capture_time_ms,
138 size_t bytes, 132 size_t bytes,
139 bool retransmission) override { 133 bool retransmission) override {
140 rtc::CritScope lock(&crit_); 134 rtc::CritScope lock(&crit_);
141 if (rtp_packet_sender_) { 135 if (rtp_packet_sender_) {
142 rtp_packet_sender_->InsertPacket(priority, ssrc, sequence_number, 136 rtp_packet_sender_->InsertPacket(priority, ssrc, sequence_number,
(...skipping 705 matching lines...) Expand 10 before | Expand all | Expand 10 after
848 configuration.bandwidth_callback = rtcp_observer_.get(); 842 configuration.bandwidth_callback = rtcp_observer_.get();
849 if (pacing_enabled_) { 843 if (pacing_enabled_) {
850 configuration.paced_sender = rtp_packet_sender_proxy_.get(); 844 configuration.paced_sender = rtp_packet_sender_proxy_.get();
851 configuration.transport_sequence_number_allocator = 845 configuration.transport_sequence_number_allocator =
852 seq_num_allocator_proxy_.get(); 846 seq_num_allocator_proxy_.get();
853 configuration.transport_feedback_callback = feedback_observer_proxy_.get(); 847 configuration.transport_feedback_callback = feedback_observer_proxy_.get();
854 } 848 }
855 configuration.event_log = event_log; 849 configuration.event_log = event_log;
856 850
857 _rtpRtcpModule.reset(RtpRtcp::CreateRtpRtcp(configuration)); 851 _rtpRtcpModule.reset(RtpRtcp::CreateRtpRtcp(configuration));
852 _rtpRtcpModule->SetSendingMediaStatus(false);
858 853
859 statistics_proxy_.reset(new StatisticsProxy(_rtpRtcpModule->SSRC())); 854 statistics_proxy_.reset(new StatisticsProxy(_rtpRtcpModule->SSRC()));
860 rtp_receive_statistics_->RegisterRtcpStatisticsCallback( 855 rtp_receive_statistics_->RegisterRtcpStatisticsCallback(
861 statistics_proxy_.get()); 856 statistics_proxy_.get());
862 857
863 Config audioproc_config; 858 Config audioproc_config;
864 audioproc_config.Set<ExperimentalAgc>(new ExperimentalAgc(false)); 859 audioproc_config.Set<ExperimentalAgc>(new ExperimentalAgc(false));
865 rx_audioproc_.reset(AudioProcessing::Create(audioproc_config)); 860 rx_audioproc_.reset(AudioProcessing::Create(audioproc_config));
866 } 861 }
867 862
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
1129 // Resume the previous sequence number which was reset by StopSend(). 1124 // Resume the previous sequence number which was reset by StopSend().
1130 // This needs to be done before |sending| is set to true. 1125 // This needs to be done before |sending| is set to true.
1131 if (send_sequence_number_) 1126 if (send_sequence_number_)
1132 SetInitSequenceNumber(send_sequence_number_); 1127 SetInitSequenceNumber(send_sequence_number_);
1133 1128
1134 if (channel_state_.Get().sending) { 1129 if (channel_state_.Get().sending) {
1135 return 0; 1130 return 0;
1136 } 1131 }
1137 channel_state_.SetSending(true); 1132 channel_state_.SetSending(true);
1138 1133
1134 _rtpRtcpModule->SetSendingMediaStatus(true);
1139 if (_rtpRtcpModule->SetSendingStatus(true) != 0) { 1135 if (_rtpRtcpModule->SetSendingStatus(true) != 0) {
1140 _engineStatisticsPtr->SetLastError( 1136 _engineStatisticsPtr->SetLastError(
1141 VE_RTP_RTCP_MODULE_ERROR, kTraceError, 1137 VE_RTP_RTCP_MODULE_ERROR, kTraceError,
1142 "StartSend() RTP/RTCP failed to start sending"); 1138 "StartSend() RTP/RTCP failed to start sending");
1139 _rtpRtcpModule->SetSendingMediaStatus(false);
1143 rtc::CritScope cs(&_callbackCritSect); 1140 rtc::CritScope cs(&_callbackCritSect);
1144 channel_state_.SetSending(false); 1141 channel_state_.SetSending(false);
1145 return -1; 1142 return -1;
1146 } 1143 }
1147 1144
1148 return 0; 1145 return 0;
1149 } 1146 }
1150 1147
1151 int32_t Channel::StopSend() { 1148 int32_t Channel::StopSend() {
1152 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId), 1149 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId),
(...skipping 11 matching lines...) Expand all
1164 // https://code.google.com/p/webrtc/issues/detail?id=2111 . 1161 // https://code.google.com/p/webrtc/issues/detail?id=2111 .
1165 send_sequence_number_ = _rtpRtcpModule->SequenceNumber(); 1162 send_sequence_number_ = _rtpRtcpModule->SequenceNumber();
1166 1163
1167 // Reset sending SSRC and sequence number and triggers direct transmission 1164 // Reset sending SSRC and sequence number and triggers direct transmission
1168 // of RTCP BYE 1165 // of RTCP BYE
1169 if (_rtpRtcpModule->SetSendingStatus(false) == -1) { 1166 if (_rtpRtcpModule->SetSendingStatus(false) == -1) {
1170 _engineStatisticsPtr->SetLastError( 1167 _engineStatisticsPtr->SetLastError(
1171 VE_RTP_RTCP_MODULE_ERROR, kTraceWarning, 1168 VE_RTP_RTCP_MODULE_ERROR, kTraceWarning,
1172 "StartSend() RTP/RTCP failed to stop sending"); 1169 "StartSend() RTP/RTCP failed to stop sending");
1173 } 1170 }
1171 _rtpRtcpModule->SetSendingMediaStatus(false);
1174 1172
1175 return 0; 1173 return 0;
1176 } 1174 }
1177 1175
1178 int32_t Channel::StartReceiving() { 1176 int32_t Channel::StartReceiving() {
1179 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId), 1177 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId),
1180 "Channel::StartReceiving()"); 1178 "Channel::StartReceiving()");
1181 if (channel_state_.Get().receiving) { 1179 if (channel_state_.Get().receiving) {
1182 return 0; 1180 return 0;
1183 } 1181 }
(...skipping 1408 matching lines...) Expand 10 before | Expand all | Expand 10 after
2592 TransportFeedbackObserver* transport_feedback_observer, 2590 TransportFeedbackObserver* transport_feedback_observer,
2593 PacketRouter* packet_router) { 2591 PacketRouter* packet_router) {
2594 RTC_DCHECK(rtp_packet_sender); 2592 RTC_DCHECK(rtp_packet_sender);
2595 RTC_DCHECK(transport_feedback_observer); 2593 RTC_DCHECK(transport_feedback_observer);
2596 RTC_DCHECK(packet_router && !packet_router_); 2594 RTC_DCHECK(packet_router && !packet_router_);
2597 feedback_observer_proxy_->SetTransportFeedbackObserver( 2595 feedback_observer_proxy_->SetTransportFeedbackObserver(
2598 transport_feedback_observer); 2596 transport_feedback_observer);
2599 seq_num_allocator_proxy_->SetSequenceNumberAllocator(packet_router); 2597 seq_num_allocator_proxy_->SetSequenceNumberAllocator(packet_router);
2600 rtp_packet_sender_proxy_->SetPacketSender(rtp_packet_sender); 2598 rtp_packet_sender_proxy_->SetPacketSender(rtp_packet_sender);
2601 _rtpRtcpModule->SetStorePacketsStatus(true, 600); 2599 _rtpRtcpModule->SetStorePacketsStatus(true, 600);
2602 packet_router->AddRtpModule(_rtpRtcpModule.get(), true); 2600 packet_router->AddRtpModule(_rtpRtcpModule.get());
2603 packet_router_ = packet_router; 2601 packet_router_ = packet_router;
2604 } 2602 }
2605 2603
2606 void Channel::RegisterReceiverCongestionControlObjects( 2604 void Channel::RegisterReceiverCongestionControlObjects(
2607 PacketRouter* packet_router) { 2605 PacketRouter* packet_router) {
2608 RTC_DCHECK(packet_router && !packet_router_); 2606 RTC_DCHECK(packet_router && !packet_router_);
2609 packet_router->AddRtpModule(_rtpRtcpModule.get(), false); 2607 packet_router->AddRtpModule(_rtpRtcpModule.get());
2610 packet_router_ = packet_router; 2608 packet_router_ = packet_router;
2611 } 2609 }
2612 2610
2613 void Channel::ResetCongestionControlObjects() { 2611 void Channel::ResetCongestionControlObjects() {
2614 RTC_DCHECK(packet_router_); 2612 RTC_DCHECK(packet_router_);
2615 _rtpRtcpModule->SetStorePacketsStatus(false, 600); 2613 _rtpRtcpModule->SetStorePacketsStatus(false, 600);
2616 feedback_observer_proxy_->SetTransportFeedbackObserver(nullptr); 2614 feedback_observer_proxy_->SetTransportFeedbackObserver(nullptr);
2617 seq_num_allocator_proxy_->SetSequenceNumberAllocator(nullptr); 2615 seq_num_allocator_proxy_->SetSequenceNumberAllocator(nullptr);
2618 const bool sender = rtp_packet_sender_proxy_->HasPacketSender(); 2616 packet_router_->RemoveRtpModule(_rtpRtcpModule.get());
2619 packet_router_->RemoveRtpModule(_rtpRtcpModule.get(), sender);
2620 packet_router_ = nullptr; 2617 packet_router_ = nullptr;
2621 rtp_packet_sender_proxy_->SetPacketSender(nullptr); 2618 rtp_packet_sender_proxy_->SetPacketSender(nullptr);
2622 } 2619 }
2623 2620
2624 void Channel::SetRTCPStatus(bool enable) { 2621 void Channel::SetRTCPStatus(bool enable) {
2625 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId), 2622 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId),
2626 "Channel::SetRTCPStatus()"); 2623 "Channel::SetRTCPStatus()");
2627 _rtpRtcpModule->SetRTCPStatus(enable ? RtcpMode::kCompound : RtcpMode::kOff); 2624 _rtpRtcpModule->SetRTCPStatus(enable ? RtcpMode::kCompound : RtcpMode::kOff);
2628 } 2625 }
2629 2626
(...skipping 1020 matching lines...) Expand 10 before | Expand all | Expand 10 after
3650 int64_t min_rtt = 0; 3647 int64_t min_rtt = 0;
3651 if (_rtpRtcpModule->RTT(remoteSSRC, &rtt, &avg_rtt, &min_rtt, &max_rtt) != 3648 if (_rtpRtcpModule->RTT(remoteSSRC, &rtt, &avg_rtt, &min_rtt, &max_rtt) !=
3652 0) { 3649 0) {
3653 return 0; 3650 return 0;
3654 } 3651 }
3655 return rtt; 3652 return rtt;
3656 } 3653 }
3657 3654
3658 } // namespace voe 3655 } // namespace voe
3659 } // namespace webrtc 3656 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video/vie_channel.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698