Replace field trials with WebRtcKeyValueConfig in LossBasedBandwidthEstimation

Bug: webrtc:10335
Change-Id: I85d62b9b63e0b6ec5dd4b957738a67a9a11e3a1f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/205627
Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33210}
This commit is contained in:
Per Kjellander
2021-02-04 14:12:25 +01:00
committed by Commit Bot
parent bef085068b
commit 51f8e09540
3 changed files with 18 additions and 9 deletions

View File

@ -14,9 +14,9 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include "absl/strings/match.h"
#include "api/units/data_rate.h" #include "api/units/data_rate.h"
#include "api/units/time_delta.h" #include "api/units/time_delta.h"
#include "system_wrappers/include/field_trial.h"
namespace webrtc { namespace webrtc {
namespace { namespace {
@ -71,10 +71,16 @@ double ExponentialUpdate(TimeDelta window, TimeDelta interval) {
return 1.0f - exp(interval / window * -1.0); return 1.0f - exp(interval / window * -1.0);
} }
bool IsEnabled(const webrtc::WebRtcKeyValueConfig& key_value_config,
absl::string_view name) {
return absl::StartsWith(key_value_config.Lookup(name), "Enabled");
}
} // namespace } // namespace
LossBasedControlConfig::LossBasedControlConfig() LossBasedControlConfig::LossBasedControlConfig(
: enabled(field_trial::IsEnabled(kBweLossBasedControl)), const WebRtcKeyValueConfig* key_value_config)
: enabled(IsEnabled(*key_value_config, kBweLossBasedControl)),
min_increase_factor("min_incr", 1.02), min_increase_factor("min_incr", 1.02),
max_increase_factor("max_incr", 1.08), max_increase_factor("max_incr", 1.08),
increase_low_rtt("incr_low_rtt", TimeDelta::Millis(200)), increase_low_rtt("incr_low_rtt", TimeDelta::Millis(200)),
@ -92,7 +98,6 @@ LossBasedControlConfig::LossBasedControlConfig()
allow_resets("resets", false), allow_resets("resets", false),
decrease_interval("decr_intvl", TimeDelta::Millis(300)), decrease_interval("decr_intvl", TimeDelta::Millis(300)),
loss_report_timeout("timeout", TimeDelta::Millis(6000)) { loss_report_timeout("timeout", TimeDelta::Millis(6000)) {
std::string trial_string = field_trial::FindFullName(kBweLossBasedControl);
ParseFieldTrial( ParseFieldTrial(
{&min_increase_factor, &max_increase_factor, &increase_low_rtt, {&min_increase_factor, &max_increase_factor, &increase_low_rtt,
&increase_high_rtt, &decrease_factor, &loss_window, &loss_max_window, &increase_high_rtt, &decrease_factor, &loss_window, &loss_max_window,
@ -100,14 +105,15 @@ LossBasedControlConfig::LossBasedControlConfig()
&loss_bandwidth_balance_increase, &loss_bandwidth_balance_decrease, &loss_bandwidth_balance_increase, &loss_bandwidth_balance_decrease,
&loss_bandwidth_balance_exponent, &allow_resets, &decrease_interval, &loss_bandwidth_balance_exponent, &allow_resets, &decrease_interval,
&loss_report_timeout}, &loss_report_timeout},
trial_string); key_value_config->Lookup(kBweLossBasedControl));
} }
LossBasedControlConfig::LossBasedControlConfig(const LossBasedControlConfig&) = LossBasedControlConfig::LossBasedControlConfig(const LossBasedControlConfig&) =
default; default;
LossBasedControlConfig::~LossBasedControlConfig() = default; LossBasedControlConfig::~LossBasedControlConfig() = default;
LossBasedBandwidthEstimation::LossBasedBandwidthEstimation() LossBasedBandwidthEstimation::LossBasedBandwidthEstimation(
: config_(LossBasedControlConfig()), const WebRtcKeyValueConfig* key_value_config)
: config_(key_value_config),
average_loss_(0), average_loss_(0),
average_loss_max_(0), average_loss_max_(0),
loss_based_bitrate_(DataRate::Zero()), loss_based_bitrate_(DataRate::Zero()),

View File

@ -14,6 +14,7 @@
#include <vector> #include <vector>
#include "api/transport/network_types.h" #include "api/transport/network_types.h"
#include "api/transport/webrtc_key_value_config.h"
#include "api/units/data_rate.h" #include "api/units/data_rate.h"
#include "api/units/time_delta.h" #include "api/units/time_delta.h"
#include "api/units/timestamp.h" #include "api/units/timestamp.h"
@ -22,7 +23,7 @@
namespace webrtc { namespace webrtc {
struct LossBasedControlConfig { struct LossBasedControlConfig {
LossBasedControlConfig(); explicit LossBasedControlConfig(const WebRtcKeyValueConfig* key_value_config);
LossBasedControlConfig(const LossBasedControlConfig&); LossBasedControlConfig(const LossBasedControlConfig&);
LossBasedControlConfig& operator=(const LossBasedControlConfig&) = default; LossBasedControlConfig& operator=(const LossBasedControlConfig&) = default;
~LossBasedControlConfig(); ~LossBasedControlConfig();
@ -46,7 +47,8 @@ struct LossBasedControlConfig {
class LossBasedBandwidthEstimation { class LossBasedBandwidthEstimation {
public: public:
LossBasedBandwidthEstimation(); explicit LossBasedBandwidthEstimation(
const WebRtcKeyValueConfig* key_value_config);
void Update(Timestamp at_time, void Update(Timestamp at_time,
DataRate min_bitrate, DataRate min_bitrate,
TimeDelta last_round_trip_time); TimeDelta last_round_trip_time);

View File

@ -226,6 +226,7 @@ SendSideBandwidthEstimation::SendSideBandwidthEstimation(
low_loss_threshold_(kDefaultLowLossThreshold), low_loss_threshold_(kDefaultLowLossThreshold),
high_loss_threshold_(kDefaultHighLossThreshold), high_loss_threshold_(kDefaultHighLossThreshold),
bitrate_threshold_(kDefaultBitrateThreshold), bitrate_threshold_(kDefaultBitrateThreshold),
loss_based_bandwidth_estimation_(key_value_config),
receiver_limit_caps_only_("Enabled") { receiver_limit_caps_only_("Enabled") {
RTC_DCHECK(event_log); RTC_DCHECK(event_log);
if (BweLossExperimentIsEnabled()) { if (BweLossExperimentIsEnabled()) {