Make "WebRTC-BweAllocProbingOnlyInAlr/Enabled/" default and remove key.
Bug: chromium:951299
Change-Id: Idf612040e21f2962cc63d7de3dcb237bbf868034
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/148985
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Konrad Hofbauer <hofbauer@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28902}
diff --git a/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc b/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc
index c32c26b..ee8bf5d 100644
--- a/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc
+++ b/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc
@@ -118,7 +118,7 @@
truth->PrintRow();
s.RunFor(TimeDelta::seconds(50));
truth->PrintRow();
- EXPECT_NEAR(client->target_rate().kbps(), 90, 20);
+ EXPECT_NEAR(client->target_rate().kbps(), 90, 25);
}
} // namespace
diff --git a/modules/congestion_controller/goog_cc/probe_controller.cc b/modules/congestion_controller/goog_cc/probe_controller.cc
index 1b13694..65150db 100644
--- a/modules/congestion_controller/goog_cc/probe_controller.cc
+++ b/modules/congestion_controller/goog_cc/probe_controller.cc
@@ -73,10 +73,6 @@
// Never probe higher than configured by OnMaxTotalAllocatedBitrate().
constexpr char kCappedProbingFieldTrialName[] = "WebRTC-BweCappedProbing";
-// Only do allocation probing when in ALR (but not when network-limited).
-constexpr char kAllocProbingOnlyInAlrFieldTrialName[] =
- "WebRTC-BweAllocProbingOnlyInAlr";
-
void MaybeLogProbeClusterCreated(RtcEventLog* event_log,
const ProbeClusterConfig& probe) {
RTC_DCHECK(event_log);
@@ -138,9 +134,6 @@
limit_probes_with_allocateable_rate_(
key_value_config->Lookup(kCappedProbingFieldTrialName)
.find("Disabled") != 0),
- allocation_probing_only_in_alr_(
- key_value_config->Lookup(kAllocProbingOnlyInAlrFieldTrialName)
- .find("Enabled") == 0),
event_log_(event_log),
config_(ProbeControllerConfig(key_value_config)) {
Reset(0);
@@ -202,8 +195,7 @@
int64_t max_total_allocated_bitrate,
int64_t at_time_ms) {
const bool in_alr = alr_start_time_ms_.has_value();
- const bool allow_allocation_probe =
- allocation_probing_only_in_alr_ ? in_alr : true;
+ const bool allow_allocation_probe = in_alr;
if (state_ == State::kProbingComplete &&
max_total_allocated_bitrate != max_total_allocated_bitrate_ &&
diff --git a/modules/congestion_controller/goog_cc/probe_controller.h b/modules/congestion_controller/goog_cc/probe_controller.h
index 3d18f4c..f22acff 100644
--- a/modules/congestion_controller/goog_cc/probe_controller.h
+++ b/modules/congestion_controller/goog_cc/probe_controller.h
@@ -132,7 +132,6 @@
const bool in_rapid_recovery_experiment_;
const bool limit_probes_with_allocateable_rate_;
- const bool allocation_probing_only_in_alr_;
// For WebRTC.BWE.MidCallProbing.* metric.
bool mid_call_probing_waiting_for_result_;
int64_t mid_call_probing_bitrate_bps_;
diff --git a/modules/congestion_controller/goog_cc/probe_controller_unittest.cc b/modules/congestion_controller/goog_cc/probe_controller_unittest.cc
index e64f414..f82e7d4 100644
--- a/modules/congestion_controller/goog_cc/probe_controller_unittest.cc
+++ b/modules/congestion_controller/goog_cc/probe_controller_unittest.cc
@@ -97,7 +97,6 @@
}
TEST_F(ProbeControllerTest, ProbesOnMaxBitrateIncreaseOnlyWhenInAlr) {
- test::ScopedFieldTrials trials("WebRTC-BweAllocProbingOnlyInAlr/Enabled/");
probe_controller_.reset(
new ProbeController(&field_trial_config_, &mock_rtc_event_log));
auto probes = probe_controller_->SetBitrates(kMinBitrateBps, kStartBitrateBps,
@@ -364,6 +363,7 @@
clock_.AdvanceTimeMilliseconds(5000);
probes = probe_controller_->Process(NowMs());
+ probe_controller_->SetAlrStartTimeMs(NowMs());
probes = probe_controller_->OnMaxTotalAllocatedBitrate(200000, NowMs());
EXPECT_EQ(probes.size(), 1u);
EXPECT_EQ(probes[0].target_data_rate.bps(), 400000);
diff --git a/video/end_to_end_tests/probing_tests.cc b/video/end_to_end_tests/probing_tests.cc
index 3e5feaf..2ead94e 100644
--- a/video/end_to_end_tests/probing_tests.cc
+++ b/video/end_to_end_tests/probing_tests.cc
@@ -234,6 +234,7 @@
void PerformTest() override {
*success_ = false;
int64_t start_time_ms = clock_->TimeInMilliseconds();
+ int64_t max_allocation_change_time_ms = -1;
do {
if (clock_->TimeInMilliseconds() - start_time_ms > kTimeoutMs)
break;
@@ -264,22 +265,34 @@
}
break;
case 1:
- if (stats.send_bandwidth_bps <= 210000) {
+ if (stats.send_bandwidth_bps <= 200000) {
+ // Initial probing finished. Increase link capacity and wait
+ // until BWE ramped up enough to be in ALR. This takes a few
+ // seconds.
BuiltInNetworkBehaviorConfig config;
config.link_capacity_kbps = 5000;
send_simulated_network_->SetConfig(config);
-
+ ++state_;
+ }
+ break;
+ case 2:
+ if (stats.send_bandwidth_bps > 240000) {
+ // BWE ramped up enough to be in ALR. Setting higher max_bitrate
+ // should trigger an allocation probe and fast ramp-up.
encoder_config_->max_bitrate_bps = 2000000;
encoder_config_->simulcast_layers[0].max_bitrate_bps = 1200000;
task_queue_->SendTask([this]() {
send_stream_->ReconfigureVideoEncoder(encoder_config_->Copy());
});
-
+ max_allocation_change_time_ms = clock_->TimeInMilliseconds();
++state_;
}
break;
- case 2:
+ case 3:
if (stats.send_bandwidth_bps >= 1000000) {
+ EXPECT_LT(
+ clock_->TimeInMilliseconds() - max_allocation_change_time_ms,
+ kRampUpMaxDurationMs);
*success_ = true;
observation_complete_.Set();
}
@@ -289,7 +302,9 @@
}
private:
- const int kTimeoutMs = 3000;
+ const int kTimeoutMs = 10000;
+ const int kRampUpMaxDurationMs = 500;
+
test::SingleThreadedTaskQueueForTesting* const task_queue_;
bool* const success_;
SimulatedNetwork* send_simulated_network_;