blob: c3cba3cbe03cf0cd4d4f7123b53c72df847971f6 [file] [log] [blame]
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +00001/*
2 * Copyright (c) 2013 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#include <stdio.h>
11
Sebastian Janssoncabe3832018-01-12 10:54:18 +010012#include "rtc_base/experiments/alr_experiment.h"
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020013#include "test/field_trial.h"
14#include "test/gtest.h"
15#include "video/video_quality_test.h"
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000016
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000017namespace webrtc {
18
sprang89c4a7e2017-06-30 13:27:40 -070019namespace {
brandtrdd369c62016-11-16 23:56:57 -080020static const int kFullStackTestDurationSecs = 45;
sprang89c4a7e2017-06-30 13:27:40 -070021} // namespace
pbos@webrtc.orgb613b5a2013-12-03 10:13:04 +000022
ivica5d6a06c2015-09-17 05:30:24 -070023class FullStackTest : public VideoQualityTest {
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000024 public:
ivica5d6a06c2015-09-17 05:30:24 -070025 void RunTest(const VideoQualityTest::Params &params) {
26 RunWithAnalyzer(params);
pbos@webrtc.org94015242013-10-16 11:05:37 +000027 }
sprang89c4a7e2017-06-30 13:27:40 -070028
29 protected:
30 const std::string kScreenshareSimulcastExperiment =
31 "WebRTC-SimulcastScreenshare/Enabled/";
32 const std::string kAlrProbingExperiment =
Sebastian Janssoncabe3832018-01-12 10:54:18 +010033 std::string(AlrExperimentSettings::kScreenshareProbingBweExperimentName) +
ilnik2ae19db2017-08-31 04:46:45 -070034 "/1.1,2875,85,20,-20,0/";
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +010035 const std::string kRoundRobinPacingQueueExperiment =
36 "WebRTC-RoundRobinPacing/Enabled/";
37 const std::string kPacerPushBackExperiment =
38 "WebRTC-PacerPushbackExperiment/Enabled/";
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000039};
40
sprangce4aef12015-11-02 07:23:20 -080041// VideoQualityTest::Params params = {
42// { ... }, // Common.
43// { ... }, // Video-specific settings.
44// { ... }, // Screenshare-specific settings.
45// { ... }, // Analyzer settings.
46// pipe, // FakeNetworkPipe::Config
47// { ... }, // Spatial scalability.
48// logs // bool
49// };
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000050
Peter Boström12996152016-05-14 02:03:18 +020051#if !defined(RTC_DISABLE_VP9)
asapersson88b0a222016-02-12 13:16:43 -080052TEST_F(FullStackTest, ForemanCifWithoutPacketLossVp9) {
brandtr93c5d032016-11-30 07:50:07 -080053 // TODO(pbos): Decide on psnr/ssim thresholds for foreman_cif.
54 VideoQualityTest::Params foreman_cif;
55 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +010056 foreman_cif.video[0] = {true, 352, 288, 30, 700000,
57 700000, 700000, false, "VP9", 1,
58 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -080059 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0_VP9", 0.0, 0.0,
60 kFullStackTestDurationSecs};
61 RunTest(foreman_cif);
asapersson88b0a222016-02-12 13:16:43 -080062}
63
64TEST_F(FullStackTest, ForemanCifPlr5Vp9) {
brandtr93c5d032016-11-30 07:50:07 -080065 VideoQualityTest::Params foreman_cif;
66 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +010067 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
68 500000, 2000000, false, "VP9", 1,
69 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -080070 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_VP9", 0.0, 0.0,
71 kFullStackTestDurationSecs};
72 foreman_cif.pipe.loss_percent = 5;
73 foreman_cif.pipe.queue_delay_ms = 50;
74 RunTest(foreman_cif);
asapersson88b0a222016-02-12 13:16:43 -080075}
Emircan Uysaler03e6ec92018-03-09 15:03:26 -080076
77TEST_F(FullStackTest, ForemanCifWithoutPacketLossMultiplexI420Frame) {
78 VideoQualityTest::Params foreman_cif;
79 foreman_cif.call.send_side_bwe = true;
80 foreman_cif.video[0] = {true, 352, 288, 30, 700000,
81 700000, 700000, false, "multiplex", 1,
82 0, 0, false, false, "foreman_cif"};
83 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0_Multiplex", 0.0, 0.0,
84 kFullStackTestDurationSecs};
85 RunTest(foreman_cif);
86}
87
Emircan Uysalerf1ff3bd2018-03-12 11:53:21 -070088TEST_F(FullStackTest, GeneratorWithoutPacketLossMultiplexI420AFrame) {
89 VideoQualityTest::Params generator;
90 generator.call.send_side_bwe = true;
91 generator.video[0] = {true, 352, 288, 30, 700000,
92 700000, 700000, false, "multiplex", 1,
93 0, 0, false, false, "GeneratorI420A"};
94 generator.analyzer = {"generator_net_delay_0_0_plr_0_Multiplex", 0.0, 0.0,
95 kFullStackTestDurationSecs};
96 RunTest(generator);
Emircan Uysaler03e6ec92018-03-09 15:03:26 -080097}
98
Peter Boström12996152016-05-14 02:03:18 +020099#endif // !defined(RTC_DISABLE_VP9)
asapersson88b0a222016-02-12 13:16:43 -0800100
Patrik Höglund11bf2fa2018-04-09 12:20:50 +0200101#if defined(WEBRTC_LINUX)
102// Crashes on the linux trusty perf bot: bugs.webrtc.org/9129.
103#define MAYBE_ParisQcifWithoutPacketLoss DISABLED_ParisQcifWithoutPacketLoss
104#else
105#define MAYBE_ParisQcifWithoutPacketLoss ParisQcifWithoutPacketLoss
106#endif
107TEST_F(FullStackTest, MAYBE_ParisQcifWithoutPacketLoss) {
minyue626bc952016-10-31 05:47:02 -0700108 VideoQualityTest::Params paris_qcif;
109 paris_qcif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100110 paris_qcif.video[0] = {true, 176, 144, 30, 300000,
111 300000, 300000, false, "VP8", 1,
112 0, 0, false, false, "paris_qcif"};
minyue626bc952016-10-31 05:47:02 -0700113 paris_qcif.analyzer = {"net_delay_0_0_plr_0", 36.0, 0.96,
114 kFullStackTestDurationSecs};
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000115 RunTest(paris_qcif);
pbos@webrtc.org994d0b72014-06-27 08:47:52 +0000116}
117
118TEST_F(FullStackTest, ForemanCifWithoutPacketLoss) {
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000119 // TODO(pbos): Decide on psnr/ssim thresholds for foreman_cif.
minyue626bc952016-10-31 05:47:02 -0700120 VideoQualityTest::Params foreman_cif;
121 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100122 foreman_cif.video[0] = {true, 352, 288, 30, 700000,
123 700000, 700000, false, "VP8", 1,
124 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700125 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0", 0.0, 0.0,
126 kFullStackTestDurationSecs};
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000127 RunTest(foreman_cif);
pbos@webrtc.org994d0b72014-06-27 08:47:52 +0000128}
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +0000129
asaperssonfb6ad3b2016-12-16 06:54:01 -0800130TEST_F(FullStackTest, ForemanCif30kbpsWithoutPacketLoss) {
131 VideoQualityTest::Params foreman_cif;
132 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100133 foreman_cif.video[0] = {true, 352, 288, 10, 30000,
134 30000, 30000, false, "VP8", 1,
135 0, 0, false, false, "foreman_cif"};
asaperssonfb6ad3b2016-12-16 06:54:01 -0800136 foreman_cif.analyzer = {"foreman_cif_30kbps_net_delay_0_0_plr_0", 0.0, 0.0,
137 kFullStackTestDurationSecs};
138 RunTest(foreman_cif);
139}
140
sprang@webrtc.org343096a2015-02-23 08:34:17 +0000141TEST_F(FullStackTest, ForemanCifPlr5) {
minyue626bc952016-10-31 05:47:02 -0700142 VideoQualityTest::Params foreman_cif;
143 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100144 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
145 500000, 2000000, false, "VP8", 1,
146 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700147 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5", 0.0, 0.0,
148 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700149 foreman_cif.pipe.loss_percent = 5;
150 foreman_cif.pipe.queue_delay_ms = 50;
stefan@webrtc.orgc216b9a2014-10-14 10:38:49 +0000151 RunTest(foreman_cif);
152}
153
brandtr93c5d032016-11-30 07:50:07 -0800154TEST_F(FullStackTest, ForemanCifPlr5Ulpfec) {
155 VideoQualityTest::Params foreman_cif;
156 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100157 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
158 500000, 2000000, false, "VP8", 1,
159 0, 0, true, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800160 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_ulpfec", 0.0, 0.0,
161 kFullStackTestDurationSecs};
162 foreman_cif.pipe.loss_percent = 5;
163 foreman_cif.pipe.queue_delay_ms = 50;
164 RunTest(foreman_cif);
165}
166
167TEST_F(FullStackTest, ForemanCifPlr5Flexfec) {
168 VideoQualityTest::Params foreman_cif;
169 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100170 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
171 500000, 2000000, false, "VP8", 1,
172 0, 0, false, true, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800173 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_flexfec", 0.0, 0.0,
174 kFullStackTestDurationSecs};
175 foreman_cif.pipe.loss_percent = 5;
176 foreman_cif.pipe.queue_delay_ms = 50;
177 RunTest(foreman_cif);
178}
179
stefan889d9652017-07-05 03:03:02 -0700180TEST_F(FullStackTest, ForemanCif500kbpsPlr3Flexfec) {
181 VideoQualityTest::Params foreman_cif;
182 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100183 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
184 500000, 2000000, false, "VP8", 1,
185 0, 0, false, true, "foreman_cif"};
stefan889d9652017-07-05 03:03:02 -0700186 foreman_cif.analyzer = {"foreman_cif_500kbps_delay_50_0_plr_3_flexfec", 0.0,
187 0.0, kFullStackTestDurationSecs};
188 foreman_cif.pipe.loss_percent = 3;
189 foreman_cif.pipe.link_capacity_kbps = 500;
190 foreman_cif.pipe.queue_delay_ms = 50;
191 RunTest(foreman_cif);
192}
193
194TEST_F(FullStackTest, ForemanCif500kbpsPlr3Ulpfec) {
195 VideoQualityTest::Params foreman_cif;
196 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100197 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
198 500000, 2000000, false, "VP8", 1,
199 0, 0, true, false, "foreman_cif"};
stefan889d9652017-07-05 03:03:02 -0700200 foreman_cif.analyzer = {"foreman_cif_500kbps_delay_50_0_plr_3_ulpfec", 0.0,
201 0.0, kFullStackTestDurationSecs};
202 foreman_cif.pipe.loss_percent = 3;
203 foreman_cif.pipe.link_capacity_kbps = 500;
204 foreman_cif.pipe.queue_delay_ms = 50;
205 RunTest(foreman_cif);
206}
207
brandtrdd369c62016-11-16 23:56:57 -0800208#if defined(WEBRTC_USE_H264)
209TEST_F(FullStackTest, ForemanCifWithoutPacketlossH264) {
brandtr93c5d032016-11-30 07:50:07 -0800210 // TODO(pbos): Decide on psnr/ssim thresholds for foreman_cif.
211 VideoQualityTest::Params foreman_cif;
212 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100213 foreman_cif.video[0] = {true, 352, 288, 30, 700000,
214 700000, 700000, false, "H264", 1,
215 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800216 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0_H264", 0.0, 0.0,
217 kFullStackTestDurationSecs};
218 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800219}
220
asaperssonfb6ad3b2016-12-16 06:54:01 -0800221TEST_F(FullStackTest, ForemanCif30kbpsWithoutPacketlossH264) {
222 VideoQualityTest::Params foreman_cif;
223 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100224 foreman_cif.video[0] = {true, 352, 288, 10, 30000,
225 30000, 30000, false, "H264", 1,
226 0, 0, false, false, "foreman_cif"};
asaperssonfb6ad3b2016-12-16 06:54:01 -0800227 foreman_cif.analyzer = {"foreman_cif_30kbps_net_delay_0_0_plr_0_H264", 0.0,
228 0.0, kFullStackTestDurationSecs};
229 RunTest(foreman_cif);
230}
231
brandtrdd369c62016-11-16 23:56:57 -0800232TEST_F(FullStackTest, ForemanCifPlr5H264) {
brandtr93c5d032016-11-30 07:50:07 -0800233 VideoQualityTest::Params foreman_cif;
234 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100235 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
236 500000, 2000000, false, "H264", 1,
237 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800238 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264", 0.0, 0.0,
239 kFullStackTestDurationSecs};
240 foreman_cif.pipe.loss_percent = 5;
241 foreman_cif.pipe.queue_delay_ms = 50;
242 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800243}
244
Rasmus Brandt88f080a2017-11-02 14:28:06 +0100245TEST_F(FullStackTest, ForemanCifPlr5H264SpsPpsIdrIsKeyframe) {
246 test::ScopedFieldTrials override_field_trials(
247 "WebRTC-SpsPpsIdrIsH264Keyframe/Enabled/");
248
249 VideoQualityTest::Params foreman_cif;
250 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100251 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
252 500000, 2000000, false, "H264", 1,
253 0, 0, false, false, "foreman_cif"};
Rasmus Brandt88f080a2017-11-02 14:28:06 +0100254 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264_sps_pps_idr", 0.0,
255 0.0, kFullStackTestDurationSecs};
256 foreman_cif.pipe.loss_percent = 5;
257 foreman_cif.pipe.queue_delay_ms = 50;
258 RunTest(foreman_cif);
259}
260
brandtrdd369c62016-11-16 23:56:57 -0800261// Verify that this is worth the bot time, before enabling.
262TEST_F(FullStackTest, ForemanCifPlr5H264Flexfec) {
brandtr93c5d032016-11-30 07:50:07 -0800263 VideoQualityTest::Params foreman_cif;
264 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100265 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
266 500000, 2000000, false, "H264", 1,
267 0, 0, false, true, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800268 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264_flexfec", 0.0, 0.0,
269 kFullStackTestDurationSecs};
270 foreman_cif.pipe.loss_percent = 5;
271 foreman_cif.pipe.queue_delay_ms = 50;
272 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800273}
274
275// Ulpfec with H264 is an unsupported combination, so this test is only useful
276// for debugging. It is therefore disabled by default.
277TEST_F(FullStackTest, DISABLED_ForemanCifPlr5H264Ulpfec) {
brandtr93c5d032016-11-30 07:50:07 -0800278 VideoQualityTest::Params foreman_cif;
279 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100280 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
281 500000, 2000000, false, "H264", 1,
282 0, 0, true, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800283 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264_ulpfec", 0.0, 0.0,
284 kFullStackTestDurationSecs};
285 foreman_cif.pipe.loss_percent = 5;
286 foreman_cif.pipe.queue_delay_ms = 50;
287 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800288}
289#endif // defined(WEBRTC_USE_H264)
290
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000291TEST_F(FullStackTest, ForemanCif500kbps) {
minyue626bc952016-10-31 05:47:02 -0700292 VideoQualityTest::Params foreman_cif;
293 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100294 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
295 500000, 2000000, false, "VP8", 1,
296 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700297 foreman_cif.analyzer = {"foreman_cif_500kbps", 0.0, 0.0,
298 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700299 foreman_cif.pipe.queue_length_packets = 0;
300 foreman_cif.pipe.queue_delay_ms = 0;
301 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000302 RunTest(foreman_cif);
303}
304
305TEST_F(FullStackTest, ForemanCif500kbpsLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700306 VideoQualityTest::Params foreman_cif;
307 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100308 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
309 500000, 2000000, false, "VP8", 1,
310 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700311 foreman_cif.analyzer = {"foreman_cif_500kbps_32pkts_queue", 0.0, 0.0,
312 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700313 foreman_cif.pipe.queue_length_packets = 32;
314 foreman_cif.pipe.queue_delay_ms = 0;
315 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000316 RunTest(foreman_cif);
317}
318
319TEST_F(FullStackTest, ForemanCif500kbps100ms) {
minyue626bc952016-10-31 05:47:02 -0700320 VideoQualityTest::Params foreman_cif;
321 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100322 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
323 500000, 2000000, false, "VP8", 1,
324 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700325 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms", 0.0, 0.0,
326 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700327 foreman_cif.pipe.queue_length_packets = 0;
328 foreman_cif.pipe.queue_delay_ms = 100;
329 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000330 RunTest(foreman_cif);
331}
332
333TEST_F(FullStackTest, ForemanCif500kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700334 VideoQualityTest::Params foreman_cif;
335 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100336 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
337 500000, 2000000, false, "VP8", 1,
338 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700339 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms_32pkts_queue", 0.0, 0.0,
340 kFullStackTestDurationSecs};
stefanb1797672016-08-11 07:00:57 -0700341 foreman_cif.pipe.queue_length_packets = 32;
342 foreman_cif.pipe.queue_delay_ms = 100;
343 foreman_cif.pipe.link_capacity_kbps = 500;
344 RunTest(foreman_cif);
345}
346
347TEST_F(FullStackTest, ForemanCif500kbps100msLimitedQueueRecvBwe) {
minyue626bc952016-10-31 05:47:02 -0700348 VideoQualityTest::Params foreman_cif;
brandtr93c5d032016-11-30 07:50:07 -0800349 foreman_cif.call.send_side_bwe = false;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100350 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
351 500000, 2000000, false, "VP8", 1,
352 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800353 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms_32pkts_queue_recv_bwe",
354 0.0, 0.0, kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700355 foreman_cif.pipe.queue_length_packets = 32;
356 foreman_cif.pipe.queue_delay_ms = 100;
357 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000358 RunTest(foreman_cif);
359}
360
361TEST_F(FullStackTest, ForemanCif1000kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700362 VideoQualityTest::Params foreman_cif;
363 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100364 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
365 2000000, 2000000, false, "VP8", 1,
366 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700367 foreman_cif.analyzer = {"foreman_cif_1000kbps_100ms_32pkts_queue", 0.0, 0.0,
368 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700369 foreman_cif.pipe.queue_length_packets = 32;
370 foreman_cif.pipe.queue_delay_ms = 100;
371 foreman_cif.pipe.link_capacity_kbps = 1000;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000372 RunTest(foreman_cif);
373}
sprang@webrtc.org131bea82015-02-18 12:46:06 +0000374
sprangff19d352017-09-06 07:14:02 -0700375// TODO(sprang): Remove this if we have the similar ModerateLimits below?
stefanb1797672016-08-11 07:00:57 -0700376TEST_F(FullStackTest, ConferenceMotionHd2000kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700377 VideoQualityTest::Params conf_motion_hd;
378 conf_motion_hd.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100379 conf_motion_hd.video[0] = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000380 true, 1280, 720, 50, 30000,
381 3000000, 3000000, false, "VP8", 1,
382 0, 0, false, false, "ConferenceMotion_1280_720_50"};
minyue626bc952016-10-31 05:47:02 -0700383 conf_motion_hd.analyzer = {"conference_motion_hd_2000kbps_100ms_32pkts_queue",
384 0.0, 0.0, kFullStackTestDurationSecs};
stefanb1797672016-08-11 07:00:57 -0700385 conf_motion_hd.pipe.queue_length_packets = 32;
386 conf_motion_hd.pipe.queue_delay_ms = 100;
387 conf_motion_hd.pipe.link_capacity_kbps = 2000;
388 RunTest(conf_motion_hd);
389}
390
sprangff19d352017-09-06 07:14:02 -0700391TEST_F(FullStackTest, ConferenceMotionHd1TLModerateLimits) {
392 VideoQualityTest::Params conf_motion_hd;
393 conf_motion_hd.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100394 conf_motion_hd.video[0] = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000395 true, 1280, 720, 50, 30000,
396 3000000, 3000000, false, "VP8", 1,
397 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700398 conf_motion_hd.analyzer = {"conference_motion_hd_1tl_moderate_limits", 0.0,
399 0.0, kFullStackTestDurationSecs};
400 conf_motion_hd.pipe.queue_length_packets = 50;
401 conf_motion_hd.pipe.loss_percent = 3;
402 conf_motion_hd.pipe.queue_delay_ms = 100;
403 conf_motion_hd.pipe.link_capacity_kbps = 2000;
404 RunTest(conf_motion_hd);
405}
406
407TEST_F(FullStackTest, ConferenceMotionHd2TLModerateLimits) {
408 VideoQualityTest::Params conf_motion_hd;
409 conf_motion_hd.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100410 conf_motion_hd.video[0] = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000411 true, 1280, 720, 50, 30000,
412 3000000, 3000000, false, "VP8", 2,
413 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700414 conf_motion_hd.analyzer = {"conference_motion_hd_2tl_moderate_limits", 0.0,
415 0.0, kFullStackTestDurationSecs};
416 conf_motion_hd.pipe.queue_length_packets = 50;
417 conf_motion_hd.pipe.loss_percent = 3;
418 conf_motion_hd.pipe.queue_delay_ms = 100;
419 conf_motion_hd.pipe.link_capacity_kbps = 2000;
420 RunTest(conf_motion_hd);
421}
422
423TEST_F(FullStackTest, ConferenceMotionHd3TLModerateLimits) {
424 VideoQualityTest::Params conf_motion_hd;
425 conf_motion_hd.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100426 conf_motion_hd.video[0] = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000427 true, 1280, 720, 50, 30000,
428 3000000, 3000000, false, "VP8", 3,
429 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700430 conf_motion_hd.analyzer = {"conference_motion_hd_3tl_moderate_limits", 0.0,
431 0.0, kFullStackTestDurationSecs};
432 conf_motion_hd.pipe.queue_length_packets = 50;
433 conf_motion_hd.pipe.loss_percent = 3;
434 conf_motion_hd.pipe.queue_delay_ms = 100;
435 conf_motion_hd.pipe.link_capacity_kbps = 2000;
436 RunTest(conf_motion_hd);
437}
438
439TEST_F(FullStackTest, ConferenceMotionHd4TLModerateLimits) {
440 VideoQualityTest::Params conf_motion_hd;
441 conf_motion_hd.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100442 conf_motion_hd.video[0] = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000443 true, 1280, 720, 50, 30000,
444 3000000, 3000000, false, "VP8", 4,
445 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700446 conf_motion_hd.analyzer = {"conference_motion_hd_4tl_moderate_limits", 0.0,
447 0.0, kFullStackTestDurationSecs};
448 conf_motion_hd.pipe.queue_length_packets = 50;
449 conf_motion_hd.pipe.loss_percent = 3;
450 conf_motion_hd.pipe.queue_delay_ms = 100;
451 conf_motion_hd.pipe.link_capacity_kbps = 2000;
452 RunTest(conf_motion_hd);
453}
454
455TEST_F(FullStackTest, ConferenceMotionHd3TLModerateLimitsAltTLPattern) {
456 test::ScopedFieldTrials field_trial("WebRTC-UseShortVP8TL3Pattern/Enabled/");
457 VideoQualityTest::Params conf_motion_hd;
458 conf_motion_hd.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100459 conf_motion_hd.video[0] = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000460 true, 1280, 720, 50, 30000,
461 3000000, 3000000, false, "VP8", 3,
462 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700463 conf_motion_hd.analyzer = {"conference_motion_hd_3tl_alt_moderate_limits",
464 0.0, 0.0, kFullStackTestDurationSecs};
465 conf_motion_hd.pipe.queue_length_packets = 50;
466 conf_motion_hd.pipe.loss_percent = 3;
467 conf_motion_hd.pipe.queue_delay_ms = 100;
468 conf_motion_hd.pipe.link_capacity_kbps = 2000;
469 RunTest(conf_motion_hd);
470}
471
jianj390e64d2017-02-03 09:51:23 -0800472#if !defined(RTC_DISABLE_VP9)
473TEST_F(FullStackTest, ConferenceMotionHd2000kbps100msLimitedQueueVP9) {
474 VideoQualityTest::Params conf_motion_hd;
475 conf_motion_hd.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100476 conf_motion_hd.video[0] = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000477 true, 1280, 720, 50, 30000,
478 3000000, 3000000, false, "VP9", 1,
479 0, 0, false, false, "ConferenceMotion_1280_720_50"};
jianj390e64d2017-02-03 09:51:23 -0800480 conf_motion_hd.analyzer = {
481 "conference_motion_hd_2000kbps_100ms_32pkts_queue_vp9", 0.0, 0.0,
482 kFullStackTestDurationSecs};
483 conf_motion_hd.pipe.queue_length_packets = 32;
484 conf_motion_hd.pipe.queue_delay_ms = 100;
485 conf_motion_hd.pipe.link_capacity_kbps = 2000;
486 RunTest(conf_motion_hd);
487}
488#endif
489
ivica7bd242e2015-10-06 02:04:06 -0700490TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL) {
minyue626bc952016-10-31 05:47:02 -0700491 VideoQualityTest::Params screenshare;
492 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100493 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
494 200000, 2000000, false, "VP8", 2,
495 1, 400000, false, false, ""};
496 screenshare.screenshare[0] = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700497 screenshare.analyzer = {"screenshare_slides", 0.0, 0.0,
498 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700499 RunTest(screenshare);
Erik Språng6ee69aa2015-09-03 15:58:05 +0200500}
501
ilnikcb8c1462017-03-09 09:23:30 -0800502TEST_F(FullStackTest, ScreenshareSlidesVP8_3TL_Simulcast) {
sprang89c4a7e2017-06-30 13:27:40 -0700503 test::ScopedFieldTrials field_trial(kScreenshareSimulcastExperiment);
ilnikcb8c1462017-03-09 09:23:30 -0800504 VideoQualityTest::Params screenshare;
505 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100506 screenshare.screenshare[0] = {true, false, 10};
507 screenshare.video[0] = {true, 1850, 1110, 5, 800000,
508 2500000, 2500000, false, "VP8", 3,
509 2, 400000, false, false, ""};
ilnikcb8c1462017-03-09 09:23:30 -0800510 screenshare.analyzer = {"screenshare_slides_simulcast", 0.0, 0.0,
511 kFullStackTestDurationSecs};
512 VideoQualityTest::Params screenshare_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100513 screenshare_params_high.video[0] = {true, 1850, 1110, 5, 800000,
514 2500000, 2500000, false, "VP8", 3,
515 0, 400000, false, false, ""};
ilnikcb8c1462017-03-09 09:23:30 -0800516 VideoQualityTest::Params screenshare_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100517 screenshare_params_low.video[0] = {true, 1850, 1110, 5, 50000,
518 200000, 2000000, false, "VP8", 2,
519 0, 400000, false, false, ""};
ilnikcb8c1462017-03-09 09:23:30 -0800520
521 std::vector<VideoStream> streams = {
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100522 DefaultVideoStream(screenshare_params_low, 0),
523 DefaultVideoStream(screenshare_params_high, 0)};
Sergey Silkin57027362018-05-15 09:12:05 +0200524 screenshare.ss[0] = {
525 streams, 1, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
526 false};
ilnikcb8c1462017-03-09 09:23:30 -0800527 RunTest(screenshare);
528}
529
ivica7bd242e2015-10-06 02:04:06 -0700530TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_Scroll) {
minyue626bc952016-10-31 05:47:02 -0700531 VideoQualityTest::Params config;
532 config.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100533 config.video[0] = {true, 1850, 1110 / 2, 5, 50000,
534 200000, 2000000, false, "VP8", 2,
535 1, 400000, false, false, ""};
536 config.screenshare[0] = {true, false, 10, 2};
minyue626bc952016-10-31 05:47:02 -0700537 config.analyzer = {"screenshare_slides_scrolling", 0.0, 0.0,
538 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700539 RunTest(config);
ivica028cf482015-07-30 02:15:56 -0700540}
541
sprangee37de32015-11-23 06:10:23 -0800542TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNet) {
minyue626bc952016-10-31 05:47:02 -0700543 VideoQualityTest::Params screenshare;
544 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100545 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
546 200000, 2000000, false, "VP8", 2,
547 1, 400000, false, false, ""};
548 screenshare.screenshare[0] = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700549 screenshare.analyzer = {"screenshare_slides_lossy_net", 0.0, 0.0,
550 kFullStackTestDurationSecs};
sprangee37de32015-11-23 06:10:23 -0800551 screenshare.pipe.loss_percent = 5;
552 screenshare.pipe.queue_delay_ms = 200;
553 screenshare.pipe.link_capacity_kbps = 500;
554 RunTest(screenshare);
555}
556
557TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_VeryLossyNet) {
minyue626bc952016-10-31 05:47:02 -0700558 VideoQualityTest::Params screenshare;
559 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100560 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
561 200000, 2000000, false, "VP8", 2,
562 1, 400000, false, false, ""};
563 screenshare.screenshare[0] = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700564 screenshare.analyzer = {"screenshare_slides_very_lossy", 0.0, 0.0,
565 kFullStackTestDurationSecs};
sprangee37de32015-11-23 06:10:23 -0800566 screenshare.pipe.loss_percent = 10;
567 screenshare.pipe.queue_delay_ms = 200;
568 screenshare.pipe.link_capacity_kbps = 500;
569 RunTest(screenshare);
570}
571
sprange566e172017-06-08 01:29:15 -0700572TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNetRestrictedQueue) {
573 VideoQualityTest::Params screenshare;
574 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100575 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
576 200000, 2000000, false, "VP8", 2,
577 1, 400000, false, false, ""};
578 screenshare.screenshare[0] = {true, false, 10};
sprange566e172017-06-08 01:29:15 -0700579 screenshare.analyzer = {"screenshare_slides_lossy_limited", 0.0, 0.0,
580 kFullStackTestDurationSecs};
581 screenshare.pipe.loss_percent = 5;
582 screenshare.pipe.link_capacity_kbps = 200;
583 screenshare.pipe.queue_length_packets = 30;
584
585 RunTest(screenshare);
586}
587
sprang89c4a7e2017-06-30 13:27:40 -0700588TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ModeratelyRestricted) {
589 VideoQualityTest::Params screenshare;
590 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100591 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
592 200000, 2000000, false, "VP8", 2,
593 1, 400000, false, false, ""};
594 screenshare.screenshare[0] = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700595 screenshare.analyzer = {"screenshare_slides_moderately_restricted", 0.0, 0.0,
596 kFullStackTestDurationSecs};
597 screenshare.pipe.loss_percent = 1;
598 screenshare.pipe.link_capacity_kbps = 1200;
599 screenshare.pipe.queue_length_packets = 30;
600
601 RunTest(screenshare);
602}
603
604// TODO(sprang): Retire these tests once experiment is removed.
605TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNetRestrictedQueue_ALR) {
606 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
607 VideoQualityTest::Params screenshare;
608 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100609 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
610 200000, 2000000, false, "VP8", 2,
611 1, 400000, false, false, ""};
612 screenshare.screenshare[0] = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700613 screenshare.analyzer = {"screenshare_slides_lossy_limited_ALR", 0.0, 0.0,
614 kFullStackTestDurationSecs};
615 screenshare.pipe.loss_percent = 5;
616 screenshare.pipe.link_capacity_kbps = 200;
617 screenshare.pipe.queue_length_packets = 30;
618
619 RunTest(screenshare);
620}
621
622TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ALR) {
623 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
624 VideoQualityTest::Params screenshare;
625 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100626 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
627 200000, 2000000, false, "VP8", 2,
628 1, 400000, false, false, ""};
629 screenshare.screenshare[0] = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700630 screenshare.analyzer = {"screenshare_slides_ALR", 0.0, 0.0,
631 kFullStackTestDurationSecs};
632 RunTest(screenshare);
633}
634
635TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ModeratelyRestricted_ALR) {
636 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
637 VideoQualityTest::Params screenshare;
638 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100639 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
640 200000, 2000000, false, "VP8", 2,
641 1, 400000, false, false, ""};
642 screenshare.screenshare[0] = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700643 screenshare.analyzer = {"screenshare_slides_moderately_restricted_ALR", 0.0,
644 0.0, kFullStackTestDurationSecs};
645 screenshare.pipe.loss_percent = 1;
646 screenshare.pipe.link_capacity_kbps = 1200;
647 screenshare.pipe.queue_length_packets = 30;
648
649 RunTest(screenshare);
650}
651
652TEST_F(FullStackTest, ScreenshareSlidesVP8_3TL_Simulcast_ALR) {
653 test::ScopedFieldTrials field_trial(kScreenshareSimulcastExperiment +
654 kAlrProbingExperiment);
655 VideoQualityTest::Params screenshare;
656 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100657 screenshare.screenshare[0] = {true, false, 10};
658 screenshare.video[0] = {true, 1850, 1110, 5, 800000,
659 2500000, 2500000, false, "VP8", 3,
660 2, 400000, false, false, ""};
sprang89c4a7e2017-06-30 13:27:40 -0700661 screenshare.analyzer = {"screenshare_slides_simulcast_alr", 0.0, 0.0,
662 kFullStackTestDurationSecs};
663 VideoQualityTest::Params screenshare_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100664 screenshare_params_high.video[0] = {true, 1850, 1110, 5, 800000,
665 2500000, 2500000, false, "VP8", 3,
666 0, 400000, false, false, ""};
sprang89c4a7e2017-06-30 13:27:40 -0700667 VideoQualityTest::Params screenshare_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100668 screenshare_params_low.video[0] = {true, 1850, 1110, 5, 50000,
669 200000, 2000000, false, "VP8", 2,
670 0, 400000, false, false, ""};
sprang89c4a7e2017-06-30 13:27:40 -0700671
672 std::vector<VideoStream> streams = {
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100673 DefaultVideoStream(screenshare_params_low, 0),
674 DefaultVideoStream(screenshare_params_high, 0)};
Sergey Silkin57027362018-05-15 09:12:05 +0200675 screenshare.ss[0] = {
676 streams, 1, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
677 false};
sprang89c4a7e2017-06-30 13:27:40 -0700678 RunTest(screenshare);
679}
680
ilnik566c43b2017-03-07 04:42:54 -0800681const VideoQualityTest::Params::Video kSvcVp9Video = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000682 true, 1280, 720, 30, 800000,
683 2500000, 2500000, false, "VP9", 3,
684 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800685
686const VideoQualityTest::Params::Video kSimulcastVp8VideoHigh = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000687 true, 1280, 720, 30, 800000,
688 2500000, 2500000, false, "VP8", 3,
689 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800690
691const VideoQualityTest::Params::Video kSimulcastVp8VideoMedium = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000692 true, 640, 360, 30, 150000,
693 500000, 700000, false, "VP8", 3,
694 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800695
696const VideoQualityTest::Params::Video kSimulcastVp8VideoLow = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000697 true, 320, 180, 30, 30000,
698 150000, 200000, false, "VP8", 3,
699 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800700
Peter Boström12996152016-05-14 02:03:18 +0200701#if !defined(RTC_DISABLE_VP9)
marpan5f4aaeb2017-04-06 10:52:23 -0700702TEST_F(FullStackTest, ScreenshareSlidesVP9_2SL) {
minyue626bc952016-10-31 05:47:02 -0700703 VideoQualityTest::Params screenshare;
704 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100705 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
706 200000, 2000000, false, "VP9", 1,
707 0, 400000, false, false, ""};
708 screenshare.screenshare[0] = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700709 screenshare.analyzer = {"screenshare_slides_vp9_2sl", 0.0, 0.0,
710 kFullStackTestDurationSecs};
Sergey Silkin57027362018-05-15 09:12:05 +0200711 screenshare.ss[0] = {
712 std::vector<VideoStream>(), 0, 2, 1, InterLayerPredMode::kOn,
713 std::vector<SpatialLayer>(), false};
ivica5d6a06c2015-09-17 05:30:24 -0700714 RunTest(screenshare);
sprang@webrtc.org131bea82015-02-18 12:46:06 +0000715}
ilnik2a8c2f52017-02-15 02:23:28 -0800716
717TEST_F(FullStackTest, VP9SVC_3SL_High) {
718 VideoQualityTest::Params simulcast;
719 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100720 simulcast.video[0] = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800721 simulcast.analyzer = {"vp9svc_3sl_high", 0.0, 0.0,
722 kFullStackTestDurationSecs};
Sergey Silkin57027362018-05-15 09:12:05 +0200723 simulcast.ss[0] = {
724 std::vector<VideoStream>(), 0, 3, 2, InterLayerPredMode::kOn,
725 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800726 RunTest(simulcast);
727}
728
729TEST_F(FullStackTest, VP9SVC_3SL_Medium) {
730 VideoQualityTest::Params simulcast;
731 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100732 simulcast.video[0] = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800733 simulcast.analyzer = {"vp9svc_3sl_medium", 0.0, 0.0,
734 kFullStackTestDurationSecs};
Sergey Silkin57027362018-05-15 09:12:05 +0200735 simulcast.ss[0] = {
736 std::vector<VideoStream>(), 0, 3, 1, InterLayerPredMode::kOn,
737 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800738 RunTest(simulcast);
739}
740
741TEST_F(FullStackTest, VP9SVC_3SL_Low) {
742 VideoQualityTest::Params simulcast;
743 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100744 simulcast.video[0] = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800745 simulcast.analyzer = {"vp9svc_3sl_low", 0.0, 0.0, kFullStackTestDurationSecs};
Sergey Silkin57027362018-05-15 09:12:05 +0200746 simulcast.ss[0] = {
747 std::vector<VideoStream>(), 0, 3, 0, InterLayerPredMode::kOn,
748 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800749 RunTest(simulcast);
750}
Peter Boström12996152016-05-14 02:03:18 +0200751#endif // !defined(RTC_DISABLE_VP9)
brandtr93c5d032016-11-30 07:50:07 -0800752
ilnik6b826ef2017-06-16 06:53:48 -0700753// Android bots can't handle FullHD, so disable the test.
Sam Zackrissonc3d8bb12018-05-02 10:22:32 +0200754// TODO(bugs.webrtc.org/9220): Investigate source of flakiness on Mac.
755#if defined(WEBRTC_ANDROID) || defined(WEBRTC_MAC)
ilnik6b826ef2017-06-16 06:53:48 -0700756#define MAYBE_SimulcastFullHdOveruse DISABLED_SimulcastFullHdOveruse
757#else
758#define MAYBE_SimulcastFullHdOveruse SimulcastFullHdOveruse
759#endif
760
761TEST_F(FullStackTest, MAYBE_SimulcastFullHdOveruse) {
762 VideoQualityTest::Params simulcast;
763 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100764 simulcast.video[0] = {true, 1920, 1080, 30, 800000,
765 2500000, 2500000, false, "VP8", 3,
766 2, 400000, false, false, "Generator"};
ilnik6b826ef2017-06-16 06:53:48 -0700767 simulcast.analyzer = {"simulcast_HD_high", 0.0, 0.0,
768 kFullStackTestDurationSecs};
769 simulcast.pipe.loss_percent = 0;
770 simulcast.pipe.queue_delay_ms = 100;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100771 std::vector<VideoStream> streams = {DefaultVideoStream(simulcast, 0),
772 DefaultVideoStream(simulcast, 0),
773 DefaultVideoStream(simulcast, 0)};
Sergey Silkin57027362018-05-15 09:12:05 +0200774 simulcast.ss[0] = {
775 streams, 2, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
776 true};
ilnik6b826ef2017-06-16 06:53:48 -0700777 webrtc::test::ScopedFieldTrials override_trials(
778 "WebRTC-ForceSimulatedOveruseIntervalMs/1000-50000-300/");
779 RunTest(simulcast);
780}
781
ilnik3dd5ad92017-02-09 04:58:53 -0800782TEST_F(FullStackTest, SimulcastVP8_3SL_High) {
783 VideoQualityTest::Params simulcast;
784 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100785 simulcast.video[0] = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800786 simulcast.analyzer = {"simulcast_vp8_3sl_high", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800787 kFullStackTestDurationSecs};
788 simulcast.pipe.loss_percent = 0;
789 simulcast.pipe.queue_delay_ms = 100;
790 VideoQualityTest::Params video_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100791 video_params_high.video[0] = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800792 VideoQualityTest::Params video_params_medium;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100793 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800794 VideoQualityTest::Params video_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100795 video_params_low.video[0] = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800796
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100797 std::vector<VideoStream> streams = {
798 DefaultVideoStream(video_params_low, 0),
799 DefaultVideoStream(video_params_medium, 0),
800 DefaultVideoStream(video_params_high, 0)};
Sergey Silkin57027362018-05-15 09:12:05 +0200801 simulcast.ss[0] = {
802 streams, 2, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
803 false};
ilnik3dd5ad92017-02-09 04:58:53 -0800804 RunTest(simulcast);
805}
806
807TEST_F(FullStackTest, SimulcastVP8_3SL_Medium) {
808 VideoQualityTest::Params simulcast;
809 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100810 simulcast.video[0] = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800811 simulcast.analyzer = {"simulcast_vp8_3sl_medium", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800812 kFullStackTestDurationSecs};
813 simulcast.pipe.loss_percent = 0;
814 simulcast.pipe.queue_delay_ms = 100;
815 VideoQualityTest::Params video_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100816 video_params_high.video[0] = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800817 VideoQualityTest::Params video_params_medium;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100818 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800819 VideoQualityTest::Params video_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100820 video_params_low.video[0] = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800821
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100822 std::vector<VideoStream> streams = {
823 DefaultVideoStream(video_params_low, 0),
824 DefaultVideoStream(video_params_medium, 0),
825 DefaultVideoStream(video_params_high, 0)};
Sergey Silkin57027362018-05-15 09:12:05 +0200826 simulcast.ss[0] = {
827 streams, 1, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
828 false};
ilnik3dd5ad92017-02-09 04:58:53 -0800829 RunTest(simulcast);
830}
831
832TEST_F(FullStackTest, SimulcastVP8_3SL_Low) {
833 VideoQualityTest::Params simulcast;
834 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100835 simulcast.video[0] = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800836 simulcast.analyzer = {"simulcast_vp8_3sl_low", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800837 kFullStackTestDurationSecs};
838 simulcast.pipe.loss_percent = 0;
839 simulcast.pipe.queue_delay_ms = 100;
840 VideoQualityTest::Params video_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100841 video_params_high.video[0] = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800842 VideoQualityTest::Params video_params_medium;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100843 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800844 VideoQualityTest::Params video_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100845 video_params_low.video[0] = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800846
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100847 std::vector<VideoStream> streams = {
848 DefaultVideoStream(video_params_low, 0),
849 DefaultVideoStream(video_params_medium, 0),
850 DefaultVideoStream(video_params_high, 0)};
Sergey Silkin57027362018-05-15 09:12:05 +0200851 simulcast.ss[0] = {
852 streams, 0, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
853 false};
ilnik3dd5ad92017-02-09 04:58:53 -0800854 RunTest(simulcast);
855}
856
ilnika014cc52017-03-07 04:21:04 -0800857TEST_F(FullStackTest, LargeRoomVP8_5thumb) {
858 VideoQualityTest::Params large_room;
859 large_room.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100860 large_room.video[0] = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800861 large_room.analyzer = {"largeroom_5thumb", 0.0, 0.0,
862 kFullStackTestDurationSecs};
863 large_room.pipe.loss_percent = 0;
864 large_room.pipe.queue_delay_ms = 100;
865 VideoQualityTest::Params video_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100866 video_params_high.video[0] = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800867 VideoQualityTest::Params video_params_medium;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100868 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800869 VideoQualityTest::Params video_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100870 video_params_low.video[0] = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800871
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100872 std::vector<VideoStream> streams = {
873 DefaultVideoStream(video_params_low, 0),
874 DefaultVideoStream(video_params_medium, 0),
875 DefaultVideoStream(video_params_high, 0)};
ilnik98436952017-07-13 00:47:03 -0700876 large_room.call.num_thumbnails = 5;
Sergey Silkin57027362018-05-15 09:12:05 +0200877 large_room.ss[0] = {
878 streams, 2, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
879 false};
ilnika014cc52017-03-07 04:21:04 -0800880 RunTest(large_room);
881}
882
oprypin743117f2017-09-15 05:24:24 -0700883#if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS)
884// Fails on mobile devices:
ilnikf89a7382017-03-07 06:15:27 -0800885// https://bugs.chromium.org/p/webrtc/issues/detail?id=7301
886#define MAYBE_LargeRoomVP8_50thumb DISABLED_LargeRoomVP8_50thumb
ilnik3ae7c252017-03-08 01:17:35 -0800887#define MAYBE_LargeRoomVP8_15thumb DISABLED_LargeRoomVP8_15thumb
ilnikf89a7382017-03-07 06:15:27 -0800888#else
889#define MAYBE_LargeRoomVP8_50thumb LargeRoomVP8_50thumb
ilnik3ae7c252017-03-08 01:17:35 -0800890#define MAYBE_LargeRoomVP8_15thumb LargeRoomVP8_15thumb
ilnikf89a7382017-03-07 06:15:27 -0800891#endif
892
893TEST_F(FullStackTest, MAYBE_LargeRoomVP8_15thumb) {
ilnika014cc52017-03-07 04:21:04 -0800894 VideoQualityTest::Params large_room;
895 large_room.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100896 large_room.video[0] = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800897 large_room.analyzer = {"largeroom_15thumb", 0.0, 0.0,
898 kFullStackTestDurationSecs};
899 large_room.pipe.loss_percent = 0;
900 large_room.pipe.queue_delay_ms = 100;
901 VideoQualityTest::Params video_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100902 video_params_high.video[0] = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800903 VideoQualityTest::Params video_params_medium;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100904 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800905 VideoQualityTest::Params video_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100906 video_params_low.video[0] = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800907
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100908 std::vector<VideoStream> streams = {
909 DefaultVideoStream(video_params_low, 0),
910 DefaultVideoStream(video_params_medium, 0),
911 DefaultVideoStream(video_params_high, 0)};
ilnik98436952017-07-13 00:47:03 -0700912 large_room.call.num_thumbnails = 15;
Sergey Silkin57027362018-05-15 09:12:05 +0200913 large_room.ss[0] = {
914 streams, 2, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
915 false};
ilnika014cc52017-03-07 04:21:04 -0800916 RunTest(large_room);
917}
918
ilnika014cc52017-03-07 04:21:04 -0800919TEST_F(FullStackTest, MAYBE_LargeRoomVP8_50thumb) {
920 VideoQualityTest::Params large_room;
921 large_room.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100922 large_room.video[0] = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800923 large_room.analyzer = {"largeroom_50thumb", 0.0, 0.0,
924 kFullStackTestDurationSecs};
925 large_room.pipe.loss_percent = 0;
926 large_room.pipe.queue_delay_ms = 100;
927 VideoQualityTest::Params video_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100928 video_params_high.video[0] = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800929 VideoQualityTest::Params video_params_medium;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100930 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800931 VideoQualityTest::Params video_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100932 video_params_low.video[0] = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800933
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100934 std::vector<VideoStream> streams = {
935 DefaultVideoStream(video_params_low, 0),
936 DefaultVideoStream(video_params_medium, 0),
937 DefaultVideoStream(video_params_high, 0)};
ilnik98436952017-07-13 00:47:03 -0700938 large_room.call.num_thumbnails = 50;
Sergey Silkin57027362018-05-15 09:12:05 +0200939 large_room.ss[0] = {
940 streams, 2, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
941 false};
ilnika014cc52017-03-07 04:21:04 -0800942 RunTest(large_room);
943}
944
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100945class DualStreamsTest : public FullStackTest,
946 public ::testing::WithParamInterface<int> {};
947
948// Disable dual video test on mobile device becuase it's too heavy.
949#if !defined(WEBRTC_ANDROID) && !defined(WEBRTC_IOS)
950TEST_P(DualStreamsTest,
951 ModeratelyRestricted_SlidesVp8_3TL_Simulcast_Video_Simulcast_High) {
952 test::ScopedFieldTrials field_trial(
953 kScreenshareSimulcastExperiment + kAlrProbingExperiment +
954 kRoundRobinPacingQueueExperiment + kPacerPushBackExperiment);
955 const int first_stream = GetParam();
956 VideoQualityTest::Params dual_streams;
957
958 // Screenshare Settings.
959 dual_streams.screenshare[first_stream] = {true, false, 10};
960 dual_streams.video[first_stream] = {true, 1850, 1110, 5, 800000,
961 2500000, 2500000, false, "VP8", 3,
962 2, 400000, false, false, ""};
963
964 VideoQualityTest::Params screenshare_params_high;
965 screenshare_params_high.video[0] = {true, 1850, 1110, 5, 800000,
966 2500000, 2500000, false, "VP8", 3,
967 0, 400000, false, false, ""};
968 VideoQualityTest::Params screenshare_params_low;
969 screenshare_params_low.video[0] = {true, 1850, 1110, 5, 50000,
970 200000, 2000000, false, "VP8", 2,
971 0, 400000, false, false, ""};
972 std::vector<VideoStream> screenhsare_streams = {
973 DefaultVideoStream(screenshare_params_low, 0),
974 DefaultVideoStream(screenshare_params_high, 0)};
975
Sergey Silkin57027362018-05-15 09:12:05 +0200976 dual_streams.ss[first_stream] = {
977 screenhsare_streams, 1, 1, 0, InterLayerPredMode::kOn,
978 std::vector<SpatialLayer>(), false};
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100979
980 // Video settings.
981 dual_streams.video[1 - first_stream] = kSimulcastVp8VideoHigh;
982
983 VideoQualityTest::Params video_params_high;
984 video_params_high.video[0] = kSimulcastVp8VideoHigh;
985 VideoQualityTest::Params video_params_medium;
986 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
987 VideoQualityTest::Params video_params_low;
988 video_params_low.video[0] = kSimulcastVp8VideoLow;
989 std::vector<VideoStream> streams = {
990 DefaultVideoStream(video_params_low, 0),
991 DefaultVideoStream(video_params_medium, 0),
992 DefaultVideoStream(video_params_high, 0)};
993
994 dual_streams.ss[1 - first_stream] = {
Sergey Silkin57027362018-05-15 09:12:05 +0200995 streams, 2, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
996 false};
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100997
998 // Call settings.
999 dual_streams.call.send_side_bwe = true;
1000 dual_streams.call.dual_video = true;
Edward Lemur35d2b7e2017-12-27 18:54:47 +01001001 std::string test_label = "dualstreams_moderately_restricted_screenshare_" +
1002 std::to_string(first_stream);
1003 dual_streams.analyzer = {test_label, 0.0, 0.0, kFullStackTestDurationSecs};
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +01001004 dual_streams.pipe.loss_percent = 1;
1005 dual_streams.pipe.link_capacity_kbps = 7500;
1006 dual_streams.pipe.queue_length_packets = 30;
1007 dual_streams.pipe.queue_delay_ms = 100;
1008
1009 RunTest(dual_streams);
1010}
1011#endif // !defined(WEBRTC_ANDROID) && !defined(WEBRTC_IOS)
1012
1013TEST_P(DualStreamsTest, Conference_Restricted) {
1014 test::ScopedFieldTrials field_trial(kRoundRobinPacingQueueExperiment +
1015 kPacerPushBackExperiment);
1016 const int first_stream = GetParam();
1017 VideoQualityTest::Params dual_streams;
1018
1019 // Screenshare Settings.
1020 dual_streams.screenshare[first_stream] = {true, false, 10};
1021 dual_streams.video[first_stream] = {true, 1850, 1110, 5, 800000,
1022 2500000, 2500000, false, "VP8", 3,
1023 2, 400000, false, false, ""};
1024 // Video settings.
1025 dual_streams.video[1 - first_stream] = {
1026 true, 1280, 720, 30, 150000,
1027 500000, 700000, false, "VP8", 3,
1028 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
1029
1030 // Call settings.
1031 dual_streams.call.send_side_bwe = true;
1032 dual_streams.call.dual_video = true;
Edward Lemur35d2b7e2017-12-27 18:54:47 +01001033 std::string test_label = "dualstreams_conference_restricted_screenshare_" +
1034 std::to_string(first_stream);
1035 dual_streams.analyzer = {test_label, 0.0, 0.0, kFullStackTestDurationSecs};
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +01001036 dual_streams.pipe.loss_percent = 1;
1037 dual_streams.pipe.link_capacity_kbps = 5000;
1038 dual_streams.pipe.queue_length_packets = 30;
1039 dual_streams.pipe.queue_delay_ms = 100;
1040
1041 RunTest(dual_streams);
1042}
1043
1044INSTANTIATE_TEST_CASE_P(FullStackTest,
1045 DualStreamsTest,
1046 ::testing::Values(0, 1));
ilnika014cc52017-03-07 04:21:04 -08001047
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +00001048} // namespace webrtc