| Index: webrtc/modules/congestion_controller/delay_based_bwe.cc | 
| diff --git a/webrtc/modules/congestion_controller/delay_based_bwe.cc b/webrtc/modules/congestion_controller/delay_based_bwe.cc | 
| index 3fa48c7a423d778d05244a7b4185fc682dfb9708..e8d9d21050f21d1b931999b758979b95ec953bcb 100644 | 
| --- a/webrtc/modules/congestion_controller/delay_based_bwe.cc | 
| +++ b/webrtc/modules/congestion_controller/delay_based_bwe.cc | 
| @@ -52,8 +52,13 @@ | 
|  | 
| constexpr int kMaxConsecutiveFailedLookups = 5; | 
|  | 
| +const char kBitrateEstimateExperiment[] = "WebRTC-ImprovedBitrateEstimate"; | 
| const char kBweTrendlineFilterExperiment[] = "WebRTC-BweTrendlineFilter"; | 
| const char kBweMedianSlopeFilterExperiment[] = "WebRTC-BweMedianSlopeFilter"; | 
| + | 
| +bool BitrateEstimateExperimentIsEnabled() { | 
| +  return webrtc::field_trial::IsEnabled(kBitrateEstimateExperiment); | 
| +} | 
|  | 
| bool TrendlineFilterExperimentIsEnabled() { | 
| std::string experiment_string = | 
| @@ -148,9 +153,19 @@ | 
| current_win_ms_(0), | 
| prev_time_ms_(-1), | 
| bitrate_estimate_(-1.0f), | 
| -      bitrate_estimate_var_(50.0f) {} | 
| +      bitrate_estimate_var_(50.0f), | 
| +      old_estimator_(kBitrateWindowMs, 8000), | 
| +      in_experiment_(BitrateEstimateExperimentIsEnabled()) {} | 
|  | 
| void DelayBasedBwe::BitrateEstimator::Update(int64_t now_ms, int bytes) { | 
| +  if (!in_experiment_) { | 
| +    old_estimator_.Update(bytes, now_ms); | 
| +    rtc::Optional<uint32_t> rate = old_estimator_.Rate(now_ms); | 
| +    bitrate_estimate_ = -1.0f; | 
| +    if (rate) | 
| +      bitrate_estimate_ = *rate / 1000.0f; | 
| +    return; | 
| +  } | 
| int rate_window_ms = kRateWindowMs; | 
| // We use a larger window at the beginning to get a more stable sample that | 
| // we can use to initialize the estimate. | 
|  |