aboutsummaryrefslogtreecommitdiff
path: root/modules/congestion_controller
diff options
context:
space:
mode:
authorJonas Oreland <jonaso@webrtc.org>2020-01-09 11:28:43 +0100
committerCommit Bot <commit-bot@chromium.org>2020-01-09 11:32:25 +0000
commit63db77007bea78487af05d46b1b46106761556a1 (patch)
tree66c4ab8328b18cc1cc4c6a9a55f2e70df589ed40 /modules/congestion_controller
parentb19eb399cb5360bfa2824f02a51ab76b09dbd6a3 (diff)
downloadwebrtc-63db77007bea78487af05d46b1b46106761556a1.tar.gz
Add field trial to base stable target rate on loss based target rate
I.e not the pushback_rate that includes the congestion window pushback (if enabled). Bug: None Change-Id: I413d011004a95da03dd62f5b423abc3c8b66b333 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/165383 Commit-Queue: Jonas Oreland <jonaso@webrtc.org> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org> Reviewed-by: Sebastian Jansson <srte@webrtc.org> Cr-Commit-Position: refs/heads/master@{#30189}
Diffstat (limited to 'modules/congestion_controller')
-rw-r--r--modules/congestion_controller/goog_cc/goog_cc_network_control.cc18
-rw-r--r--modules/congestion_controller/goog_cc/goog_cc_network_control.h1
2 files changed, 16 insertions, 3 deletions
diff --git a/modules/congestion_controller/goog_cc/goog_cc_network_control.cc b/modules/congestion_controller/goog_cc/goog_cc_network_control.cc
index adb143375c..293bd02b64 100644
--- a/modules/congestion_controller/goog_cc/goog_cc_network_control.cc
+++ b/modules/congestion_controller/goog_cc/goog_cc_network_control.cc
@@ -52,6 +52,10 @@ int64_t GetBpsOrDefault(const absl::optional<DataRate>& rate,
}
}
+bool IsEnabled(const WebRtcKeyValueConfig* config, absl::string_view key) {
+ return config->Lookup(key).find("Enabled") != 0;
+}
+
bool IsNotDisabled(const WebRtcKeyValueConfig* config, absl::string_view key) {
return config->Lookup(key).find("Disabled") != 0;
}
@@ -72,6 +76,8 @@ GoogCcNetworkController::GoogCcNetworkController(NetworkControllerConfig config,
"WebRTC-Bwe-IgnoreProbesLowerThanNetworkStateEstimate")),
rate_control_settings_(
RateControlSettings::ParseFromKeyValueConfig(key_value_config_)),
+ loss_based_stable_rate_(
+ IsEnabled(key_value_config_, "WebRTC-Bwe-LossBasedStableRate")),
probe_controller_(
new ProbeController(key_value_config_, config.event_log)),
congestion_window_pushback_controller_(
@@ -619,9 +625,15 @@ void GoogCcNetworkController::MaybeTriggerOnNetworkChanged(
TargetTransferRate target_rate_msg;
target_rate_msg.at_time = at_time;
target_rate_msg.target_rate = pushback_target_rate;
- target_rate_msg.stable_target_rate =
- std::min(bandwidth_estimation_->GetEstimatedLinkCapacity(),
- pushback_target_rate);
+ if (loss_based_stable_rate_) {
+ target_rate_msg.stable_target_rate =
+ std::min(bandwidth_estimation_->GetEstimatedLinkCapacity(),
+ loss_based_target_rate);
+ } else {
+ target_rate_msg.stable_target_rate =
+ std::min(bandwidth_estimation_->GetEstimatedLinkCapacity(),
+ pushback_target_rate);
+ }
target_rate_msg.network_estimate.at_time = at_time;
target_rate_msg.network_estimate.round_trip_time = round_trip_time;
target_rate_msg.network_estimate.loss_rate_ratio = fraction_loss / 255.0f;
diff --git a/modules/congestion_controller/goog_cc/goog_cc_network_control.h b/modules/congestion_controller/goog_cc/goog_cc_network_control.h
index f8970c808f..ae17b3ab39 100644
--- a/modules/congestion_controller/goog_cc/goog_cc_network_control.h
+++ b/modules/congestion_controller/goog_cc/goog_cc_network_control.h
@@ -88,6 +88,7 @@ class GoogCcNetworkController : public NetworkControllerInterface {
const bool use_min_allocatable_as_lower_bound_;
const bool ignore_probes_lower_than_network_estimate_;
const RateControlSettings rate_control_settings_;
+ const bool loss_based_stable_rate_;
const std::unique_ptr<ProbeController> probe_controller_;
const std::unique_ptr<CongestionWindowPushbackController>