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 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 void SendSideCongestionController::OnTransportFeedback( | 276 void SendSideCongestionController::OnTransportFeedback( |
277 const rtcp::TransportFeedback& feedback) { | 277 const rtcp::TransportFeedback& feedback) { |
278 RTC_DCHECK_RUNS_SERIALIZED(&worker_race_); | 278 RTC_DCHECK_RUNS_SERIALIZED(&worker_race_); |
279 transport_feedback_adapter_.OnTransportFeedback(feedback); | 279 transport_feedback_adapter_.OnTransportFeedback(feedback); |
280 std::vector<PacketFeedback> feedback_vector = ReceivedPacketFeedbackVector( | 280 std::vector<PacketFeedback> feedback_vector = ReceivedPacketFeedbackVector( |
281 transport_feedback_adapter_.GetTransportFeedbackVector()); | 281 transport_feedback_adapter_.GetTransportFeedbackVector()); |
282 SortPacketFeedbackVector(&feedback_vector); | 282 SortPacketFeedbackVector(&feedback_vector); |
283 | 283 |
284 bool currently_in_alr = | 284 bool currently_in_alr = |
285 pacer_->GetApplicationLimitedRegionStartTime().has_value(); | 285 pacer_->GetApplicationLimitedRegionStartTime().has_value(); |
286 if (!currently_in_alr && was_in_alr_) { | 286 if (was_in_alr_ && !currently_in_alr) { |
287 acknowledged_bitrate_estimator_->SetAlrEndedTimeMs(rtc::TimeMillis()); | 287 int64_t now_ms = rtc::TimeMillis(); |
| 288 acknowledged_bitrate_estimator_->SetAlrEndedTimeMs(now_ms); |
| 289 probe_controller_->SetAlrEndedTimeMs(now_ms); |
288 } | 290 } |
289 was_in_alr_ = currently_in_alr; | 291 was_in_alr_ = currently_in_alr; |
290 | 292 |
291 acknowledged_bitrate_estimator_->IncomingPacketFeedbackVector( | 293 acknowledged_bitrate_estimator_->IncomingPacketFeedbackVector( |
292 feedback_vector); | 294 feedback_vector); |
293 DelayBasedBwe::Result result; | 295 DelayBasedBwe::Result result; |
294 { | 296 { |
295 rtc::CritScope cs(&bwe_lock_); | 297 rtc::CritScope cs(&bwe_lock_); |
296 result = delay_based_bwe_->IncomingPacketFeedbackVector( | 298 result = delay_based_bwe_->IncomingPacketFeedbackVector( |
297 feedback_vector, acknowledged_bitrate_estimator_->bitrate_bps()); | 299 feedback_vector, acknowledged_bitrate_estimator_->bitrate_bps()); |
298 } | 300 } |
299 if (result.updated) | 301 if (result.updated) { |
300 bitrate_controller_->OnDelayBasedBweResult(result); | 302 bitrate_controller_->OnDelayBasedBweResult(result); |
| 303 // Update the estimate in the ProbeController, in case we want to probe. |
| 304 MaybeTriggerOnNetworkChanged(); |
| 305 } |
| 306 if (result.recovered_from_overuse) |
| 307 probe_controller_->RequestProbe(); |
301 } | 308 } |
302 | 309 |
303 std::vector<PacketFeedback> | 310 std::vector<PacketFeedback> |
304 SendSideCongestionController::GetTransportFeedbackVector() const { | 311 SendSideCongestionController::GetTransportFeedbackVector() const { |
305 RTC_DCHECK_RUNS_SERIALIZED(&worker_race_); | 312 RTC_DCHECK_RUNS_SERIALIZED(&worker_race_); |
306 return transport_feedback_adapter_.GetTransportFeedbackVector(); | 313 return transport_feedback_adapter_.GetTransportFeedbackVector(); |
307 } | 314 } |
308 | 315 |
309 void SendSideCongestionController::MaybeTriggerOnNetworkChanged() { | 316 void SendSideCongestionController::MaybeTriggerOnNetworkChanged() { |
310 uint32_t bitrate_bps; | 317 uint32_t bitrate_bps; |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
358 bool SendSideCongestionController::IsSendQueueFull() const { | 365 bool SendSideCongestionController::IsSendQueueFull() const { |
359 return pacer_->ExpectedQueueTimeMs() > PacedSender::kMaxQueueLengthMs; | 366 return pacer_->ExpectedQueueTimeMs() > PacedSender::kMaxQueueLengthMs; |
360 } | 367 } |
361 | 368 |
362 bool SendSideCongestionController::IsNetworkDown() const { | 369 bool SendSideCongestionController::IsNetworkDown() const { |
363 rtc::CritScope cs(&network_state_lock_); | 370 rtc::CritScope cs(&network_state_lock_); |
364 return network_state_ == kNetworkDown; | 371 return network_state_ == kNetworkDown; |
365 } | 372 } |
366 | 373 |
367 } // namespace webrtc | 374 } // namespace webrtc |
OLD | NEW |