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 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
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)), |
stefan-webrtc
2017/08/11 13:53:38
This is now a copy of the constructor below, besid
| |
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 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
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 Loading... | |
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 |
OLD | NEW |