Default max limit probe to 2x current bwe
If max allocated bitrate change, default max limit probe to 2x current BWE. Bug: webrtc:369044000, b/370883514 Change-Id: Ibaf79fff94157186002728828d6574bea21afd24 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/368820 Commit-Queue: Per Kjellander <perkj@webrtc.org> Reviewed-by: Diep Bui <diepbp@webrtc.org> Cr-Commit-Position: refs/heads/main@{#43448}
This commit is contained in:
parent
924dc088dc
commit
06723eaab8
@ -111,7 +111,7 @@ ProbeControllerConfig::ProbeControllerConfig(
|
||||
probe_on_max_allocated_bitrate_change("probe_max_allocation", true),
|
||||
first_allocation_probe_scale("alloc_p1", 1),
|
||||
second_allocation_probe_scale("alloc_p2", 2),
|
||||
allocation_probe_limit_by_current_scale("alloc_current_bwe_limit"),
|
||||
allocation_probe_limit_by_current_scale("alloc_current_bwe_limit", 2),
|
||||
min_probe_packets_sent("min_probe_packets_sent", 5),
|
||||
min_probe_duration("min_probe_duration", TimeDelta::Millis(15)),
|
||||
min_probe_delta("min_probe_delta", TimeDelta::Millis(2)),
|
||||
@ -240,11 +240,9 @@ std::vector<ProbeClusterConfig> ProbeController::OnMaxTotalAllocatedBitrate(
|
||||
|
||||
DataRate first_probe_rate = max_total_allocated_bitrate *
|
||||
config_.first_allocation_probe_scale.Value();
|
||||
DataRate current_bwe_limit =
|
||||
!config_.allocation_probe_limit_by_current_scale
|
||||
? DataRate::PlusInfinity()
|
||||
: estimated_bitrate_ *
|
||||
config_.allocation_probe_limit_by_current_scale.Value();
|
||||
const DataRate current_bwe_limit =
|
||||
config_.allocation_probe_limit_by_current_scale.Get() *
|
||||
estimated_bitrate_;
|
||||
bool limited_by_current_bwe = current_bwe_limit < first_probe_rate;
|
||||
if (limited_by_current_bwe) {
|
||||
first_probe_rate = current_bwe_limit;
|
||||
|
||||
@ -77,7 +77,7 @@ struct ProbeControllerConfig {
|
||||
FieldTrialParameter<bool> probe_on_max_allocated_bitrate_change;
|
||||
FieldTrialOptional<double> first_allocation_probe_scale;
|
||||
FieldTrialOptional<double> second_allocation_probe_scale;
|
||||
FieldTrialOptional<double> allocation_probe_limit_by_current_scale;
|
||||
FieldTrialParameter<double> allocation_probe_limit_by_current_scale;
|
||||
|
||||
// The minimum number probing packets used.
|
||||
FieldTrialParameter<int> min_probe_packets_sent;
|
||||
|
||||
@ -217,9 +217,8 @@ TEST(ProbeControllerTest, ProbesOnMaxAllocatedBitrateIncreaseOnlyWhenInAlr) {
|
||||
}
|
||||
|
||||
TEST(ProbeControllerTest, ProbesOnMaxAllocatedBitrateLimitedByCurrentBwe) {
|
||||
ProbeControllerFixture fixture(
|
||||
"WebRTC-Bwe-ProbingConfiguration/"
|
||||
"alloc_current_bwe_limit:1.5/");
|
||||
ProbeControllerFixture fixture("");
|
||||
|
||||
ASSERT_TRUE(kMaxBitrate > 1.5 * kStartBitrate);
|
||||
std::unique_ptr<ProbeController> probe_controller =
|
||||
fixture.CreateController();
|
||||
@ -242,7 +241,7 @@ TEST(ProbeControllerTest, ProbesOnMaxAllocatedBitrateLimitedByCurrentBwe) {
|
||||
probes = probe_controller->OnMaxTotalAllocatedBitrate(kMaxBitrate,
|
||||
fixture.CurrentTime());
|
||||
EXPECT_EQ(probes.size(), 1u);
|
||||
EXPECT_EQ(probes.at(0).target_data_rate, 1.5 * kStartBitrate);
|
||||
EXPECT_EQ(probes.at(0).target_data_rate, 2.0 * kStartBitrate);
|
||||
|
||||
// Continue probing if probe succeeds.
|
||||
probes = probe_controller->SetEstimatedBitrate(
|
||||
@ -766,7 +765,8 @@ TEST(ProbeControllerTest, ConfigurableProbingFieldTrial) {
|
||||
ProbeControllerFixture fixture(
|
||||
"WebRTC-Bwe-ProbingConfiguration/"
|
||||
"p1:2,p2:5,step_size:3,further_probe_threshold:0.8,"
|
||||
"alloc_p1:2,alloc_p2,min_probe_packets_sent:2/");
|
||||
"alloc_p1:2,alloc_current_bwe_limit:1000.0,alloc_p2,min_probe_packets_"
|
||||
"sent:2/");
|
||||
std::unique_ptr<ProbeController> probe_controller =
|
||||
fixture.CreateController();
|
||||
ASSERT_THAT(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user