BalancedDegradationSettings: add option to configure no fps limit.
If configuring max valid framerate (100), no framerate restriction is
used (std::numeric_limits<int>::max()).
E.g. pixels:1000|2000,fps:5|10 is same as pixels:1000|2000|3000,fps:5|10|100
Bug: none
Change-Id: Ie981841ee8e23cb73c0ef55738ca69055916d902
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/148980
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28854}
diff --git a/rtc_base/experiments/balanced_degradation_settings.cc b/rtc_base/experiments/balanced_degradation_settings.cc
index 3205550..e1ed1bc 100644
--- a/rtc_base/experiments/balanced_degradation_settings.cc
+++ b/rtc_base/experiments/balanced_degradation_settings.cc
@@ -21,7 +21,7 @@
namespace {
constexpr char kFieldTrial[] = "WebRTC-Video-BalancedDegradationSettings";
constexpr int kMinFps = 1;
-constexpr int kMaxFps = 100;
+constexpr int kMaxFps = 100; // 100 means unlimited fps.
std::vector<BalancedDegradationSettings::Config> DefaultConfigs() {
return {{320 * 240, 7, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}},
@@ -164,7 +164,9 @@
break;
}
- return fps.value_or(config->fps);
+ const int framerate = fps.value_or(config->fps);
+
+ return (framerate == kMaxFps) ? std::numeric_limits<int>::max() : framerate;
}
} // namespace
diff --git a/rtc_base/experiments/balanced_degradation_settings_unittest.cc b/rtc_base/experiments/balanced_degradation_settings_unittest.cc
index c604b55..76a7624 100644
--- a/rtc_base/experiments/balanced_degradation_settings_unittest.cc
+++ b/rtc_base/experiments/balanced_degradation_settings_unittest.cc
@@ -208,6 +208,18 @@
settings.MaxFps(kVideoCodecGeneric, 3000));
}
+TEST(BalancedDegradationSettings, GetsUnlimitedForMaxValidFps) {
+ webrtc::test::ScopedFieldTrials field_trials(
+ "WebRTC-Video-BalancedDegradationSettings/"
+ "pixels:1000|2000|3000,fps:5|15|100,vp8_fps:30|100|100/");
+ const int kUnlimitedFps = std::numeric_limits<int>::max();
+ BalancedDegradationSettings settings;
+ EXPECT_EQ(15, settings.MinFps(kVideoCodecH264, 2000));
+ EXPECT_EQ(kUnlimitedFps, settings.MinFps(kVideoCodecH264, 2001));
+ EXPECT_EQ(30, settings.MinFps(kVideoCodecVP8, 1000));
+ EXPECT_EQ(kUnlimitedFps, settings.MinFps(kVideoCodecVP8, 1001));
+}
+
TEST(BalancedDegradationSettings, QpThresholdsNotSetByDefault) {
webrtc::test::ScopedFieldTrials field_trials(
"WebRTC-Video-BalancedDegradationSettings/"