| 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 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 retransmission_rate_limiter_( | 94 retransmission_rate_limiter_( |
| 95 new RateLimiter(clock, kRetransmitWindowSizeMs)), | 95 new RateLimiter(clock, kRetransmitWindowSizeMs)), |
| 96 transport_feedback_adapter_(clock_), | 96 transport_feedback_adapter_(clock_), |
| 97 last_reported_bitrate_bps_(0), | 97 last_reported_bitrate_bps_(0), |
| 98 last_reported_fraction_loss_(0), | 98 last_reported_fraction_loss_(0), |
| 99 last_reported_rtt_(0), | 99 last_reported_rtt_(0), |
| 100 network_state_(kNetworkUp), | 100 network_state_(kNetworkUp), |
| 101 min_bitrate_bps_(congestion_controller::GetMinBitrateBps()), | 101 min_bitrate_bps_(congestion_controller::GetMinBitrateBps()), |
| 102 delay_based_bwe_(new DelayBasedBwe(event_log_, clock_)) { | 102 delay_based_bwe_(new DelayBasedBwe(event_log_, clock_)) { |
| 103 delay_based_bwe_->SetMinBitrate(min_bitrate_bps_); | 103 delay_based_bwe_->SetMinBitrate(min_bitrate_bps_); |
| 104 worker_thread_checker_.DetachFromThread(); | |
| 105 } | 104 } |
| 106 | 105 |
| 107 SendSideCongestionController::~SendSideCongestionController() {} | 106 SendSideCongestionController::~SendSideCongestionController() {} |
| 108 | 107 |
| 109 void SendSideCongestionController::RegisterPacketFeedbackObserver( | 108 void SendSideCongestionController::RegisterPacketFeedbackObserver( |
| 110 PacketFeedbackObserver* observer) { | 109 PacketFeedbackObserver* observer) { |
| 111 transport_feedback_adapter_.RegisterPacketFeedbackObserver(observer); | 110 transport_feedback_adapter_.RegisterPacketFeedbackObserver(observer); |
| 112 } | 111 } |
| 113 | 112 |
| 114 void SendSideCongestionController::DeRegisterPacketFeedbackObserver( | 113 void SendSideCongestionController::DeRegisterPacketFeedbackObserver( |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 266 uint32_t ssrc, | 265 uint32_t ssrc, |
| 267 uint16_t sequence_number, | 266 uint16_t sequence_number, |
| 268 size_t length, | 267 size_t length, |
| 269 const PacedPacketInfo& pacing_info) { | 268 const PacedPacketInfo& pacing_info) { |
| 270 transport_feedback_adapter_.AddPacket(ssrc, sequence_number, length, | 269 transport_feedback_adapter_.AddPacket(ssrc, sequence_number, length, |
| 271 pacing_info); | 270 pacing_info); |
| 272 } | 271 } |
| 273 | 272 |
| 274 void SendSideCongestionController::OnTransportFeedback( | 273 void SendSideCongestionController::OnTransportFeedback( |
| 275 const rtcp::TransportFeedback& feedback) { | 274 const rtcp::TransportFeedback& feedback) { |
| 276 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); | 275 RTC_DCHECK_RUNS_SERIALIZED(&worker_race_); |
| 277 transport_feedback_adapter_.OnTransportFeedback(feedback); | 276 transport_feedback_adapter_.OnTransportFeedback(feedback); |
| 278 std::vector<PacketFeedback> feedback_vector = ReceivedPacketFeedbackVector( | 277 std::vector<PacketFeedback> feedback_vector = ReceivedPacketFeedbackVector( |
| 279 transport_feedback_adapter_.GetTransportFeedbackVector()); | 278 transport_feedback_adapter_.GetTransportFeedbackVector()); |
| 280 SortPacketFeedbackVector(&feedback_vector); | 279 SortPacketFeedbackVector(&feedback_vector); |
| 281 acknowledged_bitrate_estimator_->IncomingPacketFeedbackVector( | 280 acknowledged_bitrate_estimator_->IncomingPacketFeedbackVector( |
| 282 feedback_vector); | 281 feedback_vector); |
| 283 DelayBasedBwe::Result result; | 282 DelayBasedBwe::Result result; |
| 284 { | 283 { |
| 285 rtc::CritScope cs(&bwe_lock_); | 284 rtc::CritScope cs(&bwe_lock_); |
| 286 result = delay_based_bwe_->IncomingPacketFeedbackVector( | 285 result = delay_based_bwe_->IncomingPacketFeedbackVector( |
| 287 feedback_vector, acknowledged_bitrate_estimator_->bitrate_bps()); | 286 feedback_vector, acknowledged_bitrate_estimator_->bitrate_bps()); |
| 288 } | 287 } |
| 289 if (result.updated) | 288 if (result.updated) |
| 290 bitrate_controller_->OnDelayBasedBweResult(result); | 289 bitrate_controller_->OnDelayBasedBweResult(result); |
| 291 } | 290 } |
| 292 | 291 |
| 293 std::vector<PacketFeedback> | 292 std::vector<PacketFeedback> |
| 294 SendSideCongestionController::GetTransportFeedbackVector() const { | 293 SendSideCongestionController::GetTransportFeedbackVector() const { |
| 295 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); | 294 RTC_DCHECK_RUNS_SERIALIZED(&worker_race_); |
| 296 return transport_feedback_adapter_.GetTransportFeedbackVector(); | 295 return transport_feedback_adapter_.GetTransportFeedbackVector(); |
| 297 } | 296 } |
| 298 | 297 |
| 299 void SendSideCongestionController::MaybeTriggerOnNetworkChanged() { | 298 void SendSideCongestionController::MaybeTriggerOnNetworkChanged() { |
| 300 uint32_t bitrate_bps; | 299 uint32_t bitrate_bps; |
| 301 uint8_t fraction_loss; | 300 uint8_t fraction_loss; |
| 302 int64_t rtt; | 301 int64_t rtt; |
| 303 bool estimate_changed = bitrate_controller_->GetNetworkParameters( | 302 bool estimate_changed = bitrate_controller_->GetNetworkParameters( |
| 304 &bitrate_bps, &fraction_loss, &rtt); | 303 &bitrate_bps, &fraction_loss, &rtt); |
| 305 if (estimate_changed) { | 304 if (estimate_changed) { |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 348 bool SendSideCongestionController::IsSendQueueFull() const { | 347 bool SendSideCongestionController::IsSendQueueFull() const { |
| 349 return pacer_->ExpectedQueueTimeMs() > PacedSender::kMaxQueueLengthMs; | 348 return pacer_->ExpectedQueueTimeMs() > PacedSender::kMaxQueueLengthMs; |
| 350 } | 349 } |
| 351 | 350 |
| 352 bool SendSideCongestionController::IsNetworkDown() const { | 351 bool SendSideCongestionController::IsNetworkDown() const { |
| 353 rtc::CritScope cs(&network_state_lock_); | 352 rtc::CritScope cs(&network_state_lock_); |
| 354 return network_state_ == kNetworkDown; | 353 return network_state_ == kNetworkDown; |
| 355 } | 354 } |
| 356 | 355 |
| 357 } // namespace webrtc | 356 } // namespace webrtc |
| OLD | NEW |