@@ -247,6 +247,7 @@ SendSideBandwidthEstimation::SendSideBandwidthEstimation(
247
247
if (LossBasedBandwidthEstimatorV2Enabled ()) {
248
248
loss_based_bandwidth_estimator_v2_.SetMinBitrate (min_bitrate_configured_);
249
249
}
250
+ is_low_latency_mode_ = field_trial::IsEnabled (" OWT-LowLatencyMode" );
250
251
}
251
252
252
253
SendSideBandwidthEstimation::~SendSideBandwidthEstimation () {}
@@ -462,6 +463,9 @@ void SendSideBandwidthEstimation::UpdateRtt(TimeDelta rtt, Timestamp at_time) {
462
463
463
464
void SendSideBandwidthEstimation::UpdateEstimate (Timestamp at_time) {
464
465
if (rtt_backoff_.CorrectedRtt (at_time) > rtt_backoff_.rtt_limit_ ) {
466
+ // If last decrease happens before 1 second, and current target is larger than
467
+ // 5kbps, and we decided an RTT backoff is neccessary, we drop current target by
468
+ // 0.8 and use that as estimation result.
465
469
if (at_time - time_last_decrease_ >= rtt_backoff_.drop_interval_ &&
466
470
current_target_ > rtt_backoff_.bandwidth_floor_ ) {
467
471
time_last_decrease_ = at_time;
@@ -663,7 +667,10 @@ void SendSideBandwidthEstimation::MaybeLogLossBasedEvent(Timestamp at_time) {
663
667
664
668
void SendSideBandwidthEstimation::UpdateTargetBitrate (DataRate new_bitrate,
665
669
Timestamp at_time) {
666
- new_bitrate = std::min (new_bitrate, GetUpperLimit ());
670
+ if (is_low_latency_mode_)
671
+ new_bitrate = GetUpperLimit ();
672
+ else
673
+ new_bitrate = std::min (new_bitrate, GetUpperLimit ());
667
674
if (new_bitrate < min_bitrate_configured_) {
668
675
MaybeLogLowBitrateWarning (new_bitrate, at_time);
669
676
new_bitrate = min_bitrate_configured_;
0 commit comments