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