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 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 | 145 |
146 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(WrappingBitrateEstimator); | 146 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(WrappingBitrateEstimator); |
147 }; | 147 }; |
148 | 148 |
149 } // namespace | 149 } // namespace |
150 | 150 |
151 CongestionController::CongestionController( | 151 CongestionController::CongestionController( |
152 Clock* clock, | 152 Clock* clock, |
153 Observer* observer, | 153 Observer* observer, |
154 RemoteBitrateObserver* remote_bitrate_observer, | 154 RemoteBitrateObserver* remote_bitrate_observer, |
155 RtcEventLog* event_log) | 155 RtcEventLog* event_log, |
156 : clock_(clock), | 156 PacketRouter* packet_router) |
157 observer_(observer), | 157 : CongestionController( |
158 packet_router_(new PacketRouter()), | 158 clock, |
159 pacer_(new PacedSender(clock_, packet_router_.get())), | 159 observer, |
160 remote_bitrate_estimator_( | 160 remote_bitrate_observer, |
161 new WrappingBitrateEstimator(remote_bitrate_observer, clock_)), | 161 event_log, |
162 bitrate_controller_( | 162 packet_router, |
163 BitrateController::CreateBitrateController(clock_, event_log)), | 163 std::unique_ptr<PacedSender>(new PacedSender(clock, packet_router))) { |
164 probe_controller_(new ProbeController(pacer_.get(), clock_)), | |
165 retransmission_rate_limiter_( | |
166 new RateLimiter(clock, kRetransmitWindowSizeMs)), | |
167 remote_estimator_proxy_(clock_, packet_router_.get()), | |
168 transport_feedback_adapter_(clock_, bitrate_controller_.get()), | |
169 min_bitrate_bps_(congestion_controller::GetMinBitrateBps()), | |
170 max_bitrate_bps_(0), | |
171 last_reported_bitrate_bps_(0), | |
172 last_reported_fraction_loss_(0), | |
173 last_reported_rtt_(0), | |
174 network_state_(kNetworkUp) { | |
175 Init(); | |
176 } | 164 } |
177 | 165 |
178 CongestionController::CongestionController( | 166 CongestionController::CongestionController( |
179 Clock* clock, | 167 Clock* clock, |
180 Observer* observer, | 168 Observer* observer, |
181 RemoteBitrateObserver* remote_bitrate_observer, | 169 RemoteBitrateObserver* remote_bitrate_observer, |
182 RtcEventLog* event_log, | 170 RtcEventLog* event_log, |
183 std::unique_ptr<PacketRouter> packet_router, | 171 PacketRouter* packet_router, |
184 std::unique_ptr<PacedSender> pacer) | 172 std::unique_ptr<PacedSender> pacer) |
185 : clock_(clock), | 173 : clock_(clock), |
186 observer_(observer), | 174 observer_(observer), |
187 packet_router_(std::move(packet_router)), | 175 packet_router_(packet_router), |
188 pacer_(std::move(pacer)), | 176 pacer_(std::move(pacer)), |
189 remote_bitrate_estimator_( | 177 remote_bitrate_estimator_( |
190 new WrappingBitrateEstimator(remote_bitrate_observer, clock_)), | 178 new WrappingBitrateEstimator(remote_bitrate_observer, clock_)), |
191 // Constructed last as this object calls the provided callback on | 179 // Constructed last as this object calls the provided callback on |
192 // construction. | 180 // construction. |
193 bitrate_controller_( | 181 bitrate_controller_( |
194 BitrateController::CreateBitrateController(clock_, event_log)), | 182 BitrateController::CreateBitrateController(clock_, event_log)), |
195 probe_controller_(new ProbeController(pacer_.get(), clock_)), | 183 probe_controller_(new ProbeController(pacer_.get(), clock_)), |
196 retransmission_rate_limiter_( | 184 retransmission_rate_limiter_( |
197 new RateLimiter(clock, kRetransmitWindowSizeMs)), | 185 new RateLimiter(clock, kRetransmitWindowSizeMs)), |
198 remote_estimator_proxy_(clock_, packet_router_.get()), | 186 remote_estimator_proxy_(clock_, packet_router_), |
199 transport_feedback_adapter_(clock_, bitrate_controller_.get()), | 187 transport_feedback_adapter_(clock_, bitrate_controller_.get()), |
200 min_bitrate_bps_(congestion_controller::GetMinBitrateBps()), | 188 min_bitrate_bps_(congestion_controller::GetMinBitrateBps()), |
201 max_bitrate_bps_(0), | 189 max_bitrate_bps_(0), |
202 last_reported_bitrate_bps_(0), | 190 last_reported_bitrate_bps_(0), |
203 last_reported_fraction_loss_(0), | 191 last_reported_fraction_loss_(0), |
204 last_reported_rtt_(0), | 192 last_reported_rtt_(0), |
205 network_state_(kNetworkUp) { | 193 network_state_(kNetworkUp) { |
206 Init(); | 194 transport_feedback_adapter_.InitBwe(); |
| 195 transport_feedback_adapter_.SetMinBitrate(min_bitrate_bps_); |
207 } | 196 } |
208 | 197 |
209 CongestionController::~CongestionController() {} | 198 CongestionController::~CongestionController() {} |
210 | 199 |
211 void CongestionController::Init() { | |
212 transport_feedback_adapter_.InitBwe(); | |
213 transport_feedback_adapter_.SetMinBitrate(min_bitrate_bps_); | |
214 } | |
215 | |
216 void CongestionController::SetBweBitrates(int min_bitrate_bps, | 200 void CongestionController::SetBweBitrates(int min_bitrate_bps, |
217 int start_bitrate_bps, | 201 int start_bitrate_bps, |
218 int max_bitrate_bps) { | 202 int max_bitrate_bps) { |
219 ClampBitrates(&start_bitrate_bps, &min_bitrate_bps, &max_bitrate_bps); | 203 ClampBitrates(&start_bitrate_bps, &min_bitrate_bps, &max_bitrate_bps); |
220 bitrate_controller_->SetBitrates(start_bitrate_bps, | 204 bitrate_controller_->SetBitrates(start_bitrate_bps, |
221 min_bitrate_bps, | 205 min_bitrate_bps, |
222 max_bitrate_bps); | 206 max_bitrate_bps); |
223 | 207 |
224 probe_controller_->SetBitrates(min_bitrate_bps, start_bitrate_bps, | 208 probe_controller_->SetBitrates(min_bitrate_bps, start_bitrate_bps, |
225 max_bitrate_bps); | 209 max_bitrate_bps); |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
369 bool CongestionController::IsSendQueueFull() const { | 353 bool CongestionController::IsSendQueueFull() const { |
370 return pacer_->ExpectedQueueTimeMs() > PacedSender::kMaxQueueLengthMs; | 354 return pacer_->ExpectedQueueTimeMs() > PacedSender::kMaxQueueLengthMs; |
371 } | 355 } |
372 | 356 |
373 bool CongestionController::IsNetworkDown() const { | 357 bool CongestionController::IsNetworkDown() const { |
374 rtc::CritScope cs(&critsect_); | 358 rtc::CritScope cs(&critsect_); |
375 return network_state_ == kNetworkDown; | 359 return network_state_ == kNetworkDown; |
376 } | 360 } |
377 | 361 |
378 } // namespace webrtc | 362 } // namespace webrtc |
OLD | NEW |