blob: 9aaf55a1de897b4f1cfce5907d6b7abf722acc9a [file] [log] [blame]
Åsa Perssonf3d828e2019-05-06 12:22:49 +02001/*
2 * Copyright 2019 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#include "rtc_base/experiments/balanced_degradation_settings.h"
12
13#include <limits>
14
15#include "rtc_base/gunit.h"
16#include "test/field_trial.h"
17#include "test/gmock.h"
18
19namespace webrtc {
20namespace {
21
22void VerifyIsDefault(
23 const std::vector<BalancedDegradationSettings::Config>& config) {
Åsa Persson48284b82019-07-08 10:01:12 +020024 EXPECT_THAT(
25 config,
26 ::testing::ElementsAre(
27 BalancedDegradationSettings::Config{
Åsa Persson1b247f12019-08-14 17:26:39 +020028 320 * 240, 7, 0, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}},
Åsa Persson48284b82019-07-08 10:01:12 +020029 BalancedDegradationSettings::Config{
Åsa Persson1b247f12019-08-14 17:26:39 +020030 480 * 270, 10, 0, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}},
Åsa Persson48284b82019-07-08 10:01:12 +020031 BalancedDegradationSettings::Config{
Åsa Persson1b247f12019-08-14 17:26:39 +020032 640 * 480, 15, 0, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}}));
Åsa Perssonf3d828e2019-05-06 12:22:49 +020033}
34} // namespace
35
36TEST(BalancedDegradationSettings, GetsDefaultConfigIfNoList) {
37 webrtc::test::ScopedFieldTrials field_trials("");
38 BalancedDegradationSettings settings;
39 VerifyIsDefault(settings.GetConfigs());
Åsa Persson1b247f12019-08-14 17:26:39 +020040 EXPECT_FALSE(settings.NextHigherBitrateKbps(1));
Åsa Persson12314192019-06-20 15:45:07 +020041 EXPECT_FALSE(settings.GetQpThresholds(kVideoCodecVP8, 1));
42 EXPECT_FALSE(settings.GetQpThresholds(kVideoCodecVP9, 1));
43 EXPECT_FALSE(settings.GetQpThresholds(kVideoCodecH264, 1));
44 EXPECT_FALSE(settings.GetQpThresholds(kVideoCodecGeneric, 1));
45 EXPECT_FALSE(settings.GetQpThresholds(kVideoCodecMultiplex, 1));
Åsa Perssonf3d828e2019-05-06 12:22:49 +020046}
47
48TEST(BalancedDegradationSettings, GetsConfig) {
49 webrtc::test::ScopedFieldTrials field_trials(
50 "WebRTC-Video-BalancedDegradationSettings/"
Åsa Persson12314192019-06-20 15:45:07 +020051 "pixels:11|22|33,fps:5|15|25,other:4|5|6/");
Åsa Perssonf3d828e2019-05-06 12:22:49 +020052 BalancedDegradationSettings settings;
Åsa Persson12314192019-06-20 15:45:07 +020053 EXPECT_THAT(settings.GetConfigs(),
54 ::testing::ElementsAre(
55 BalancedDegradationSettings::Config{
Åsa Persson1b247f12019-08-14 17:26:39 +020056 11, 5, 0, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}},
Åsa Persson12314192019-06-20 15:45:07 +020057 BalancedDegradationSettings::Config{
Åsa Persson1b247f12019-08-14 17:26:39 +020058 22, 15, 0, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}},
Åsa Persson12314192019-06-20 15:45:07 +020059 BalancedDegradationSettings::Config{
Åsa Persson1b247f12019-08-14 17:26:39 +020060 33, 25, 0, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}}));
Åsa Perssonf3d828e2019-05-06 12:22:49 +020061}
62
63TEST(BalancedDegradationSettings, GetsDefaultConfigForZeroFpsValue) {
64 webrtc::test::ScopedFieldTrials field_trials(
65 "WebRTC-Video-BalancedDegradationSettings/"
66 "pixels:1000|2000|3000,fps:0|15|25/");
67 BalancedDegradationSettings settings;
68 VerifyIsDefault(settings.GetConfigs());
69}
70
71TEST(BalancedDegradationSettings, GetsDefaultConfigIfPixelsDecreases) {
72 webrtc::test::ScopedFieldTrials field_trials(
73 "WebRTC-Video-BalancedDegradationSettings/"
74 "pixels:1000|999|3000,fps:5|15|25/");
75 BalancedDegradationSettings settings;
76 VerifyIsDefault(settings.GetConfigs());
77}
78
79TEST(BalancedDegradationSettings, GetsDefaultConfigIfFramerateDecreases) {
80 webrtc::test::ScopedFieldTrials field_trials(
81 "WebRTC-Video-BalancedDegradationSettings/"
82 "pixels:1000|2000|3000,fps:5|4|25/");
83 BalancedDegradationSettings settings;
84 VerifyIsDefault(settings.GetConfigs());
85}
86
Åsa Persson48284b82019-07-08 10:01:12 +020087TEST(BalancedDegradationSettings, GetsConfigWithSpecificFps) {
88 webrtc::test::ScopedFieldTrials field_trials(
89 "WebRTC-Video-BalancedDegradationSettings/"
90 "pixels:1000|2000|3000,fps:5|15|25,vp8_fps:7|8|9,vp9_fps:9|10|11,"
91 "h264_fps:11|12|13,generic_fps:13|14|15/");
92 BalancedDegradationSettings settings;
93 EXPECT_THAT(
94 settings.GetConfigs(),
95 ::testing::ElementsAre(
96 BalancedDegradationSettings::Config{
Åsa Persson1b247f12019-08-14 17:26:39 +020097 1000, 5, 0, {0, 0, 7}, {0, 0, 9}, {0, 0, 11}, {0, 0, 13}},
Åsa Persson48284b82019-07-08 10:01:12 +020098 BalancedDegradationSettings::Config{
Åsa Persson1b247f12019-08-14 17:26:39 +020099 2000, 15, 0, {0, 0, 8}, {0, 0, 10}, {0, 0, 12}, {0, 0, 14}},
Åsa Persson48284b82019-07-08 10:01:12 +0200100 BalancedDegradationSettings::Config{
Åsa Persson1b247f12019-08-14 17:26:39 +0200101 3000, 25, 0, {0, 0, 9}, {0, 0, 11}, {0, 0, 13}, {0, 0, 15}}));
Åsa Persson48284b82019-07-08 10:01:12 +0200102}
103
104TEST(BalancedDegradationSettings, GetsDefaultConfigForZeroVp8FpsValue) {
105 webrtc::test::ScopedFieldTrials field_trials(
106 "WebRTC-Video-BalancedDegradationSettings/"
107 "pixels:1000|2000|3000,fps:7|15|25,vp8_fps:0|15|25/");
108 BalancedDegradationSettings settings;
109 VerifyIsDefault(settings.GetConfigs());
110}
111
112TEST(BalancedDegradationSettings, GetsDefaultConfigForInvalidFpsValue) {
113 webrtc::test::ScopedFieldTrials field_trials(
114 "WebRTC-Video-BalancedDegradationSettings/"
115 "pixels:1000|2000|3000,fps:7|15|25,vp8_fps:10|15|2000/");
116 BalancedDegradationSettings settings;
117 VerifyIsDefault(settings.GetConfigs());
118}
119
120TEST(BalancedDegradationSettings, GetsDefaultConfigIfVp8FramerateDecreases) {
121 webrtc::test::ScopedFieldTrials field_trials(
122 "WebRTC-Video-BalancedDegradationSettings/"
123 "pixels:1000|2000|3000,fps:4|5|25,vp8_fps:5|4|25/");
124 BalancedDegradationSettings settings;
125 VerifyIsDefault(settings.GetConfigs());
126}
127
Åsa Perssonf3d828e2019-05-06 12:22:49 +0200128TEST(BalancedDegradationSettings, GetsMinFps) {
129 webrtc::test::ScopedFieldTrials field_trials(
130 "WebRTC-Video-BalancedDegradationSettings/"
131 "pixels:1000|2000|3000,fps:5|15|25/");
132 BalancedDegradationSettings settings;
Åsa Persson48284b82019-07-08 10:01:12 +0200133 EXPECT_EQ(5, settings.MinFps(kVideoCodecVP8, 1));
134 EXPECT_EQ(5, settings.MinFps(kVideoCodecVP8, 1000));
135 EXPECT_EQ(15, settings.MinFps(kVideoCodecVP8, 1001));
136 EXPECT_EQ(15, settings.MinFps(kVideoCodecVP8, 2000));
137 EXPECT_EQ(25, settings.MinFps(kVideoCodecVP8, 2001));
138 EXPECT_EQ(25, settings.MinFps(kVideoCodecVP8, 3000));
139 EXPECT_EQ(std::numeric_limits<int>::max(),
140 settings.MinFps(kVideoCodecVP8, 3001));
141}
142
143TEST(BalancedDegradationSettings, GetsVp8MinFps) {
144 webrtc::test::ScopedFieldTrials field_trials(
145 "WebRTC-Video-BalancedDegradationSettings/"
146 "pixels:1000|2000|3000,fps:5|15|25,vp8_fps:7|10|12/");
147 BalancedDegradationSettings settings;
148 EXPECT_EQ(7, settings.MinFps(kVideoCodecVP8, 1));
149 EXPECT_EQ(7, settings.MinFps(kVideoCodecVP8, 1000));
150 EXPECT_EQ(10, settings.MinFps(kVideoCodecVP8, 1001));
151 EXPECT_EQ(10, settings.MinFps(kVideoCodecVP8, 2000));
152 EXPECT_EQ(12, settings.MinFps(kVideoCodecVP8, 2001));
153 EXPECT_EQ(12, settings.MinFps(kVideoCodecVP8, 3000));
154 EXPECT_EQ(std::numeric_limits<int>::max(),
155 settings.MinFps(kVideoCodecVP8, 3001));
Åsa Perssonf3d828e2019-05-06 12:22:49 +0200156}
157
158TEST(BalancedDegradationSettings, GetsMaxFps) {
159 webrtc::test::ScopedFieldTrials field_trials(
160 "WebRTC-Video-BalancedDegradationSettings/"
161 "pixels:1000|2000|3000,fps:5|15|25/");
162 BalancedDegradationSettings settings;
Åsa Persson48284b82019-07-08 10:01:12 +0200163 EXPECT_EQ(15, settings.MaxFps(kVideoCodecVP8, 1));
164 EXPECT_EQ(15, settings.MaxFps(kVideoCodecVP8, 1000));
165 EXPECT_EQ(25, settings.MaxFps(kVideoCodecVP8, 1001));
166 EXPECT_EQ(25, settings.MaxFps(kVideoCodecVP8, 2000));
167 EXPECT_EQ(std::numeric_limits<int>::max(),
168 settings.MaxFps(kVideoCodecVP8, 2001));
169}
170
171TEST(BalancedDegradationSettings, GetsVp8MaxFps) {
172 webrtc::test::ScopedFieldTrials field_trials(
173 "WebRTC-Video-BalancedDegradationSettings/"
174 "pixels:1000|2000|3000,fps:5|15|25,vp8_fps:7|10|12/");
175 BalancedDegradationSettings settings;
176 EXPECT_EQ(10, settings.MaxFps(kVideoCodecVP8, 1));
177 EXPECT_EQ(10, settings.MaxFps(kVideoCodecVP8, 1000));
178 EXPECT_EQ(12, settings.MaxFps(kVideoCodecVP8, 1001));
179 EXPECT_EQ(12, settings.MaxFps(kVideoCodecVP8, 2000));
180 EXPECT_EQ(std::numeric_limits<int>::max(),
181 settings.MaxFps(kVideoCodecVP8, 2001));
182}
183
184TEST(BalancedDegradationSettings, GetsVp9Fps) {
185 webrtc::test::ScopedFieldTrials field_trials(
186 "WebRTC-Video-BalancedDegradationSettings/"
187 "pixels:1000|2000|3000,fps:5|15|25,vp9_fps:7|10|12/");
188 BalancedDegradationSettings settings;
189 EXPECT_EQ(7, settings.MinFps(kVideoCodecVP9, 1000));
190 EXPECT_EQ(10, settings.MaxFps(kVideoCodecVP9, 1000));
191}
192
193TEST(BalancedDegradationSettings, GetsH264Fps) {
194 webrtc::test::ScopedFieldTrials field_trials(
195 "WebRTC-Video-BalancedDegradationSettings/"
196 "pixels:1000|2000|3000,fps:5|15|25,h264_fps:8|11|13/");
197 BalancedDegradationSettings settings;
198 EXPECT_EQ(11, settings.MinFps(kVideoCodecH264, 2000));
199 EXPECT_EQ(13, settings.MaxFps(kVideoCodecH264, 2000));
200}
201
202TEST(BalancedDegradationSettings, GetsGenericFps) {
203 webrtc::test::ScopedFieldTrials field_trials(
204 "WebRTC-Video-BalancedDegradationSettings/"
205 "pixels:1000|2000|3000,fps:5|15|25,generic_fps:9|12|14/");
206 BalancedDegradationSettings settings;
207 EXPECT_EQ(14, settings.MinFps(kVideoCodecGeneric, 3000));
208 EXPECT_EQ(std::numeric_limits<int>::max(),
209 settings.MaxFps(kVideoCodecGeneric, 3000));
Åsa Perssonf3d828e2019-05-06 12:22:49 +0200210}
211
Åsa Persson0c38a862019-08-14 10:10:12 +0200212TEST(BalancedDegradationSettings, GetsUnlimitedForMaxValidFps) {
213 webrtc::test::ScopedFieldTrials field_trials(
214 "WebRTC-Video-BalancedDegradationSettings/"
215 "pixels:1000|2000|3000,fps:5|15|100,vp8_fps:30|100|100/");
216 const int kUnlimitedFps = std::numeric_limits<int>::max();
217 BalancedDegradationSettings settings;
218 EXPECT_EQ(15, settings.MinFps(kVideoCodecH264, 2000));
219 EXPECT_EQ(kUnlimitedFps, settings.MinFps(kVideoCodecH264, 2001));
220 EXPECT_EQ(30, settings.MinFps(kVideoCodecVP8, 1000));
221 EXPECT_EQ(kUnlimitedFps, settings.MinFps(kVideoCodecVP8, 1001));
222}
223
Åsa Persson1b247f12019-08-14 17:26:39 +0200224TEST(BalancedDegradationSettings, GetsConfigWithBitrate) {
225 webrtc::test::ScopedFieldTrials field_trials(
226 "WebRTC-Video-BalancedDegradationSettings/"
227 "pixels:11|22|33,fps:5|15|25,kbps:44|88|99/");
228 BalancedDegradationSettings settings;
229 EXPECT_THAT(settings.GetConfigs(),
230 ::testing::ElementsAre(
231 BalancedDegradationSettings::Config{
232 11, 5, 44, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}},
233 BalancedDegradationSettings::Config{
234 22, 15, 88, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}},
235 BalancedDegradationSettings::Config{
236 33, 25, 99, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}}));
237}
238
239TEST(BalancedDegradationSettings, GetsDefaultConfigIfBitrateDecreases) {
240 webrtc::test::ScopedFieldTrials field_trials(
241 "WebRTC-Video-BalancedDegradationSettings/"
242 "pixels:11|22|33,fps:5|15|25,kbps:44|43|99/");
243 BalancedDegradationSettings settings;
244 VerifyIsDefault(settings.GetConfigs());
245}
246
247TEST(BalancedDegradationSettings,
248 GetsDefaultConfigIfBitrateDecreasesWithUnsetValue) {
249 webrtc::test::ScopedFieldTrials field_trials(
250 "WebRTC-Video-BalancedDegradationSettings/"
251 "pixels:11|22|33,fps:5|15|25,kbps:44|0|43/");
252 BalancedDegradationSettings settings;
253 VerifyIsDefault(settings.GetConfigs());
254}
255
256TEST(BalancedDegradationSettings, GetsNextHigherBitrate) {
257 webrtc::test::ScopedFieldTrials field_trials(
258 "WebRTC-Video-BalancedDegradationSettings/"
259 "pixels:1000|2000|3000,fps:5|15|25,kbps:44|88|99/");
260 BalancedDegradationSettings settings;
261 EXPECT_EQ(88, settings.NextHigherBitrateKbps(1));
262 EXPECT_EQ(88, settings.NextHigherBitrateKbps(1000));
263 EXPECT_EQ(99, settings.NextHigherBitrateKbps(1001));
264 EXPECT_EQ(99, settings.NextHigherBitrateKbps(2000));
265 EXPECT_FALSE(settings.NextHigherBitrateKbps(2001));
266}
267
268TEST(BalancedDegradationSettings, GetsNextHigherBitrateWithUnsetValue) {
269 webrtc::test::ScopedFieldTrials field_trials(
270 "WebRTC-Video-BalancedDegradationSettings/"
271 "pixels:1000|2000|3000,fps:5|15|25,kbps:10|0|20/");
272 BalancedDegradationSettings settings;
273 EXPECT_FALSE(settings.NextHigherBitrateKbps(1));
274 EXPECT_FALSE(settings.NextHigherBitrateKbps(1000));
275 EXPECT_EQ(20, settings.NextHigherBitrateKbps(1001));
276 EXPECT_EQ(20, settings.NextHigherBitrateKbps(2000));
277 EXPECT_FALSE(settings.NextHigherBitrateKbps(2001));
278}
279
Åsa Persson12314192019-06-20 15:45:07 +0200280TEST(BalancedDegradationSettings, QpThresholdsNotSetByDefault) {
281 webrtc::test::ScopedFieldTrials field_trials(
282 "WebRTC-Video-BalancedDegradationSettings/"
283 "pixels:1000|2000|3000,fps:5|15|25/");
284 BalancedDegradationSettings settings;
285 EXPECT_FALSE(settings.GetQpThresholds(kVideoCodecVP8, 1));
286 EXPECT_FALSE(settings.GetQpThresholds(kVideoCodecVP9, 1));
287 EXPECT_FALSE(settings.GetQpThresholds(kVideoCodecH264, 1));
288 EXPECT_FALSE(settings.GetQpThresholds(kVideoCodecGeneric, 1));
289}
290
291TEST(BalancedDegradationSettings, GetsConfigWithQpThresholds) {
292 webrtc::test::ScopedFieldTrials field_trials(
293 "WebRTC-Video-BalancedDegradationSettings/"
294 "pixels:1000|2000|3000,fps:5|15|25,vp8_qp_low:89|90|88,"
Åsa Persson1b247f12019-08-14 17:26:39 +0200295 "vp8_qp_high:90|91|92,vp9_qp_low:27|28|29,vp9_qp_high:82|83|84,"
Åsa Persson12314192019-06-20 15:45:07 +0200296 "h264_qp_low:12|13|14,h264_qp_high:20|30|40,generic_qp_low:7|6|5,"
297 "generic_qp_high:22|23|24/");
298 BalancedDegradationSettings settings;
Åsa Persson48284b82019-07-08 10:01:12 +0200299 EXPECT_THAT(
300 settings.GetConfigs(),
301 ::testing::ElementsAre(
302 BalancedDegradationSettings::Config{
Åsa Persson1b247f12019-08-14 17:26:39 +0200303 1000, 5, 0, {89, 90, 0}, {27, 82, 0}, {12, 20, 0}, {7, 22, 0}},
Åsa Persson48284b82019-07-08 10:01:12 +0200304 BalancedDegradationSettings::Config{
Åsa Persson1b247f12019-08-14 17:26:39 +0200305 2000, 15, 0, {90, 91, 0}, {28, 83, 0}, {13, 30, 0}, {6, 23, 0}},
Åsa Persson48284b82019-07-08 10:01:12 +0200306 BalancedDegradationSettings::Config{
Åsa Persson1b247f12019-08-14 17:26:39 +0200307 3000, 25, 0, {88, 92, 0}, {29, 84, 0}, {14, 40, 0}, {5, 24, 0}}));
Åsa Persson12314192019-06-20 15:45:07 +0200308}
309
310TEST(BalancedDegradationSettings, GetsDefaultConfigIfOnlyHasLowThreshold) {
311 webrtc::test::ScopedFieldTrials field_trials(
312 "WebRTC-Video-BalancedDegradationSettings/"
313 "pixels:1000|2000|3000,fps:5|15|25,vp8_qp_low:89|90|88/");
314 BalancedDegradationSettings settings;
315 VerifyIsDefault(settings.GetConfigs());
316}
317
318TEST(BalancedDegradationSettings, GetsDefaultConfigIfOnlyHasHighThreshold) {
319 webrtc::test::ScopedFieldTrials field_trials(
320 "WebRTC-Video-BalancedDegradationSettings/"
321 "pixels:1000|2000|3000,fps:5|15|25,vp8_qp_high:90|91|92/");
322 BalancedDegradationSettings settings;
323 VerifyIsDefault(settings.GetConfigs());
324}
325
326TEST(BalancedDegradationSettings, GetsDefaultConfigIfLowEqualsHigh) {
327 webrtc::test::ScopedFieldTrials field_trials(
328 "WebRTC-Video-BalancedDegradationSettings/"
329 "pixels:1000|2000|3000,fps:5|15|25,"
330 "vp8_qp_low:89|90|88,vp8_qp_high:90|91|88/");
331 BalancedDegradationSettings settings;
332 VerifyIsDefault(settings.GetConfigs());
333}
334
335TEST(BalancedDegradationSettings, GetsDefaultConfigIfLowGreaterThanHigh) {
336 webrtc::test::ScopedFieldTrials field_trials(
337 "WebRTC-Video-BalancedDegradationSettings/"
338 "pixels:1000|2000|3000,fps:5|15|25,"
339 "vp8_qp_low:89|90|88,vp8_qp_high:90|91|87/");
340 BalancedDegradationSettings settings;
341 VerifyIsDefault(settings.GetConfigs());
342}
343
344TEST(BalancedDegradationSettings, GetsDefaultConfigForZeroQpValue) {
345 webrtc::test::ScopedFieldTrials field_trials(
346 "WebRTC-Video-BalancedDegradationSettings/"
347 "pixels:1000|2000|3000,fps:5|15|25,"
348 "vp8_qp_low:89|0|88,vp8_qp_high:90|91|92/");
349 BalancedDegradationSettings settings;
350 VerifyIsDefault(settings.GetConfigs());
351}
352
353TEST(BalancedDegradationSettings, GetsVp8QpThresholds) {
354 webrtc::test::ScopedFieldTrials field_trials(
355 "WebRTC-Video-BalancedDegradationSettings/"
356 "pixels:1000|2000|3000,fps:5|15|25,"
357 "vp8_qp_low:89|90|88,vp8_qp_high:90|91|92/");
358 BalancedDegradationSettings settings;
359 EXPECT_EQ(89, settings.GetQpThresholds(kVideoCodecVP8, 1)->low);
360 EXPECT_EQ(90, settings.GetQpThresholds(kVideoCodecVP8, 1)->high);
361 EXPECT_EQ(90, settings.GetQpThresholds(kVideoCodecVP8, 1000)->high);
362 EXPECT_EQ(91, settings.GetQpThresholds(kVideoCodecVP8, 1001)->high);
363 EXPECT_EQ(91, settings.GetQpThresholds(kVideoCodecVP8, 2000)->high);
364 EXPECT_EQ(92, settings.GetQpThresholds(kVideoCodecVP8, 2001)->high);
365 EXPECT_EQ(92, settings.GetQpThresholds(kVideoCodecVP8, 3000)->high);
366 EXPECT_EQ(92, settings.GetQpThresholds(kVideoCodecVP8, 3001)->high);
367}
368
369TEST(BalancedDegradationSettings, GetsVp9QpThresholds) {
370 webrtc::test::ScopedFieldTrials field_trials(
371 "WebRTC-Video-BalancedDegradationSettings/"
372 "pixels:1000|2000|3000,fps:5|15|25,"
373 "vp9_qp_low:55|56|57,vp9_qp_high:155|156|157/");
374 BalancedDegradationSettings settings;
375 const auto thresholds = settings.GetQpThresholds(kVideoCodecVP9, 1000);
376 EXPECT_TRUE(thresholds);
377 EXPECT_EQ(55, thresholds->low);
378 EXPECT_EQ(155, thresholds->high);
379}
380
381TEST(BalancedDegradationSettings, GetsH264QpThresholds) {
382 webrtc::test::ScopedFieldTrials field_trials(
383 "WebRTC-Video-BalancedDegradationSettings/"
384 "pixels:1000|2000|3000,fps:5|15|25,"
385 "h264_qp_low:21|22|23,h264_qp_high:41|43|42/");
386 BalancedDegradationSettings settings;
387 const auto thresholds = settings.GetQpThresholds(kVideoCodecH264, 2000);
388 EXPECT_TRUE(thresholds);
389 EXPECT_EQ(22, thresholds->low);
390 EXPECT_EQ(43, thresholds->high);
391}
392
393TEST(BalancedDegradationSettings, GetsGenericQpThresholds) {
394 webrtc::test::ScopedFieldTrials field_trials(
395 "WebRTC-Video-BalancedDegradationSettings/"
396 "pixels:1000|2000|3000,fps:5|15|25,"
397 "generic_qp_low:2|3|4,generic_qp_high:22|23|24/");
398 BalancedDegradationSettings settings;
399 const auto thresholds = settings.GetQpThresholds(kVideoCodecGeneric, 3000);
400 EXPECT_TRUE(thresholds);
401 EXPECT_EQ(4, thresholds->low);
402 EXPECT_EQ(24, thresholds->high);
403}
404
Åsa Perssonf3d828e2019-05-06 12:22:49 +0200405} // namespace webrtc