This is a rollback of https://chromium-review.googlesource.com/c/external/webrtc/+/616724
it degraded results of the ANA testing
BUG=webrtc:8105
Review-Url: https://codereview.webrtc.org/3011323002
Cr-Commit-Position: refs/heads/master@{#19902}
diff --git a/modules/congestion_controller/delay_based_bwe_unittest.cc b/modules/congestion_controller/delay_based_bwe_unittest.cc
index 311e8e8..7655044 100644
--- a/modules/congestion_controller/delay_based_bwe_unittest.cc
+++ b/modules/congestion_controller/delay_based_bwe_unittest.cc
@@ -139,6 +139,15 @@
kTargetUtilizationFraction * 4000000u, 10000u);
}
+TEST_F(DelayBasedBweTest, GetExpectedBwePeriodMs) {
+ int64_t default_interval_ms = bitrate_estimator_->GetExpectedBwePeriodMs();
+ EXPECT_GT(default_interval_ms, 0);
+ CapacityDropTestHelper(1, true, 333, 0);
+ int64_t interval_ms = bitrate_estimator_->GetExpectedBwePeriodMs();
+ EXPECT_GT(interval_ms, 0);
+ EXPECT_NE(interval_ms, default_interval_ms);
+}
+
TEST_F(DelayBasedBweTest, InitialBehavior) {
InitialBehaviorTestHelper(730000);
}
diff --git a/modules/remote_bitrate_estimator/aimd_rate_control.cc b/modules/remote_bitrate_estimator/aimd_rate_control.cc
index d91f2cb..2daac01 100644
--- a/modules/remote_bitrate_estimator/aimd_rate_control.cc
+++ b/modules/remote_bitrate_estimator/aimd_rate_control.cc
@@ -136,12 +136,13 @@
}
int AimdRateControl::GetExpectedBandwidthPeriodMs() const {
- constexpr int kMinPeriodMs = 500;
+ constexpr int kMinPeriodMs = 2000;
+ constexpr int kDefaultPeriodMs = 3000;
constexpr int kMaxPeriodMs = 50000;
int increase_rate = GetNearMaxIncreaseRateBps();
if (!last_decrease_)
- return kMinPeriodMs;
+ return kDefaultPeriodMs;
return std::min(kMaxPeriodMs,
std::max<int>(1000 * static_cast<int64_t>(*last_decrease_) /
@@ -210,17 +211,8 @@
if (bitrate_is_initialized_ &&
incoming_bitrate_bps < current_bitrate_bps_) {
- constexpr float kDegradationFactor = 0.9f;
- if (new_bitrate_bps <
- kDegradationFactor * beta_ * current_bitrate_bps_) {
- // If bitrate decreases more than a normal back off after overuse, it
- // indicates a real network degradation. We do not let such a decrease
- // to determine the bandwidth estimation period.
- last_decrease_ = rtc::Optional<int>();
- } else {
- last_decrease_ = rtc::Optional<int>(
- current_bitrate_bps_ - new_bitrate_bps);
- }
+ last_decrease_ =
+ rtc::Optional<int>(current_bitrate_bps_ - new_bitrate_bps);
}
if (incoming_bitrate_kbps <
avg_max_bitrate_kbps_ - 3 * std_max_bit_rate) {
diff --git a/modules/remote_bitrate_estimator/aimd_rate_control_unittest.cc b/modules/remote_bitrate_estimator/aimd_rate_control_unittest.cc
index a7bb752..690eb688 100644
--- a/modules/remote_bitrate_estimator/aimd_rate_control_unittest.cc
+++ b/modules/remote_bitrate_estimator/aimd_rate_control_unittest.cc
@@ -18,8 +18,9 @@
constexpr int64_t kClockInitialTime = 123456;
-constexpr int kMinBwePeriodMs = 500;
+constexpr int kMinBwePeriodMs = 2000;
constexpr int kMaxBwePeriodMs = 50000;
+constexpr int kDefaultPeriodMs = 3000;
// After an overuse, we back off to 85% to the received bitrate.
constexpr double kFractionAfterOveruse = 0.85;
@@ -81,8 +82,7 @@
states.simulated_clock->TimeInMilliseconds());
EXPECT_NEAR(14000, states.aimd_rate_control->GetNearMaxIncreaseRateBps(),
1000);
- EXPECT_EQ(kMinBwePeriodMs,
- states.aimd_rate_control->GetExpectedBandwidthPeriodMs());
+ EXPECT_EQ(3000, states.aimd_rate_control->GetExpectedBandwidthPeriodMs());
}
TEST(AimdRateControlTest, BweLimitedByAckedBitrate) {
@@ -124,15 +124,15 @@
EXPECT_EQ(new_estimate, prev_estimate);
}
-TEST(AimdRateControlTest, MinPeriodUntilFirstOveruse) {
+TEST(AimdRateControlTest, DefaultPeriodUntilFirstOveruse) {
auto states = CreateAimdRateControlStates();
states.aimd_rate_control->SetStartBitrate(300000);
- EXPECT_EQ(kMinBwePeriodMs,
+ EXPECT_EQ(kDefaultPeriodMs,
states.aimd_rate_control->GetExpectedBandwidthPeriodMs());
states.simulated_clock->AdvanceTimeMilliseconds(100);
- UpdateRateControl(states, BandwidthUsage::kBwOverusing, 280000,
+ UpdateRateControl(states, BandwidthUsage::kBwOverusing, 100000,
states.simulated_clock->TimeInMilliseconds());
- EXPECT_NE(kMinBwePeriodMs,
+ EXPECT_NE(kDefaultPeriodMs,
states.aimd_rate_control->GetExpectedBandwidthPeriodMs());
}
@@ -152,21 +152,6 @@
EXPECT_EQ(4000, states.aimd_rate_control->GetExpectedBandwidthPeriodMs());
}
-TEST(AimdRateControlTest, MinPeriodAfterLargeBitrateDecrease) {
- auto states = CreateAimdRateControlStates();
- constexpr int kInitialBitrate = 110000;
- states.aimd_rate_control->SetEstimate(
- kInitialBitrate, states.simulated_clock->TimeInMilliseconds());
- states.simulated_clock->AdvanceTimeMilliseconds(100);
- // Make such a large drop in bitrate that should be treated as network
- // degradation.
- constexpr int kAckedBitrate = kInitialBitrate * 3 / 4 / kFractionAfterOveruse;
- UpdateRateControl(states, BandwidthUsage::kBwOverusing, kAckedBitrate,
- states.simulated_clock->TimeInMilliseconds());
- EXPECT_EQ(kMinBwePeriodMs,
- states.aimd_rate_control->GetExpectedBandwidthPeriodMs());
-}
-
TEST(AimdRateControlTest, BandwidthPeriodIsNotBelowMin) {
auto states = CreateAimdRateControlStates();
constexpr int kInitialBitrate = 10000;
@@ -182,12 +167,12 @@
TEST(AimdRateControlTest, BandwidthPeriodIsNotAboveMax) {
auto states = CreateAimdRateControlStates();
- constexpr int kInitialBitrate = 50000000;
+ constexpr int kInitialBitrate = 10010000;
states.aimd_rate_control->SetEstimate(
kInitialBitrate, states.simulated_clock->TimeInMilliseconds());
states.simulated_clock->AdvanceTimeMilliseconds(100);
// Make a large (10 Mbps) bitrate drop to 10 kbps.
- constexpr int kAckedBitrate = 40000000 / kFractionAfterOveruse;
+ constexpr int kAckedBitrate = 10000 / kFractionAfterOveruse;
UpdateRateControl(states, BandwidthUsage::kBwOverusing, kAckedBitrate,
states.simulated_clock->TimeInMilliseconds());
EXPECT_EQ(kMaxBwePeriodMs,