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}
This commit is contained in:
Åsa Persson
2019-08-14 10:10:12 +02:00
committed by Commit Bot
parent 704c8c4446
commit 0c38a86533
2 changed files with 16 additions and 2 deletions

View File

@ -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<BalancedDegradationSettings::Config> 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<int>::max() : framerate;
}
} // namespace

View File

@ -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<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/"