diff --git a/modules/congestion_controller/goog_cc/probe_controller.cc b/modules/congestion_controller/goog_cc/probe_controller.cc index 195c70af89..bf8253ded5 100644 --- a/modules/congestion_controller/goog_cc/probe_controller.cc +++ b/modules/congestion_controller/goog_cc/probe_controller.cc @@ -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 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; diff --git a/modules/congestion_controller/goog_cc/probe_controller.h b/modules/congestion_controller/goog_cc/probe_controller.h index 61359806cd..9c9c39ecad 100644 --- a/modules/congestion_controller/goog_cc/probe_controller.h +++ b/modules/congestion_controller/goog_cc/probe_controller.h @@ -77,7 +77,7 @@ struct ProbeControllerConfig { FieldTrialParameter probe_on_max_allocated_bitrate_change; FieldTrialOptional first_allocation_probe_scale; FieldTrialOptional second_allocation_probe_scale; - FieldTrialOptional allocation_probe_limit_by_current_scale; + FieldTrialParameter allocation_probe_limit_by_current_scale; // The minimum number probing packets used. FieldTrialParameter min_probe_packets_sent; diff --git a/modules/congestion_controller/goog_cc/probe_controller_unittest.cc b/modules/congestion_controller/goog_cc/probe_controller_unittest.cc index 76d418d924..dbdfd195cf 100644 --- a/modules/congestion_controller/goog_cc/probe_controller_unittest.cc +++ b/modules/congestion_controller/goog_cc/probe_controller_unittest.cc @@ -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 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 probe_controller = fixture.CreateController(); ASSERT_THAT(