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

Side by Side Diff: webrtc/modules/congestion_controller/send_side_congestion_controller.cc

Issue 3000773002: Move PacedSender ownership to RtpTransportControllerSend. (Closed)
Patch Set: Fix test. Created 3 years, 4 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 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 std::sort(input->begin(), input->end(), PacketFeedbackComparator()); 91 std::sort(input->begin(), input->end(), PacketFeedbackComparator());
92 } 92 }
93 93
94 } // namespace 94 } // namespace
95 95
96 SendSideCongestionController::SendSideCongestionController( 96 SendSideCongestionController::SendSideCongestionController(
97 const Clock* clock, 97 const Clock* clock,
98 Observer* observer, 98 Observer* observer,
99 RtcEventLog* event_log, 99 RtcEventLog* event_log,
100 PacketRouter* packet_router) 100 PacketRouter* packet_router)
101 : SendSideCongestionController( 101 : clock_(clock),
102 clock, 102 observer_(observer),
103 observer, 103 event_log_(event_log),
104 event_log, 104 owned_pacer_(
105 std::unique_ptr<PacedSender>( 105 rtc::MakeUnique<PacedSender>(clock, packet_router, event_log)),
106 new PacedSender(clock, packet_router, event_log))) {} 106 pacer_(owned_pacer_.get()),
107 bitrate_controller_(
108 BitrateController::CreateBitrateController(clock_, event_log)),
109 acknowledged_bitrate_estimator_(
110 rtc::MakeUnique<AcknowledgedBitrateEstimator>()),
111 probe_controller_(new ProbeController(pacer_, clock_)),
112 retransmission_rate_limiter_(
113 new RateLimiter(clock, kRetransmitWindowSizeMs)),
114 transport_feedback_adapter_(clock_),
115 last_reported_bitrate_bps_(0),
116 last_reported_fraction_loss_(0),
117 last_reported_rtt_(0),
118 network_state_(kNetworkUp),
119 pause_pacer_(false),
120 pacer_paused_(false),
121 min_bitrate_bps_(congestion_controller::GetMinBitrateBps()),
122 delay_based_bwe_(new DelayBasedBwe(event_log_, clock_)),
123 in_cwnd_experiment_(CwndExperimentEnabled()),
124 accepted_queue_ms_(kDefaultAcceptedQueueMs),
125 was_in_alr_(0) {
126 delay_based_bwe_->SetMinBitrate(min_bitrate_bps_);
127 if (in_cwnd_experiment_ &&
128 !ReadCwndExperimentParameter(&accepted_queue_ms_)) {
129 LOG(LS_WARNING) << "Failed to parse parameters for CwndExperiment "
130 "from field trial string. Experiment disabled.";
131 in_cwnd_experiment_ = false;
132 }
133 }
107 134
108 SendSideCongestionController::SendSideCongestionController( 135 SendSideCongestionController::SendSideCongestionController(
109 const Clock* clock, 136 const Clock* clock,
110 Observer* observer, 137 Observer* observer,
111 RtcEventLog* event_log, 138 RtcEventLog* event_log,
112 std::unique_ptr<PacedSender> pacer) 139 PacedSender* pacer)
113 : clock_(clock), 140 : clock_(clock),
114 observer_(observer), 141 observer_(observer),
115 event_log_(event_log), 142 event_log_(event_log),
116 pacer_(std::move(pacer)), 143 pacer_(pacer),
117 bitrate_controller_( 144 bitrate_controller_(
118 BitrateController::CreateBitrateController(clock_, event_log)), 145 BitrateController::CreateBitrateController(clock_, event_log)),
119 acknowledged_bitrate_estimator_( 146 acknowledged_bitrate_estimator_(
120 rtc::MakeUnique<AcknowledgedBitrateEstimator>()), 147 rtc::MakeUnique<AcknowledgedBitrateEstimator>()),
121 probe_controller_(new ProbeController(pacer_.get(), clock_)), 148 probe_controller_(new ProbeController(pacer_, clock_)),
122 retransmission_rate_limiter_( 149 retransmission_rate_limiter_(
123 new RateLimiter(clock, kRetransmitWindowSizeMs)), 150 new RateLimiter(clock, kRetransmitWindowSizeMs)),
124 transport_feedback_adapter_(clock_), 151 transport_feedback_adapter_(clock_),
125 last_reported_bitrate_bps_(0), 152 last_reported_bitrate_bps_(0),
126 last_reported_fraction_loss_(0), 153 last_reported_fraction_loss_(0),
127 last_reported_rtt_(0), 154 last_reported_rtt_(0),
128 network_state_(kNetworkUp), 155 network_state_(kNetworkUp),
129 pause_pacer_(false), 156 pause_pacer_(false),
130 pacer_paused_(false), 157 pacer_paused_(false),
131 min_bitrate_bps_(congestion_controller::GetMinBitrateBps()), 158 min_bitrate_bps_(congestion_controller::GetMinBitrateBps()),
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 } 249 }
223 250
224 RateLimiter* SendSideCongestionController::GetRetransmissionRateLimiter() { 251 RateLimiter* SendSideCongestionController::GetRetransmissionRateLimiter() {
225 return retransmission_rate_limiter_.get(); 252 return retransmission_rate_limiter_.get();
226 } 253 }
227 254
228 void SendSideCongestionController::EnablePeriodicAlrProbing(bool enable) { 255 void SendSideCongestionController::EnablePeriodicAlrProbing(bool enable) {
229 probe_controller_->EnablePeriodicAlrProbing(enable); 256 probe_controller_->EnablePeriodicAlrProbing(enable);
230 } 257 }
231 258
232 void SendSideCongestionController::SetAllocatedSendBitrateLimits( 259 void SendSideCongestionController::SetAllocatedSendBitrateLimits(
nisse-webrtc 2017/08/18 06:19:18 From where is this called? Would it make sense to
stefan-webrtc 2017/08/22 07:37:53 I've moved this now too. There are more things to
233 int min_send_bitrate_bps, 260 int min_send_bitrate_bps,
234 int max_padding_bitrate_bps) { 261 int max_padding_bitrate_bps) {
235 pacer_->SetSendBitrateLimits(min_send_bitrate_bps, max_padding_bitrate_bps); 262 pacer_->SetSendBitrateLimits(min_send_bitrate_bps, max_padding_bitrate_bps);
236 } 263 }
237 264
238 int64_t SendSideCongestionController::GetPacerQueuingDelayMs() const { 265 int64_t SendSideCongestionController::GetPacerQueuingDelayMs() const {
239 return IsNetworkDown() ? 0 : pacer_->QueueInMs(); 266 return IsNetworkDown() ? 0 : pacer_->QueueInMs();
240 } 267 }
241 268
242 int64_t SendSideCongestionController::GetFirstPacketTimeMs() const { 269 int64_t SendSideCongestionController::GetFirstPacketTimeMs() const {
243 return pacer_->FirstSentPacketTimeMs(); 270 return pacer_->FirstSentPacketTimeMs();
244 } 271 }
245 272
246 PacedSender* SendSideCongestionController::pacer() {
247 return pacer_.get();
248 }
249
250 TransportFeedbackObserver* 273 TransportFeedbackObserver*
251 SendSideCongestionController::GetTransportFeedbackObserver() { 274 SendSideCongestionController::GetTransportFeedbackObserver() {
252 return this; 275 return this;
253 } 276 }
254 277
255 void SendSideCongestionController::SignalNetworkState(NetworkState state) { 278 void SendSideCongestionController::SignalNetworkState(NetworkState state) {
256 LOG(LS_INFO) << "SignalNetworkState " 279 LOG(LS_INFO) << "SignalNetworkState "
257 << (state == kNetworkUp ? "Up" : "Down"); 280 << (state == kNetworkUp ? "Up" : "Down");
258 { 281 {
259 rtc::CritScope cs(&network_state_lock_); 282 rtc::CritScope cs(&network_state_lock_);
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 bool SendSideCongestionController::IsSendQueueFull() const { 463 bool SendSideCongestionController::IsSendQueueFull() const {
441 return pacer_->ExpectedQueueTimeMs() > PacedSender::kMaxQueueLengthMs; 464 return pacer_->ExpectedQueueTimeMs() > PacedSender::kMaxQueueLengthMs;
442 } 465 }
443 466
444 bool SendSideCongestionController::IsNetworkDown() const { 467 bool SendSideCongestionController::IsNetworkDown() const {
445 rtc::CritScope cs(&network_state_lock_); 468 rtc::CritScope cs(&network_state_lock_);
446 return network_state_ == kNetworkDown; 469 return network_state_ == kNetworkDown;
447 } 470 }
448 471
449 } // namespace webrtc 472 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698