From 0c38a865338e9cba5b53d313c27d7f689d08cac6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85sa=20Persson?= Date: Wed, 14 Aug 2019 10:10:12 +0200 Subject: [PATCH] BalancedDegradationSettings: add option to configure no fps limit. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If configuring max valid framerate (100), no framerate restriction is used (std::numeric_limits::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 Reviewed-by: Magnus Flodman Cr-Commit-Position: refs/heads/master@{#28854} --- .../experiments/balanced_degradation_settings.cc | 6 ++++-- .../balanced_degradation_settings_unittest.cc | 12 ++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/rtc_base/experiments/balanced_degradation_settings.cc b/rtc_base/experiments/balanced_degradation_settings.cc index 3205550069..e1ed1bc945 100644 --- a/rtc_base/experiments/balanced_degradation_settings.cc +++ b/rtc_base/experiments/balanced_degradation_settings.cc @@ -21,7 +21,7 @@ namespace webrtc { 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 DefaultConfigs() { return {{320 * 240, 7, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}}, @@ -164,7 +164,9 @@ int GetFps(VideoCodecType type, break; } - return fps.value_or(config->fps); + const int framerate = fps.value_or(config->fps); + + return (framerate == kMaxFps) ? std::numeric_limits::max() : framerate; } } // namespace diff --git a/rtc_base/experiments/balanced_degradation_settings_unittest.cc b/rtc_base/experiments/balanced_degradation_settings_unittest.cc index c604b554f0..76a76242eb 100644 --- a/rtc_base/experiments/balanced_degradation_settings_unittest.cc +++ b/rtc_base/experiments/balanced_degradation_settings_unittest.cc @@ -208,6 +208,18 @@ TEST(BalancedDegradationSettings, GetsGenericFps) { 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::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/"