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...) 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 if (result.suggested_probe_bps) { |
| 304 probe_controller_->RequestProbe(*result.suggested_probe_bps); |
| 305 } |
301 } | 306 } |
302 | 307 |
303 std::vector<PacketFeedback> | 308 std::vector<PacketFeedback> |
304 SendSideCongestionController::GetTransportFeedbackVector() const { | 309 SendSideCongestionController::GetTransportFeedbackVector() const { |
305 RTC_DCHECK_RUNS_SERIALIZED(&worker_race_); | 310 RTC_DCHECK_RUNS_SERIALIZED(&worker_race_); |
306 return transport_feedback_adapter_.GetTransportFeedbackVector(); | 311 return transport_feedback_adapter_.GetTransportFeedbackVector(); |
307 } | 312 } |
308 | 313 |
309 void SendSideCongestionController::MaybeTriggerOnNetworkChanged() { | 314 void SendSideCongestionController::MaybeTriggerOnNetworkChanged() { |
310 uint32_t bitrate_bps; | 315 uint32_t bitrate_bps; |
(...skipping 47 matching lines...) Loading... |
358 bool SendSideCongestionController::IsSendQueueFull() const { | 363 bool SendSideCongestionController::IsSendQueueFull() const { |
359 return pacer_->ExpectedQueueTimeMs() > PacedSender::kMaxQueueLengthMs; | 364 return pacer_->ExpectedQueueTimeMs() > PacedSender::kMaxQueueLengthMs; |
360 } | 365 } |
361 | 366 |
362 bool SendSideCongestionController::IsNetworkDown() const { | 367 bool SendSideCongestionController::IsNetworkDown() const { |
363 rtc::CritScope cs(&network_state_lock_); | 368 rtc::CritScope cs(&network_state_lock_); |
364 return network_state_ == kNetworkDown; | 369 return network_state_ == kNetworkDown; |
365 } | 370 } |
366 | 371 |
367 } // namespace webrtc | 372 } // namespace webrtc |
OLD | NEW |