Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(32)

Unified Diff: webrtc/modules/congestion_controller/delay_based_bwe.cc

Issue 2777333003: Enable trendline experiment and bayesian bitrate estimator experiment by default. (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 8f8618190c103946f534ca5cc5a43701ff316729..8fcb8baf77e415d1aaff449be0402f9c8a97ff41 100644
--- a/webrtc/modules/congestion_controller/delay_based_bwe.cc
+++ b/webrtc/modules/congestion_controller/delay_based_bwe.cc
@@ -42,7 +42,7 @@ constexpr int kInitialRateWindowMs = 500;
constexpr int kRateWindowMs = 150;
// Parameters for linear least squares fit of regression line to noisy data.
-constexpr size_t kDefaultTrendlineWindowSize = 15;
+constexpr size_t kDefaultTrendlineWindowSize = 20;
constexpr double kDefaultTrendlineSmoothingCoeff = 0.9;
constexpr double kDefaultTrendlineThresholdGain = 4.0;
@@ -53,20 +53,12 @@ constexpr double kDefaultMedianSlopeThresholdGain = 4.0;
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 =
- webrtc::field_trial::FindFullName(kBweTrendlineFilterExperiment);
- // The experiment is enabled iff the field trial string begins with "Enabled".
- return experiment_string.find("Enabled") == 0;
-}
-
bool MedianSlopeFilterExperimentIsEnabled() {
std::string experiment_string =
webrtc::field_trial::FindFullName(kBweMedianSlopeFilterExperiment);
@@ -74,36 +66,8 @@ bool MedianSlopeFilterExperimentIsEnabled() {
return experiment_string.find("Enabled") == 0;
}
-bool ReadTrendlineFilterExperimentParameters(size_t* window_size,
- double* smoothing_coef,
- double* threshold_gain) {
- RTC_DCHECK(TrendlineFilterExperimentIsEnabled());
- RTC_DCHECK(!MedianSlopeFilterExperimentIsEnabled());
- RTC_DCHECK(window_size != nullptr);
- RTC_DCHECK(smoothing_coef != nullptr);
- RTC_DCHECK(threshold_gain != nullptr);
- std::string experiment_string =
- webrtc::field_trial::FindFullName(kBweTrendlineFilterExperiment);
- int parsed_values = sscanf(experiment_string.c_str(), "Enabled-%zu,%lf,%lf",
- window_size, smoothing_coef, threshold_gain);
- if (parsed_values == 3) {
- RTC_CHECK_GT(*window_size, 1) << "Need at least 2 points to fit a line.";
- RTC_CHECK(0 <= *smoothing_coef && *smoothing_coef <= 1)
- << "Coefficient needs to be between 0 and 1 for weighted average.";
- RTC_CHECK_GT(*threshold_gain, 0) << "Threshold gain needs to be positive.";
- return true;
- }
- LOG(LS_WARNING) << "Failed to parse parameters for BweTrendlineFilter "
- "experiment from field trial string. Using default.";
- *window_size = kDefaultTrendlineWindowSize;
- *smoothing_coef = kDefaultTrendlineSmoothingCoeff;
- *threshold_gain = kDefaultTrendlineThresholdGain;
- return false;
-}
-
bool ReadMedianSlopeFilterExperimentParameters(size_t* window_size,
double* threshold_gain) {
- RTC_DCHECK(!TrendlineFilterExperimentIsEnabled());
RTC_DCHECK(MedianSlopeFilterExperimentIsEnabled());
RTC_DCHECK(window_size != nullptr);
RTC_DCHECK(threshold_gain != nullptr);
@@ -231,12 +195,10 @@ rtc::Optional<uint32_t> DelayBasedBwe::BitrateEstimator::bitrate_bps() const {
}
DelayBasedBwe::DelayBasedBwe(RtcEventLog* event_log, const Clock* clock)
- : in_trendline_experiment_(TrendlineFilterExperimentIsEnabled()),
- in_median_slope_experiment_(MedianSlopeFilterExperimentIsEnabled()),
+ : in_median_slope_experiment_(MedianSlopeFilterExperimentIsEnabled()),
event_log_(event_log),
clock_(clock),
inter_arrival_(),
- kalman_estimator_(),
trendline_estimator_(),
detector_(),
receiver_incoming_bitrate_(),
@@ -252,23 +214,14 @@ DelayBasedBwe::DelayBasedBwe(RtcEventLog* event_log, const Clock* clock)
consecutive_delayed_feedbacks_(0),
last_logged_bitrate_(0),
last_logged_state_(kBwNormal) {
- if (in_trendline_experiment_) {
- ReadTrendlineFilterExperimentParameters(&trendline_window_size_,
- &trendline_smoothing_coeff_,
- &trendline_threshold_gain_);
- LOG(LS_INFO) << "Trendline filter experiment enabled with parameters "
- << trendline_window_size_ << ',' << trendline_smoothing_coeff_
- << ',' << trendline_threshold_gain_;
- }
if (in_median_slope_experiment_) {
ReadMedianSlopeFilterExperimentParameters(&median_slope_window_size_,
&median_slope_threshold_gain_);
LOG(LS_INFO) << "Median-slope filter experiment enabled with parameters "
<< median_slope_window_size_ << ','
<< median_slope_threshold_gain_;
- }
- if (!in_trendline_experiment_ && !in_median_slope_experiment_) {
- LOG(LS_INFO) << "No overuse experiment enabled. Using Kalman filter.";
+ } else {
+ LOG(LS_INFO) << "No overuse experiment enabled. Using Trendline filter.";
}
network_thread_.DetachFromThread();
@@ -342,7 +295,6 @@ DelayBasedBwe::Result DelayBasedBwe::IncomingPacketFeedback(
inter_arrival_.reset(
new InterArrival((kTimestampGroupLengthMs << kInterArrivalShift) / 1000,
kTimestampToMs, true));
- kalman_estimator_.reset(new OveruseEstimator(OverUseDetectorOptions()));
trendline_estimator_.reset(new TrendlineEstimator(
trendline_window_size_, trendline_smoothing_coeff_,
trendline_threshold_gain_));
@@ -369,24 +321,17 @@ DelayBasedBwe::Result DelayBasedBwe::IncomingPacketFeedback(
now_ms, packet_feedback.payload_size,
&ts_delta, &t_delta, &size_delta)) {
double ts_delta_ms = (1000.0 * ts_delta) / (1 << kInterArrivalShift);
- if (in_trendline_experiment_) {
- trendline_estimator_->Update(t_delta, ts_delta_ms,
- packet_feedback.arrival_time_ms);
- detector_.Detect(trendline_estimator_->trendline_slope(), ts_delta_ms,
- trendline_estimator_->num_of_deltas(),
- packet_feedback.arrival_time_ms);
- } else if (in_median_slope_experiment_) {
+ if (in_median_slope_experiment_) {
median_slope_estimator_->Update(t_delta, ts_delta_ms,
packet_feedback.arrival_time_ms);
detector_.Detect(median_slope_estimator_->trendline_slope(), ts_delta_ms,
median_slope_estimator_->num_of_deltas(),
packet_feedback.arrival_time_ms);
} else {
- kalman_estimator_->Update(t_delta, ts_delta_ms, size_delta,
- detector_.State(),
- packet_feedback.arrival_time_ms);
- detector_.Detect(kalman_estimator_->offset(), ts_delta_ms,
- kalman_estimator_->num_of_deltas(),
+ trendline_estimator_->Update(t_delta, ts_delta_ms,
+ packet_feedback.arrival_time_ms);
+ detector_.Detect(trendline_estimator_->trendline_slope(), ts_delta_ms,
+ trendline_estimator_->num_of_deltas(),
packet_feedback.arrival_time_ms);
}
}

Powered by Google App Engine
This is Rietveld 408576698