From 2e8d78ce42c69f6ab0f34ee7ad7e196d377ab014 Mon Sep 17 00:00:00 2001 From: Jonas Olsson Date: Mon, 27 May 2019 13:31:45 +0200 Subject: [PATCH] Allow overriding subsets of probing field trials The probe configuration is currently a single field trial. To allow multiple experiments with non-overlapping subsets of these keys I've added a few extra keys that override different subsets of the config. Bug: webrtc:10394 Change-Id: I54ffd1105129794fcdae4cce314910acaa4074af Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138274 Reviewed-by: Sebastian Jansson Commit-Queue: Jonas Olsson Cr-Commit-Position: refs/heads/master@{#28076} --- .../goog_cc/probe_controller.cc | 15 ++++++++++++++- modules/pacing/bitrate_prober.cc | 3 +++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/modules/congestion_controller/goog_cc/probe_controller.cc b/modules/congestion_controller/goog_cc/probe_controller.cc index f0ad41397a..1b13694c01 100644 --- a/modules/congestion_controller/goog_cc/probe_controller.cc +++ b/modules/congestion_controller/goog_cc/probe_controller.cc @@ -13,8 +13,8 @@ #include #include #include -#include "absl/memory/memory.h" +#include "absl/memory/memory.h" #include "api/units/data_rate.h" #include "api/units/time_delta.h" #include "api/units/timestamp.h" @@ -110,6 +110,19 @@ ProbeControllerConfig::ProbeControllerConfig( &alr_probing_interval, &alr_probe_scale, &first_allocation_probe_scale, &second_allocation_probe_scale, &allocation_allow_further_probing}, key_value_config->Lookup("WebRTC-Bwe-ProbingConfiguration")); + + // Specialized keys overriding subsets of WebRTC-Bwe-ProbingConfiguration + ParseFieldTrial( + {&first_exponential_probe_scale, &second_exponential_probe_scale}, + key_value_config->Lookup("WebRTC-Bwe-InitialProbing")); + ParseFieldTrial({&further_exponential_probe_scale, &further_probe_threshold}, + key_value_config->Lookup("WebRTC-Bwe-ExponentialProbing")); + ParseFieldTrial({&alr_probing_interval, &alr_probe_scale}, + key_value_config->Lookup("WebRTC-Bwe-AlrProbing")); + ParseFieldTrial( + {&first_allocation_probe_scale, &second_allocation_probe_scale, + &allocation_allow_further_probing}, + key_value_config->Lookup("WebRTC-Bwe-AllocationProbing")); } ProbeControllerConfig::ProbeControllerConfig(const ProbeControllerConfig&) = diff --git a/modules/pacing/bitrate_prober.cc b/modules/pacing/bitrate_prober.cc index 52f0bc196e..404257e81c 100644 --- a/modules/pacing/bitrate_prober.cc +++ b/modules/pacing/bitrate_prober.cc @@ -41,6 +41,9 @@ BitrateProberConfig::BitrateProberConfig( ParseFieldTrial({&min_probe_packets_sent, &min_probe_delta, &min_probe_duration, &max_probe_delay}, key_value_config->Lookup("WebRTC-Bwe-ProbingConfiguration")); + ParseFieldTrial({&min_probe_packets_sent, &min_probe_delta, + &min_probe_duration, &max_probe_delay}, + key_value_config->Lookup("WebRTC-Bwe-ProbingBehavior")); } BitrateProber::~BitrateProber() {