| Index: webrtc/modules/congestion_controller/congestion_controller.cc
|
| diff --git a/webrtc/modules/congestion_controller/congestion_controller.cc b/webrtc/modules/congestion_controller/congestion_controller.cc
|
| index ab3a90c2ecc6ee42efedf7086e971f8fbd5edef5..157258291ae92df4ea30a85a8206729886123dd7 100644
|
| --- a/webrtc/modules/congestion_controller/congestion_controller.cc
|
| +++ b/webrtc/modules/congestion_controller/congestion_controller.cc
|
| @@ -151,10 +151,7 @@
|
| remote_estimator_proxy_(clock_, packet_router_.get()),
|
| transport_feedback_adapter_(bitrate_controller_.get(), clock_),
|
| min_bitrate_bps_(RemoteBitrateEstimator::kDefaultMinBitrateBps),
|
| - last_reported_bitrate_bps_(0),
|
| - last_reported_fraction_loss_(0),
|
| - last_reported_rtt_(0),
|
| - network_state_(kNetworkUp) {
|
| + send_queue_is_full_(false) {
|
| Init();
|
| }
|
|
|
| @@ -173,10 +170,7 @@
|
| remote_estimator_proxy_(clock_, packet_router_.get()),
|
| transport_feedback_adapter_(bitrate_controller_.get(), clock_),
|
| min_bitrate_bps_(RemoteBitrateEstimator::kDefaultMinBitrateBps),
|
| - last_reported_bitrate_bps_(0),
|
| - last_reported_fraction_loss_(0),
|
| - last_reported_rtt_(0),
|
| - network_state_(kNetworkUp) {
|
| + send_queue_is_full_(false) {
|
| Init();
|
| }
|
|
|
| @@ -198,10 +192,7 @@
|
| remote_estimator_proxy_(clock_, packet_router_.get()),
|
| transport_feedback_adapter_(bitrate_controller_.get(), clock_),
|
| min_bitrate_bps_(RemoteBitrateEstimator::kDefaultMinBitrateBps),
|
| - last_reported_bitrate_bps_(0),
|
| - last_reported_fraction_loss_(0),
|
| - last_reported_rtt_(0),
|
| - network_state_(kNetworkUp) {
|
| + send_queue_is_full_(false) {
|
| Init();
|
| }
|
|
|
| @@ -274,11 +265,6 @@
|
| } else {
|
| pacer_->Pause();
|
| }
|
| - {
|
| - rtc::CritScope cs(&critsect_);
|
| - network_state_ = state;
|
| - }
|
| - MaybeTriggerOnNetworkChanged();
|
| }
|
|
|
| void CongestionController::OnSentPacket(const rtc::SentPacket& sent_packet) {
|
| @@ -311,40 +297,24 @@
|
| uint32_t bitrate_bps;
|
| uint8_t fraction_loss;
|
| int64_t rtt;
|
| - bool estimate_changed = bitrate_controller_->GetNetworkParameters(
|
| + bool network_changed = bitrate_controller_->GetNetworkParameters(
|
| &bitrate_bps, &fraction_loss, &rtt);
|
| - if (estimate_changed)
|
| + if (network_changed)
|
| pacer_->SetEstimatedBitrate(bitrate_bps);
|
| -
|
| - bitrate_bps = IsNetworkDown() || IsSendQueueFull() ? 0 : bitrate_bps;
|
| -
|
| - if (HasNetworkParametersToReportChanged(bitrate_bps, fraction_loss, rtt)) {
|
| + bool send_queue_is_full =
|
| + pacer_->ExpectedQueueTimeMs() > PacedSender::kMaxQueueLengthMs;
|
| + bitrate_bps = send_queue_is_full ? 0 : bitrate_bps;
|
| + if ((network_changed && !send_queue_is_full) ||
|
| + UpdateSendQueueStatus(send_queue_is_full)) {
|
| observer_->OnNetworkChanged(bitrate_bps, fraction_loss, rtt);
|
| }
|
| }
|
|
|
| -bool CongestionController::HasNetworkParametersToReportChanged(
|
| - uint32_t bitrate_bps,
|
| - uint8_t fraction_loss,
|
| - int64_t rtt) {
|
| +bool CongestionController::UpdateSendQueueStatus(bool send_queue_is_full) {
|
| rtc::CritScope cs(&critsect_);
|
| - bool changed =
|
| - last_reported_bitrate_bps_ != bitrate_bps ||
|
| - (bitrate_bps > 0 && (last_reported_fraction_loss_ != fraction_loss ||
|
| - last_reported_rtt_ != rtt));
|
| - last_reported_bitrate_bps_ = bitrate_bps;
|
| - last_reported_fraction_loss_ = fraction_loss;
|
| - last_reported_rtt_ = rtt;
|
| - return changed;
|
| -}
|
| -
|
| -bool CongestionController::IsSendQueueFull() const {
|
| - return pacer_->ExpectedQueueTimeMs() > PacedSender::kMaxQueueLengthMs;
|
| -}
|
| -
|
| -bool CongestionController::IsNetworkDown() const {
|
| - rtc::CritScope cs(&critsect_);
|
| - return network_state_ == kNetworkDown;
|
| + bool result = send_queue_is_full_ != send_queue_is_full;
|
| + send_queue_is_full_ = send_queue_is_full;
|
| + return result;
|
| }
|
|
|
| } // namespace webrtc
|
|
|