Add posibility to scale max_allocated bitrate when deciding to skip probe.

Add field trial parameter for setting scale factor of max allocated bitrate used for deciding when to skip probing.
Currently, a factor of 2 is used in most places for max allocated bitrate but not if the field trial skip_estimate_larger_than_fraction_of_max is used.
The purpose of this new field parameter is to be able to harmonize and always use the same factor.

Bug: webrtc:42224658
Change-Id: I5e1580b9bb18ef881b819affc0b4038094e94316
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/363400
Reviewed-by: Diep Bui <diepbp@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43078}
This commit is contained in:
Per K 2024-09-25 07:33:13 +00:00 committed by WebRTC LUCI CQ
parent cd9c238bd8
commit 17642c0db9
2 changed files with 11 additions and 4 deletions

View File

@ -116,7 +116,8 @@ ProbeControllerConfig::ProbeControllerConfig(
loss_limited_probe_scale("loss_limited_scale", 1.5),
skip_if_estimate_larger_than_fraction_of_max(
"skip_if_est_larger_than_fraction_of_max",
0.0) {
0.0),
skip_probe_max_allocated_scale("skip_max_allocated_scale", 1.0) {
ParseFieldTrial({&first_exponential_probe_scale,
&second_exponential_probe_scale,
&further_exponential_probe_scale,
@ -140,7 +141,8 @@ ProbeControllerConfig::ProbeControllerConfig(
&network_state_probe_duration,
&min_probe_packets_sent,
&loss_limited_probe_scale,
&skip_if_estimate_larger_than_fraction_of_max},
&skip_if_estimate_larger_than_fraction_of_max,
&skip_probe_max_allocated_scale},
key_value_config->Lookup("WebRTC-Bwe-ProbingConfiguration"));
// Specialized keys overriding subsets of WebRTC-Bwe-ProbingConfiguration
@ -554,7 +556,9 @@ std::vector<ProbeClusterConfig> ProbeController::InitiateProbing(
DataRate max_probe_rate =
max_total_allocated_bitrate_.IsZero()
? max_bitrate_
: std::min(max_total_allocated_bitrate_, max_bitrate_);
: std::min(config_.skip_probe_max_allocated_scale *
max_total_allocated_bitrate_,
max_bitrate_);
if (std::min(network_estimate, estimated_bitrate_) >
config_.skip_if_estimate_larger_than_fraction_of_max * max_probe_rate) {
UpdateState(State::kProbingComplete);

View File

@ -82,8 +82,11 @@ struct ProbeControllerConfig {
FieldTrialParameter<TimeDelta> min_probe_delta;
FieldTrialParameter<double> loss_limited_probe_scale;
// Don't send a probe if min(estimate, network state estimate) is larger than
// this fraction of the set max bitrate.
// this fraction of the set max or max allocated bitrate.
FieldTrialParameter<double> skip_if_estimate_larger_than_fraction_of_max;
// Scale factor of the max allocated bitrate. Used when deciding if a probe
// can be skiped due to that the estimate is already high enough.
FieldTrialParameter<double> skip_probe_max_allocated_scale;
};
// Reason that bandwidth estimate is limited. Bandwidth estimate can be limited