| Index: webrtc/modules/pacing/alr_detector.cc
|
| diff --git a/webrtc/modules/pacing/alr_detector.cc b/webrtc/modules/pacing/alr_detector.cc
|
| index 993c6cd07edde5b87d2ea5f4b061dc5c183c5a40..194ddbccf83c305e221bae1771c2584b4cf64961 100644
|
| --- a/webrtc/modules/pacing/alr_detector.cc
|
| +++ b/webrtc/modules/pacing/alr_detector.cc
|
| @@ -10,6 +10,7 @@
|
|
|
| #include "webrtc/modules/pacing/alr_detector.h"
|
|
|
| +#include <map>
|
| #include <string>
|
|
|
| #include "webrtc/rtc_base/checks.h"
|
| @@ -81,6 +82,16 @@ AlrDetector::ParseAlrSettingsFromFieldTrial(const char* experiment_name) {
|
| rtc::Optional<AlrExperimentSettings> ret;
|
| std::string group_name = field_trial::FindFullName(experiment_name);
|
|
|
| + static std::map<const char*,
|
| + rtc::Optional<AlrDetector::AlrExperimentSettings>>
|
| + computed_results;
|
| +
|
| + auto it = computed_results.find(experiment_name);
|
| + if (it != computed_results.end()) {
|
| + return it->second;
|
| + }
|
| + computed_results[experiment_name] = ret;
|
| +
|
| const std::string kIgnoredSuffix = "_Dogfood";
|
| if (group_name.rfind(kIgnoredSuffix) ==
|
| group_name.length() - kIgnoredSuffix.length()) {
|
| @@ -91,11 +102,12 @@ AlrDetector::ParseAlrSettingsFromFieldTrial(const char* experiment_name) {
|
| return ret;
|
|
|
| AlrExperimentSettings settings;
|
| - if (sscanf(group_name.c_str(), "%f,%" PRId64 ",%d,%d,%d",
|
| + if (sscanf(group_name.c_str(), "%f,%" PRId64 ",%d,%d,%d,%d",
|
| &settings.pacing_factor, &settings.max_paced_queue_time,
|
| &settings.alr_bandwidth_usage_percent,
|
| &settings.alr_start_budget_level_percent,
|
| - &settings.alr_stop_budget_level_percent) == 5) {
|
| + &settings.alr_stop_budget_level_percent,
|
| + &settings.group_id) == 6) {
|
| ret.emplace(settings);
|
| LOG(LS_INFO) << "Using ALR experiment settings: "
|
| "pacing factor: "
|
| @@ -106,11 +118,13 @@ AlrDetector::ParseAlrSettingsFromFieldTrial(const char* experiment_name) {
|
| << ", ALR end budget level percent: "
|
| << settings.alr_start_budget_level_percent
|
| << ", ALR end budget level percent: "
|
| - << settings.alr_stop_budget_level_percent;
|
| + << settings.alr_stop_budget_level_percent
|
| + << ", ALR experiment group ID: " << settings.group_id;
|
| } else {
|
| LOG(LS_INFO) << "Failed to parse ALR experiment: " << experiment_name;
|
| }
|
|
|
| + computed_results[experiment_name] = ret;
|
| return ret;
|
| }
|
|
|
|
|