| 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 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 packet_router_(packet_router), | 164 packet_router_(packet_router), |
| 165 pacer_(std::move(pacer)), | 165 pacer_(std::move(pacer)), |
| 166 bitrate_controller_( | 166 bitrate_controller_( |
| 167 BitrateController::CreateBitrateController(clock_, event_log)), | 167 BitrateController::CreateBitrateController(clock_, event_log)), |
| 168 probe_controller_(new ProbeController(pacer_.get(), clock_)), | 168 probe_controller_(new ProbeController(pacer_.get(), clock_)), |
| 169 retransmission_rate_limiter_( | 169 retransmission_rate_limiter_( |
| 170 new RateLimiter(clock, kRetransmitWindowSizeMs)), | 170 new RateLimiter(clock, kRetransmitWindowSizeMs)), |
| 171 remote_bitrate_estimator_(remote_bitrate_observer, clock_), | 171 remote_bitrate_estimator_(remote_bitrate_observer, clock_), |
| 172 remote_estimator_proxy_(clock_, packet_router_), | 172 remote_estimator_proxy_(clock_, packet_router_), |
| 173 transport_feedback_adapter_(clock_), | 173 transport_feedback_adapter_(clock_), |
| 174 min_bitrate_bps_(congestion_controller::GetMinBitrateBps()), | |
| 175 max_bitrate_bps_(0), | |
| 176 last_reported_bitrate_bps_(0), | 174 last_reported_bitrate_bps_(0), |
| 177 last_reported_fraction_loss_(0), | 175 last_reported_fraction_loss_(0), |
| 178 last_reported_rtt_(0), | 176 last_reported_rtt_(0), |
| 179 network_state_(kNetworkUp), | 177 network_state_(kNetworkUp), |
| 178 min_bitrate_bps_(congestion_controller::GetMinBitrateBps()), |
| 180 delay_based_bwe_(new DelayBasedBwe(event_log_, clock_)) { | 179 delay_based_bwe_(new DelayBasedBwe(event_log_, clock_)) { |
| 181 delay_based_bwe_->SetMinBitrate(min_bitrate_bps_); | 180 delay_based_bwe_->SetMinBitrate(min_bitrate_bps_); |
| 182 worker_thread_checker_.DetachFromThread(); | 181 worker_thread_checker_.DetachFromThread(); |
| 183 } | 182 } |
| 184 | 183 |
| 185 CongestionController::~CongestionController() {} | 184 CongestionController::~CongestionController() {} |
| 186 | 185 |
| 187 void CongestionController::OnReceivedPacket(int64_t arrival_time_ms, | 186 void CongestionController::OnReceivedPacket(int64_t arrival_time_ms, |
| 188 size_t payload_size, | 187 size_t payload_size, |
| 189 const RTPHeader& header) { | 188 const RTPHeader& header) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 201 void CongestionController::SetBweBitrates(int min_bitrate_bps, | 200 void CongestionController::SetBweBitrates(int min_bitrate_bps, |
| 202 int start_bitrate_bps, | 201 int start_bitrate_bps, |
| 203 int max_bitrate_bps) { | 202 int max_bitrate_bps) { |
| 204 ClampBitrates(&start_bitrate_bps, &min_bitrate_bps, &max_bitrate_bps); | 203 ClampBitrates(&start_bitrate_bps, &min_bitrate_bps, &max_bitrate_bps); |
| 205 bitrate_controller_->SetBitrates(start_bitrate_bps, | 204 bitrate_controller_->SetBitrates(start_bitrate_bps, |
| 206 min_bitrate_bps, | 205 min_bitrate_bps, |
| 207 max_bitrate_bps); | 206 max_bitrate_bps); |
| 208 | 207 |
| 209 probe_controller_->SetBitrates(min_bitrate_bps, start_bitrate_bps, | 208 probe_controller_->SetBitrates(min_bitrate_bps, start_bitrate_bps, |
| 210 max_bitrate_bps); | 209 max_bitrate_bps); |
| 211 max_bitrate_bps_ = max_bitrate_bps; | |
| 212 | 210 |
| 213 remote_bitrate_estimator_.SetMinBitrate(min_bitrate_bps); | 211 remote_bitrate_estimator_.SetMinBitrate(min_bitrate_bps); |
| 214 min_bitrate_bps_ = min_bitrate_bps; | |
| 215 { | 212 { |
| 216 rtc::CritScope cs(&bwe_lock_); | 213 rtc::CritScope cs(&bwe_lock_); |
| 217 if (start_bitrate_bps > 0) | 214 if (start_bitrate_bps > 0) |
| 218 delay_based_bwe_->SetStartBitrate(start_bitrate_bps); | 215 delay_based_bwe_->SetStartBitrate(start_bitrate_bps); |
| 216 min_bitrate_bps_ = min_bitrate_bps; |
| 219 delay_based_bwe_->SetMinBitrate(min_bitrate_bps_); | 217 delay_based_bwe_->SetMinBitrate(min_bitrate_bps_); |
| 220 } | 218 } |
| 221 MaybeTriggerOnNetworkChanged(); | 219 MaybeTriggerOnNetworkChanged(); |
| 222 } | 220 } |
| 223 | 221 |
| 224 // TODO(holmer): Split this up and use SetBweBitrates in combination with | 222 // TODO(holmer): Split this up and use SetBweBitrates in combination with |
| 225 // OnNetworkRouteChanged. | 223 // OnNetworkRouteChanged. |
| 226 void CongestionController::OnNetworkRouteChanged( | 224 void CongestionController::OnNetworkRouteChanged( |
| 227 const rtc::NetworkRoute& network_route, | 225 const rtc::NetworkRoute& network_route, |
| 228 int bitrate_bps, | 226 int bitrate_bps, |
| 229 int min_bitrate_bps, | 227 int min_bitrate_bps, |
| 230 int max_bitrate_bps) { | 228 int max_bitrate_bps) { |
| 231 ClampBitrates(&bitrate_bps, &min_bitrate_bps, &max_bitrate_bps); | 229 ClampBitrates(&bitrate_bps, &min_bitrate_bps, &max_bitrate_bps); |
| 232 // TODO(honghaiz): Recreate this object once the bitrate controller is | 230 // TODO(honghaiz): Recreate this object once the bitrate controller is |
| 233 // no longer exposed outside CongestionController. | 231 // no longer exposed outside CongestionController. |
| 234 bitrate_controller_->ResetBitrates(bitrate_bps, min_bitrate_bps, | 232 bitrate_controller_->ResetBitrates(bitrate_bps, min_bitrate_bps, |
| 235 max_bitrate_bps); | 233 max_bitrate_bps); |
| 236 min_bitrate_bps_ = min_bitrate_bps; | |
| 237 max_bitrate_bps_ = max_bitrate_bps; | |
| 238 // TODO(honghaiz): Recreate this object once the remote bitrate estimator is | 234 // TODO(honghaiz): Recreate this object once the remote bitrate estimator is |
| 239 // no longer exposed outside CongestionController. | 235 // no longer exposed outside CongestionController. |
| 240 remote_bitrate_estimator_.SetMinBitrate(min_bitrate_bps); | 236 remote_bitrate_estimator_.SetMinBitrate(min_bitrate_bps); |
| 241 | 237 |
| 242 transport_feedback_adapter_.SetNetworkIds(network_route.local_network_id, | 238 transport_feedback_adapter_.SetNetworkIds(network_route.local_network_id, |
| 243 network_route.remote_network_id); | 239 network_route.remote_network_id); |
| 244 { | 240 { |
| 245 rtc::CritScope cs(&bwe_lock_); | 241 rtc::CritScope cs(&bwe_lock_); |
| 242 min_bitrate_bps_ = min_bitrate_bps; |
| 246 delay_based_bwe_.reset(new DelayBasedBwe(event_log_, clock_)); | 243 delay_based_bwe_.reset(new DelayBasedBwe(event_log_, clock_)); |
| 247 delay_based_bwe_->SetStartBitrate(bitrate_bps); | 244 delay_based_bwe_->SetStartBitrate(bitrate_bps); |
| 248 delay_based_bwe_->SetMinBitrate(min_bitrate_bps); | 245 delay_based_bwe_->SetMinBitrate(min_bitrate_bps_); |
| 249 } | 246 } |
| 250 | 247 |
| 251 probe_controller_->Reset(); | 248 probe_controller_->Reset(); |
| 252 probe_controller_->SetBitrates(min_bitrate_bps, bitrate_bps, max_bitrate_bps); | 249 probe_controller_->SetBitrates(min_bitrate_bps, bitrate_bps, max_bitrate_bps); |
| 253 | 250 |
| 254 MaybeTriggerOnNetworkChanged(); | 251 MaybeTriggerOnNetworkChanged(); |
| 255 } | 252 } |
| 256 | 253 |
| 257 BitrateController* CongestionController::GetBitrateController() const { | 254 BitrateController* CongestionController::GetBitrateController() const { |
| 258 return bitrate_controller_.get(); | 255 return bitrate_controller_.get(); |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 415 bool CongestionController::IsSendQueueFull() const { | 412 bool CongestionController::IsSendQueueFull() const { |
| 416 return pacer_->ExpectedQueueTimeMs() > PacedSender::kMaxQueueLengthMs; | 413 return pacer_->ExpectedQueueTimeMs() > PacedSender::kMaxQueueLengthMs; |
| 417 } | 414 } |
| 418 | 415 |
| 419 bool CongestionController::IsNetworkDown() const { | 416 bool CongestionController::IsNetworkDown() const { |
| 420 rtc::CritScope cs(&network_state_lock_); | 417 rtc::CritScope cs(&network_state_lock_); |
| 421 return network_state_ == kNetworkDown; | 418 return network_state_ == kNetworkDown; |
| 422 } | 419 } |
| 423 | 420 |
| 424 } // namespace webrtc | 421 } // namespace webrtc |
| OLD | NEW |