| Index: webrtc/modules/congestion_controller/send_side_congestion_controller.cc
|
| diff --git a/webrtc/modules/congestion_controller/send_side_congestion_controller.cc b/webrtc/modules/congestion_controller/send_side_congestion_controller.cc
|
| index fee49902c52ed1f7e6aeb6060e54acf94e6a01ca..b86fe00bfa66f641d3e04005a03981801c16904c 100644
|
| --- a/webrtc/modules/congestion_controller/send_side_congestion_controller.cc
|
| +++ b/webrtc/modules/congestion_controller/send_side_congestion_controller.cc
|
| @@ -144,7 +144,7 @@ SendSideCongestionController::SendSideCongestionController(
|
| bitrate_controller_(
|
| BitrateController::CreateBitrateController(clock_, event_log)),
|
| acknowledged_bitrate_estimator_(
|
| - rtc::MakeUnique<AcknowledgedBitrateEstimator>()),
|
| + rtc::MakeUnique<AcknowledgedBitrateEstimator>(event_log)),
|
| probe_controller_(new ProbeController(pacer_, clock_)),
|
| retransmission_rate_limiter_(
|
| new RateLimiter(clock, kRetransmitWindowSizeMs)),
|
| @@ -416,7 +416,29 @@ void SendSideCongestionController::MaybeTriggerOnNetworkChanged() {
|
| retransmission_rate_limiter_->SetMaxRate(bitrate_bps);
|
| }
|
|
|
| - bitrate_bps = IsNetworkDown() || IsSendQueueFull() ? 0 : bitrate_bps;
|
| + // bitrate_bps = IsNetworkDown() || IsSendQueueFull() ? 0 : bitrate_bps;
|
| +
|
| + if (IsNetworkDown()) {
|
| + bitrate_bps = 0;
|
| + } else {
|
| + int64_t expected_queue = pacer_->ExpectedQueueTimeMs();
|
| +
|
| + if (expected_queue > 50) {
|
| + float reduction_rate =
|
| + std::max<float>(0.0f, 1.0 - expected_queue / 1000.0);
|
| + if (!reduction_rate_ || *reduction_rate_ > reduction_rate) {
|
| + reduction_rate_.emplace(reduction_rate);
|
| + }
|
| + }
|
| +
|
| + if (reduction_rate_) {
|
| + if (expected_queue == 0) {
|
| + reduction_rate_.reset();
|
| + } else {
|
| + bitrate_bps *= *reduction_rate_;
|
| + }
|
| + }
|
| + }
|
|
|
| if (HasNetworkParametersToReportChanged(bitrate_bps, fraction_loss, rtt)) {
|
| int64_t probing_interval_ms;
|
| @@ -454,7 +476,7 @@ bool SendSideCongestionController::HasNetworkParametersToReportChanged(
|
| }
|
|
|
| bool SendSideCongestionController::IsSendQueueFull() const {
|
| - return pacer_->ExpectedQueueTimeMs() > PacedSender::kMaxQueueLengthMs;
|
| + return pacer_->ExpectedQueueTimeMs() > 2000;
|
| }
|
|
|
| bool SendSideCongestionController::IsNetworkDown() const {
|
| @@ -462,4 +484,8 @@ bool SendSideCongestionController::IsNetworkDown() const {
|
| return network_state_ == kNetworkDown;
|
| }
|
|
|
| +void SendSideCongestionController::PrintDebugStuff() {
|
| + print_ = true;
|
| +}
|
| +
|
| } // namespace webrtc
|
|
|