blob: 61346a9e3fcf194a03ee675e46140d2a3004c2c8 [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"
Sebastian Janssonf8518882018-05-31 14:52:59 +020013#include "rtc_base/flags.h"
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020014#include "test/field_trial.h"
15#include "test/gtest.h"
16#include "video/video_quality_test.h"
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000017
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000018namespace webrtc {
Sebastian Janssonf8518882018-05-31 14:52:59 +020019namespace flags {
20
21DEFINE_bool(logs, false, "print logs to stderr");
22
23DEFINE_string(rtc_event_log_name,
24 "",
25 "Filename for rtc event log. Two files "
26 "with \"_send\" and \"_recv\" suffixes will be created.");
27std::string RtcEventLogName() {
28 return static_cast<std::string>(FLAG_rtc_event_log_name);
29}
30DEFINE_string(rtp_dump_name, "", "Filename for dumped received RTP stream.");
31std::string RtpDumpName() {
32 return static_cast<std::string>(FLAG_rtp_dump_name);
33}
34DEFINE_string(encoded_frame_path,
35 "",
36 "The base path for encoded frame logs. Created files will have "
37 "the form <encoded_frame_path>.<n>.(recv|send.<m>).ivf");
38std::string EncodedFramePath() {
39 return static_cast<std::string>(FLAG_encoded_frame_path);
40}
41} // namespace flags
42} // namespace webrtc
43
44namespace webrtc {
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000045
sprang89c4a7e2017-06-30 13:27:40 -070046namespace {
brandtrdd369c62016-11-16 23:56:57 -080047static const int kFullStackTestDurationSecs = 45;
sprang89c4a7e2017-06-30 13:27:40 -070048} // namespace
pbos@webrtc.orgb613b5a2013-12-03 10:13:04 +000049
ivica5d6a06c2015-09-17 05:30:24 -070050class FullStackTest : public VideoQualityTest {
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000051 public:
Sebastian Janssonf8518882018-05-31 14:52:59 +020052 void RunTest(VideoQualityTest::Params params) {
53 params.logging = {flags::FLAG_logs, flags::RtcEventLogName(),
54 flags::RtpDumpName(), flags::EncodedFramePath()};
ivica5d6a06c2015-09-17 05:30:24 -070055 RunWithAnalyzer(params);
pbos@webrtc.org94015242013-10-16 11:05:37 +000056 }
sprang89c4a7e2017-06-30 13:27:40 -070057
58 protected:
59 const std::string kScreenshareSimulcastExperiment =
60 "WebRTC-SimulcastScreenshare/Enabled/";
61 const std::string kAlrProbingExperiment =
Sebastian Janssoncabe3832018-01-12 10:54:18 +010062 std::string(AlrExperimentSettings::kScreenshareProbingBweExperimentName) +
ilnik2ae19db2017-08-31 04:46:45 -070063 "/1.1,2875,85,20,-20,0/";
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +010064 const std::string kRoundRobinPacingQueueExperiment =
65 "WebRTC-RoundRobinPacing/Enabled/";
66 const std::string kPacerPushBackExperiment =
67 "WebRTC-PacerPushbackExperiment/Enabled/";
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000068};
69
sprangce4aef12015-11-02 07:23:20 -080070// VideoQualityTest::Params params = {
71// { ... }, // Common.
72// { ... }, // Video-specific settings.
73// { ... }, // Screenshare-specific settings.
74// { ... }, // Analyzer settings.
75// pipe, // FakeNetworkPipe::Config
76// { ... }, // Spatial scalability.
77// logs // bool
78// };
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000079
Peter Boström12996152016-05-14 02:03:18 +020080#if !defined(RTC_DISABLE_VP9)
asapersson88b0a222016-02-12 13:16:43 -080081TEST_F(FullStackTest, ForemanCifWithoutPacketLossVp9) {
brandtr93c5d032016-11-30 07:50:07 -080082 // TODO(pbos): Decide on psnr/ssim thresholds for foreman_cif.
83 VideoQualityTest::Params foreman_cif;
84 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +010085 foreman_cif.video[0] = {true, 352, 288, 30, 700000,
86 700000, 700000, false, "VP9", 1,
87 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -080088 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0_VP9", 0.0, 0.0,
89 kFullStackTestDurationSecs};
90 RunTest(foreman_cif);
asapersson88b0a222016-02-12 13:16:43 -080091}
92
93TEST_F(FullStackTest, ForemanCifPlr5Vp9) {
brandtr93c5d032016-11-30 07:50:07 -080094 VideoQualityTest::Params foreman_cif;
95 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +010096 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
97 500000, 2000000, false, "VP9", 1,
98 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -080099 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_VP9", 0.0, 0.0,
100 kFullStackTestDurationSecs};
101 foreman_cif.pipe.loss_percent = 5;
102 foreman_cif.pipe.queue_delay_ms = 50;
103 RunTest(foreman_cif);
asapersson88b0a222016-02-12 13:16:43 -0800104}
Emircan Uysaler03e6ec92018-03-09 15:03:26 -0800105
106TEST_F(FullStackTest, ForemanCifWithoutPacketLossMultiplexI420Frame) {
107 VideoQualityTest::Params foreman_cif;
108 foreman_cif.call.send_side_bwe = true;
109 foreman_cif.video[0] = {true, 352, 288, 30, 700000,
110 700000, 700000, false, "multiplex", 1,
111 0, 0, false, false, "foreman_cif"};
112 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0_Multiplex", 0.0, 0.0,
113 kFullStackTestDurationSecs};
114 RunTest(foreman_cif);
115}
116
Emircan Uysalerf1ff3bd2018-03-12 11:53:21 -0700117TEST_F(FullStackTest, GeneratorWithoutPacketLossMultiplexI420AFrame) {
118 VideoQualityTest::Params generator;
119 generator.call.send_side_bwe = true;
120 generator.video[0] = {true, 352, 288, 30, 700000,
121 700000, 700000, false, "multiplex", 1,
122 0, 0, false, false, "GeneratorI420A"};
123 generator.analyzer = {"generator_net_delay_0_0_plr_0_Multiplex", 0.0, 0.0,
124 kFullStackTestDurationSecs};
125 RunTest(generator);
Emircan Uysaler03e6ec92018-03-09 15:03:26 -0800126}
127
Peter Boström12996152016-05-14 02:03:18 +0200128#endif // !defined(RTC_DISABLE_VP9)
asapersson88b0a222016-02-12 13:16:43 -0800129
Patrik Höglund11bf2fa2018-04-09 12:20:50 +0200130#if defined(WEBRTC_LINUX)
131// Crashes on the linux trusty perf bot: bugs.webrtc.org/9129.
132#define MAYBE_ParisQcifWithoutPacketLoss DISABLED_ParisQcifWithoutPacketLoss
133#else
134#define MAYBE_ParisQcifWithoutPacketLoss ParisQcifWithoutPacketLoss
135#endif
136TEST_F(FullStackTest, MAYBE_ParisQcifWithoutPacketLoss) {
minyue626bc952016-10-31 05:47:02 -0700137 VideoQualityTest::Params paris_qcif;
138 paris_qcif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100139 paris_qcif.video[0] = {true, 176, 144, 30, 300000,
140 300000, 300000, false, "VP8", 1,
141 0, 0, false, false, "paris_qcif"};
minyue626bc952016-10-31 05:47:02 -0700142 paris_qcif.analyzer = {"net_delay_0_0_plr_0", 36.0, 0.96,
143 kFullStackTestDurationSecs};
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000144 RunTest(paris_qcif);
pbos@webrtc.org994d0b72014-06-27 08:47:52 +0000145}
146
147TEST_F(FullStackTest, ForemanCifWithoutPacketLoss) {
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000148 // TODO(pbos): Decide on psnr/ssim thresholds for foreman_cif.
minyue626bc952016-10-31 05:47:02 -0700149 VideoQualityTest::Params foreman_cif;
150 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100151 foreman_cif.video[0] = {true, 352, 288, 30, 700000,
152 700000, 700000, false, "VP8", 1,
153 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700154 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0", 0.0, 0.0,
155 kFullStackTestDurationSecs};
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000156 RunTest(foreman_cif);
pbos@webrtc.org994d0b72014-06-27 08:47:52 +0000157}
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +0000158
asaperssonfb6ad3b2016-12-16 06:54:01 -0800159TEST_F(FullStackTest, ForemanCif30kbpsWithoutPacketLoss) {
160 VideoQualityTest::Params foreman_cif;
161 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100162 foreman_cif.video[0] = {true, 352, 288, 10, 30000,
163 30000, 30000, false, "VP8", 1,
164 0, 0, false, false, "foreman_cif"};
asaperssonfb6ad3b2016-12-16 06:54:01 -0800165 foreman_cif.analyzer = {"foreman_cif_30kbps_net_delay_0_0_plr_0", 0.0, 0.0,
166 kFullStackTestDurationSecs};
167 RunTest(foreman_cif);
168}
169
sprang@webrtc.org343096a2015-02-23 08:34:17 +0000170TEST_F(FullStackTest, ForemanCifPlr5) {
minyue626bc952016-10-31 05:47:02 -0700171 VideoQualityTest::Params foreman_cif;
172 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100173 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
174 500000, 2000000, false, "VP8", 1,
175 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700176 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5", 0.0, 0.0,
177 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700178 foreman_cif.pipe.loss_percent = 5;
179 foreman_cif.pipe.queue_delay_ms = 50;
stefan@webrtc.orgc216b9a2014-10-14 10:38:49 +0000180 RunTest(foreman_cif);
181}
182
brandtr93c5d032016-11-30 07:50:07 -0800183TEST_F(FullStackTest, ForemanCifPlr5Ulpfec) {
184 VideoQualityTest::Params foreman_cif;
185 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100186 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
187 500000, 2000000, false, "VP8", 1,
188 0, 0, true, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800189 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_ulpfec", 0.0, 0.0,
190 kFullStackTestDurationSecs};
191 foreman_cif.pipe.loss_percent = 5;
192 foreman_cif.pipe.queue_delay_ms = 50;
193 RunTest(foreman_cif);
194}
195
196TEST_F(FullStackTest, ForemanCifPlr5Flexfec) {
197 VideoQualityTest::Params foreman_cif;
198 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100199 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
200 500000, 2000000, false, "VP8", 1,
201 0, 0, false, true, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800202 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_flexfec", 0.0, 0.0,
203 kFullStackTestDurationSecs};
204 foreman_cif.pipe.loss_percent = 5;
205 foreman_cif.pipe.queue_delay_ms = 50;
206 RunTest(foreman_cif);
207}
208
stefan889d9652017-07-05 03:03:02 -0700209TEST_F(FullStackTest, ForemanCif500kbpsPlr3Flexfec) {
210 VideoQualityTest::Params foreman_cif;
211 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100212 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
213 500000, 2000000, false, "VP8", 1,
214 0, 0, false, true, "foreman_cif"};
stefan889d9652017-07-05 03:03:02 -0700215 foreman_cif.analyzer = {"foreman_cif_500kbps_delay_50_0_plr_3_flexfec", 0.0,
216 0.0, kFullStackTestDurationSecs};
217 foreman_cif.pipe.loss_percent = 3;
218 foreman_cif.pipe.link_capacity_kbps = 500;
219 foreman_cif.pipe.queue_delay_ms = 50;
220 RunTest(foreman_cif);
221}
222
223TEST_F(FullStackTest, ForemanCif500kbpsPlr3Ulpfec) {
224 VideoQualityTest::Params foreman_cif;
225 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100226 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
227 500000, 2000000, false, "VP8", 1,
228 0, 0, true, false, "foreman_cif"};
stefan889d9652017-07-05 03:03:02 -0700229 foreman_cif.analyzer = {"foreman_cif_500kbps_delay_50_0_plr_3_ulpfec", 0.0,
230 0.0, kFullStackTestDurationSecs};
231 foreman_cif.pipe.loss_percent = 3;
232 foreman_cif.pipe.link_capacity_kbps = 500;
233 foreman_cif.pipe.queue_delay_ms = 50;
234 RunTest(foreman_cif);
235}
236
brandtrdd369c62016-11-16 23:56:57 -0800237#if defined(WEBRTC_USE_H264)
238TEST_F(FullStackTest, ForemanCifWithoutPacketlossH264) {
brandtr93c5d032016-11-30 07:50:07 -0800239 // TODO(pbos): Decide on psnr/ssim thresholds for foreman_cif.
240 VideoQualityTest::Params foreman_cif;
241 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100242 foreman_cif.video[0] = {true, 352, 288, 30, 700000,
243 700000, 700000, false, "H264", 1,
244 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800245 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0_H264", 0.0, 0.0,
246 kFullStackTestDurationSecs};
247 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800248}
249
asaperssonfb6ad3b2016-12-16 06:54:01 -0800250TEST_F(FullStackTest, ForemanCif30kbpsWithoutPacketlossH264) {
251 VideoQualityTest::Params foreman_cif;
252 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100253 foreman_cif.video[0] = {true, 352, 288, 10, 30000,
254 30000, 30000, false, "H264", 1,
255 0, 0, false, false, "foreman_cif"};
asaperssonfb6ad3b2016-12-16 06:54:01 -0800256 foreman_cif.analyzer = {"foreman_cif_30kbps_net_delay_0_0_plr_0_H264", 0.0,
257 0.0, kFullStackTestDurationSecs};
258 RunTest(foreman_cif);
259}
260
brandtrdd369c62016-11-16 23:56:57 -0800261TEST_F(FullStackTest, ForemanCifPlr5H264) {
brandtr93c5d032016-11-30 07:50:07 -0800262 VideoQualityTest::Params foreman_cif;
263 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100264 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
265 500000, 2000000, false, "H264", 1,
266 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800267 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264", 0.0, 0.0,
268 kFullStackTestDurationSecs};
269 foreman_cif.pipe.loss_percent = 5;
270 foreman_cif.pipe.queue_delay_ms = 50;
271 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800272}
273
Rasmus Brandt88f080a2017-11-02 14:28:06 +0100274TEST_F(FullStackTest, ForemanCifPlr5H264SpsPpsIdrIsKeyframe) {
275 test::ScopedFieldTrials override_field_trials(
276 "WebRTC-SpsPpsIdrIsH264Keyframe/Enabled/");
277
278 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, false, false, "foreman_cif"};
Rasmus Brandt88f080a2017-11-02 14:28:06 +0100283 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264_sps_pps_idr", 0.0,
284 0.0, kFullStackTestDurationSecs};
285 foreman_cif.pipe.loss_percent = 5;
286 foreman_cif.pipe.queue_delay_ms = 50;
287 RunTest(foreman_cif);
288}
289
brandtrdd369c62016-11-16 23:56:57 -0800290// Verify that this is worth the bot time, before enabling.
291TEST_F(FullStackTest, ForemanCifPlr5H264Flexfec) {
brandtr93c5d032016-11-30 07:50:07 -0800292 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, "H264", 1,
296 0, 0, false, true, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800297 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264_flexfec", 0.0, 0.0,
298 kFullStackTestDurationSecs};
299 foreman_cif.pipe.loss_percent = 5;
300 foreman_cif.pipe.queue_delay_ms = 50;
301 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800302}
303
304// Ulpfec with H264 is an unsupported combination, so this test is only useful
305// for debugging. It is therefore disabled by default.
306TEST_F(FullStackTest, DISABLED_ForemanCifPlr5H264Ulpfec) {
brandtr93c5d032016-11-30 07:50:07 -0800307 VideoQualityTest::Params foreman_cif;
308 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100309 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
310 500000, 2000000, false, "H264", 1,
311 0, 0, true, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800312 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264_ulpfec", 0.0, 0.0,
313 kFullStackTestDurationSecs};
314 foreman_cif.pipe.loss_percent = 5;
315 foreman_cif.pipe.queue_delay_ms = 50;
316 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800317}
318#endif // defined(WEBRTC_USE_H264)
319
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000320TEST_F(FullStackTest, ForemanCif500kbps) {
minyue626bc952016-10-31 05:47:02 -0700321 VideoQualityTest::Params foreman_cif;
322 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100323 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
324 500000, 2000000, false, "VP8", 1,
325 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700326 foreman_cif.analyzer = {"foreman_cif_500kbps", 0.0, 0.0,
327 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700328 foreman_cif.pipe.queue_length_packets = 0;
329 foreman_cif.pipe.queue_delay_ms = 0;
330 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000331 RunTest(foreman_cif);
332}
333
334TEST_F(FullStackTest, ForemanCif500kbpsLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700335 VideoQualityTest::Params foreman_cif;
336 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100337 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
338 500000, 2000000, false, "VP8", 1,
339 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700340 foreman_cif.analyzer = {"foreman_cif_500kbps_32pkts_queue", 0.0, 0.0,
341 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700342 foreman_cif.pipe.queue_length_packets = 32;
343 foreman_cif.pipe.queue_delay_ms = 0;
344 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000345 RunTest(foreman_cif);
346}
347
348TEST_F(FullStackTest, ForemanCif500kbps100ms) {
minyue626bc952016-10-31 05:47:02 -0700349 VideoQualityTest::Params foreman_cif;
350 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100351 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
352 500000, 2000000, false, "VP8", 1,
353 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700354 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms", 0.0, 0.0,
355 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700356 foreman_cif.pipe.queue_length_packets = 0;
357 foreman_cif.pipe.queue_delay_ms = 100;
358 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000359 RunTest(foreman_cif);
360}
361
362TEST_F(FullStackTest, ForemanCif500kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700363 VideoQualityTest::Params foreman_cif;
364 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100365 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
366 500000, 2000000, false, "VP8", 1,
367 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700368 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms_32pkts_queue", 0.0, 0.0,
369 kFullStackTestDurationSecs};
stefanb1797672016-08-11 07:00:57 -0700370 foreman_cif.pipe.queue_length_packets = 32;
371 foreman_cif.pipe.queue_delay_ms = 100;
372 foreman_cif.pipe.link_capacity_kbps = 500;
373 RunTest(foreman_cif);
374}
375
376TEST_F(FullStackTest, ForemanCif500kbps100msLimitedQueueRecvBwe) {
minyue626bc952016-10-31 05:47:02 -0700377 VideoQualityTest::Params foreman_cif;
brandtr93c5d032016-11-30 07:50:07 -0800378 foreman_cif.call.send_side_bwe = false;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100379 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
380 500000, 2000000, false, "VP8", 1,
381 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800382 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms_32pkts_queue_recv_bwe",
383 0.0, 0.0, kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700384 foreman_cif.pipe.queue_length_packets = 32;
385 foreman_cif.pipe.queue_delay_ms = 100;
386 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000387 RunTest(foreman_cif);
388}
389
390TEST_F(FullStackTest, ForemanCif1000kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700391 VideoQualityTest::Params foreman_cif;
392 foreman_cif.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100393 foreman_cif.video[0] = {true, 352, 288, 30, 30000,
394 2000000, 2000000, false, "VP8", 1,
395 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700396 foreman_cif.analyzer = {"foreman_cif_1000kbps_100ms_32pkts_queue", 0.0, 0.0,
397 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700398 foreman_cif.pipe.queue_length_packets = 32;
399 foreman_cif.pipe.queue_delay_ms = 100;
400 foreman_cif.pipe.link_capacity_kbps = 1000;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000401 RunTest(foreman_cif);
402}
sprang@webrtc.org131bea82015-02-18 12:46:06 +0000403
sprangff19d352017-09-06 07:14:02 -0700404// TODO(sprang): Remove this if we have the similar ModerateLimits below?
stefanb1797672016-08-11 07:00:57 -0700405TEST_F(FullStackTest, ConferenceMotionHd2000kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700406 VideoQualityTest::Params conf_motion_hd;
407 conf_motion_hd.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100408 conf_motion_hd.video[0] = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000409 true, 1280, 720, 50, 30000,
410 3000000, 3000000, false, "VP8", 1,
411 0, 0, false, false, "ConferenceMotion_1280_720_50"};
minyue626bc952016-10-31 05:47:02 -0700412 conf_motion_hd.analyzer = {"conference_motion_hd_2000kbps_100ms_32pkts_queue",
413 0.0, 0.0, kFullStackTestDurationSecs};
stefanb1797672016-08-11 07:00:57 -0700414 conf_motion_hd.pipe.queue_length_packets = 32;
415 conf_motion_hd.pipe.queue_delay_ms = 100;
416 conf_motion_hd.pipe.link_capacity_kbps = 2000;
417 RunTest(conf_motion_hd);
418}
419
sprangff19d352017-09-06 07:14:02 -0700420TEST_F(FullStackTest, ConferenceMotionHd1TLModerateLimits) {
421 VideoQualityTest::Params conf_motion_hd;
422 conf_motion_hd.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100423 conf_motion_hd.video[0] = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000424 true, 1280, 720, 50, 30000,
425 3000000, 3000000, false, "VP8", 1,
426 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700427 conf_motion_hd.analyzer = {"conference_motion_hd_1tl_moderate_limits", 0.0,
428 0.0, kFullStackTestDurationSecs};
429 conf_motion_hd.pipe.queue_length_packets = 50;
430 conf_motion_hd.pipe.loss_percent = 3;
431 conf_motion_hd.pipe.queue_delay_ms = 100;
432 conf_motion_hd.pipe.link_capacity_kbps = 2000;
433 RunTest(conf_motion_hd);
434}
435
436TEST_F(FullStackTest, ConferenceMotionHd2TLModerateLimits) {
437 VideoQualityTest::Params conf_motion_hd;
438 conf_motion_hd.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100439 conf_motion_hd.video[0] = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000440 true, 1280, 720, 50, 30000,
441 3000000, 3000000, false, "VP8", 2,
442 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700443 conf_motion_hd.analyzer = {"conference_motion_hd_2tl_moderate_limits", 0.0,
444 0.0, kFullStackTestDurationSecs};
445 conf_motion_hd.pipe.queue_length_packets = 50;
446 conf_motion_hd.pipe.loss_percent = 3;
447 conf_motion_hd.pipe.queue_delay_ms = 100;
448 conf_motion_hd.pipe.link_capacity_kbps = 2000;
449 RunTest(conf_motion_hd);
450}
451
452TEST_F(FullStackTest, ConferenceMotionHd3TLModerateLimits) {
453 VideoQualityTest::Params conf_motion_hd;
454 conf_motion_hd.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100455 conf_motion_hd.video[0] = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000456 true, 1280, 720, 50, 30000,
457 3000000, 3000000, false, "VP8", 3,
458 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700459 conf_motion_hd.analyzer = {"conference_motion_hd_3tl_moderate_limits", 0.0,
460 0.0, kFullStackTestDurationSecs};
461 conf_motion_hd.pipe.queue_length_packets = 50;
462 conf_motion_hd.pipe.loss_percent = 3;
463 conf_motion_hd.pipe.queue_delay_ms = 100;
464 conf_motion_hd.pipe.link_capacity_kbps = 2000;
465 RunTest(conf_motion_hd);
466}
467
468TEST_F(FullStackTest, ConferenceMotionHd4TLModerateLimits) {
469 VideoQualityTest::Params conf_motion_hd;
470 conf_motion_hd.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100471 conf_motion_hd.video[0] = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000472 true, 1280, 720, 50, 30000,
473 3000000, 3000000, false, "VP8", 4,
474 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700475 conf_motion_hd.analyzer = {"conference_motion_hd_4tl_moderate_limits", 0.0,
476 0.0, kFullStackTestDurationSecs};
477 conf_motion_hd.pipe.queue_length_packets = 50;
478 conf_motion_hd.pipe.loss_percent = 3;
479 conf_motion_hd.pipe.queue_delay_ms = 100;
480 conf_motion_hd.pipe.link_capacity_kbps = 2000;
481 RunTest(conf_motion_hd);
482}
483
484TEST_F(FullStackTest, ConferenceMotionHd3TLModerateLimitsAltTLPattern) {
485 test::ScopedFieldTrials field_trial("WebRTC-UseShortVP8TL3Pattern/Enabled/");
486 VideoQualityTest::Params conf_motion_hd;
487 conf_motion_hd.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100488 conf_motion_hd.video[0] = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000489 true, 1280, 720, 50, 30000,
490 3000000, 3000000, false, "VP8", 3,
491 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700492 conf_motion_hd.analyzer = {"conference_motion_hd_3tl_alt_moderate_limits",
493 0.0, 0.0, kFullStackTestDurationSecs};
494 conf_motion_hd.pipe.queue_length_packets = 50;
495 conf_motion_hd.pipe.loss_percent = 3;
496 conf_motion_hd.pipe.queue_delay_ms = 100;
497 conf_motion_hd.pipe.link_capacity_kbps = 2000;
498 RunTest(conf_motion_hd);
499}
500
jianj390e64d2017-02-03 09:51:23 -0800501#if !defined(RTC_DISABLE_VP9)
502TEST_F(FullStackTest, ConferenceMotionHd2000kbps100msLimitedQueueVP9) {
503 VideoQualityTest::Params conf_motion_hd;
504 conf_motion_hd.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100505 conf_motion_hd.video[0] = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000506 true, 1280, 720, 50, 30000,
507 3000000, 3000000, false, "VP9", 1,
508 0, 0, false, false, "ConferenceMotion_1280_720_50"};
jianj390e64d2017-02-03 09:51:23 -0800509 conf_motion_hd.analyzer = {
510 "conference_motion_hd_2000kbps_100ms_32pkts_queue_vp9", 0.0, 0.0,
511 kFullStackTestDurationSecs};
512 conf_motion_hd.pipe.queue_length_packets = 32;
513 conf_motion_hd.pipe.queue_delay_ms = 100;
514 conf_motion_hd.pipe.link_capacity_kbps = 2000;
515 RunTest(conf_motion_hd);
516}
517#endif
518
ivica7bd242e2015-10-06 02:04:06 -0700519TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL) {
minyue626bc952016-10-31 05:47:02 -0700520 VideoQualityTest::Params screenshare;
521 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100522 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
523 200000, 2000000, false, "VP8", 2,
524 1, 400000, false, false, ""};
525 screenshare.screenshare[0] = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700526 screenshare.analyzer = {"screenshare_slides", 0.0, 0.0,
527 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700528 RunTest(screenshare);
Erik SprĂ¥ng6ee69aa2015-09-03 15:58:05 +0200529}
530
ilnikcb8c1462017-03-09 09:23:30 -0800531TEST_F(FullStackTest, ScreenshareSlidesVP8_3TL_Simulcast) {
sprang89c4a7e2017-06-30 13:27:40 -0700532 test::ScopedFieldTrials field_trial(kScreenshareSimulcastExperiment);
ilnikcb8c1462017-03-09 09:23:30 -0800533 VideoQualityTest::Params screenshare;
534 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100535 screenshare.screenshare[0] = {true, false, 10};
536 screenshare.video[0] = {true, 1850, 1110, 5, 800000,
537 2500000, 2500000, false, "VP8", 3,
538 2, 400000, false, false, ""};
ilnikcb8c1462017-03-09 09:23:30 -0800539 screenshare.analyzer = {"screenshare_slides_simulcast", 0.0, 0.0,
540 kFullStackTestDurationSecs};
541 VideoQualityTest::Params screenshare_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100542 screenshare_params_high.video[0] = {true, 1850, 1110, 5, 800000,
543 2500000, 2500000, false, "VP8", 3,
544 0, 400000, false, false, ""};
ilnikcb8c1462017-03-09 09:23:30 -0800545 VideoQualityTest::Params screenshare_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100546 screenshare_params_low.video[0] = {true, 1850, 1110, 5, 50000,
547 200000, 2000000, false, "VP8", 2,
548 0, 400000, false, false, ""};
ilnikcb8c1462017-03-09 09:23:30 -0800549
550 std::vector<VideoStream> streams = {
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100551 DefaultVideoStream(screenshare_params_low, 0),
552 DefaultVideoStream(screenshare_params_high, 0)};
Sergey Silkin57027362018-05-15 09:12:05 +0200553 screenshare.ss[0] = {
554 streams, 1, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
555 false};
ilnikcb8c1462017-03-09 09:23:30 -0800556 RunTest(screenshare);
557}
558
ivica7bd242e2015-10-06 02:04:06 -0700559TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_Scroll) {
minyue626bc952016-10-31 05:47:02 -0700560 VideoQualityTest::Params config;
561 config.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100562 config.video[0] = {true, 1850, 1110 / 2, 5, 50000,
563 200000, 2000000, false, "VP8", 2,
564 1, 400000, false, false, ""};
565 config.screenshare[0] = {true, false, 10, 2};
minyue626bc952016-10-31 05:47:02 -0700566 config.analyzer = {"screenshare_slides_scrolling", 0.0, 0.0,
567 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700568 RunTest(config);
ivica028cf482015-07-30 02:15:56 -0700569}
570
sprangee37de32015-11-23 06:10:23 -0800571TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNet) {
minyue626bc952016-10-31 05:47:02 -0700572 VideoQualityTest::Params screenshare;
573 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100574 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
575 200000, 2000000, false, "VP8", 2,
576 1, 400000, false, false, ""};
577 screenshare.screenshare[0] = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700578 screenshare.analyzer = {"screenshare_slides_lossy_net", 0.0, 0.0,
579 kFullStackTestDurationSecs};
sprangee37de32015-11-23 06:10:23 -0800580 screenshare.pipe.loss_percent = 5;
581 screenshare.pipe.queue_delay_ms = 200;
582 screenshare.pipe.link_capacity_kbps = 500;
583 RunTest(screenshare);
584}
585
586TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_VeryLossyNet) {
minyue626bc952016-10-31 05:47:02 -0700587 VideoQualityTest::Params screenshare;
588 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100589 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
590 200000, 2000000, false, "VP8", 2,
591 1, 400000, false, false, ""};
592 screenshare.screenshare[0] = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700593 screenshare.analyzer = {"screenshare_slides_very_lossy", 0.0, 0.0,
594 kFullStackTestDurationSecs};
sprangee37de32015-11-23 06:10:23 -0800595 screenshare.pipe.loss_percent = 10;
596 screenshare.pipe.queue_delay_ms = 200;
597 screenshare.pipe.link_capacity_kbps = 500;
598 RunTest(screenshare);
599}
600
sprange566e172017-06-08 01:29:15 -0700601TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNetRestrictedQueue) {
602 VideoQualityTest::Params screenshare;
603 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100604 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
605 200000, 2000000, false, "VP8", 2,
606 1, 400000, false, false, ""};
607 screenshare.screenshare[0] = {true, false, 10};
sprange566e172017-06-08 01:29:15 -0700608 screenshare.analyzer = {"screenshare_slides_lossy_limited", 0.0, 0.0,
609 kFullStackTestDurationSecs};
610 screenshare.pipe.loss_percent = 5;
611 screenshare.pipe.link_capacity_kbps = 200;
612 screenshare.pipe.queue_length_packets = 30;
613
614 RunTest(screenshare);
615}
616
sprang89c4a7e2017-06-30 13:27:40 -0700617TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ModeratelyRestricted) {
618 VideoQualityTest::Params screenshare;
619 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100620 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
621 200000, 2000000, false, "VP8", 2,
622 1, 400000, false, false, ""};
623 screenshare.screenshare[0] = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700624 screenshare.analyzer = {"screenshare_slides_moderately_restricted", 0.0, 0.0,
625 kFullStackTestDurationSecs};
626 screenshare.pipe.loss_percent = 1;
627 screenshare.pipe.link_capacity_kbps = 1200;
628 screenshare.pipe.queue_length_packets = 30;
629
630 RunTest(screenshare);
631}
632
633// TODO(sprang): Retire these tests once experiment is removed.
634TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNetRestrictedQueue_ALR) {
635 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
636 VideoQualityTest::Params screenshare;
637 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100638 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
639 200000, 2000000, false, "VP8", 2,
640 1, 400000, false, false, ""};
641 screenshare.screenshare[0] = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700642 screenshare.analyzer = {"screenshare_slides_lossy_limited_ALR", 0.0, 0.0,
643 kFullStackTestDurationSecs};
644 screenshare.pipe.loss_percent = 5;
645 screenshare.pipe.link_capacity_kbps = 200;
646 screenshare.pipe.queue_length_packets = 30;
647
648 RunTest(screenshare);
649}
650
651TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ALR) {
652 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
653 VideoQualityTest::Params screenshare;
654 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100655 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
656 200000, 2000000, false, "VP8", 2,
657 1, 400000, false, false, ""};
658 screenshare.screenshare[0] = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700659 screenshare.analyzer = {"screenshare_slides_ALR", 0.0, 0.0,
660 kFullStackTestDurationSecs};
661 RunTest(screenshare);
662}
663
664TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ModeratelyRestricted_ALR) {
665 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
666 VideoQualityTest::Params screenshare;
667 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100668 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
669 200000, 2000000, false, "VP8", 2,
670 1, 400000, false, false, ""};
671 screenshare.screenshare[0] = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700672 screenshare.analyzer = {"screenshare_slides_moderately_restricted_ALR", 0.0,
673 0.0, kFullStackTestDurationSecs};
674 screenshare.pipe.loss_percent = 1;
675 screenshare.pipe.link_capacity_kbps = 1200;
676 screenshare.pipe.queue_length_packets = 30;
677
678 RunTest(screenshare);
679}
680
681TEST_F(FullStackTest, ScreenshareSlidesVP8_3TL_Simulcast_ALR) {
682 test::ScopedFieldTrials field_trial(kScreenshareSimulcastExperiment +
683 kAlrProbingExperiment);
684 VideoQualityTest::Params screenshare;
685 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100686 screenshare.screenshare[0] = {true, false, 10};
687 screenshare.video[0] = {true, 1850, 1110, 5, 800000,
688 2500000, 2500000, false, "VP8", 3,
689 2, 400000, false, false, ""};
sprang89c4a7e2017-06-30 13:27:40 -0700690 screenshare.analyzer = {"screenshare_slides_simulcast_alr", 0.0, 0.0,
691 kFullStackTestDurationSecs};
692 VideoQualityTest::Params screenshare_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100693 screenshare_params_high.video[0] = {true, 1850, 1110, 5, 800000,
694 2500000, 2500000, false, "VP8", 3,
695 0, 400000, false, false, ""};
sprang89c4a7e2017-06-30 13:27:40 -0700696 VideoQualityTest::Params screenshare_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100697 screenshare_params_low.video[0] = {true, 1850, 1110, 5, 50000,
698 200000, 2000000, false, "VP8", 2,
699 0, 400000, false, false, ""};
sprang89c4a7e2017-06-30 13:27:40 -0700700
701 std::vector<VideoStream> streams = {
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100702 DefaultVideoStream(screenshare_params_low, 0),
703 DefaultVideoStream(screenshare_params_high, 0)};
Sergey Silkin57027362018-05-15 09:12:05 +0200704 screenshare.ss[0] = {
705 streams, 1, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
706 false};
sprang89c4a7e2017-06-30 13:27:40 -0700707 RunTest(screenshare);
708}
709
ilnik566c43b2017-03-07 04:42:54 -0800710const VideoQualityTest::Params::Video kSvcVp9Video = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000711 true, 1280, 720, 30, 800000,
712 2500000, 2500000, false, "VP9", 3,
713 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800714
715const VideoQualityTest::Params::Video kSimulcastVp8VideoHigh = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000716 true, 1280, 720, 30, 800000,
717 2500000, 2500000, false, "VP8", 3,
718 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800719
720const VideoQualityTest::Params::Video kSimulcastVp8VideoMedium = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000721 true, 640, 360, 30, 150000,
722 500000, 700000, false, "VP8", 3,
723 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800724
725const VideoQualityTest::Params::Video kSimulcastVp8VideoLow = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000726 true, 320, 180, 30, 30000,
727 150000, 200000, false, "VP8", 3,
728 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800729
Peter Boström12996152016-05-14 02:03:18 +0200730#if !defined(RTC_DISABLE_VP9)
marpan5f4aaeb2017-04-06 10:52:23 -0700731TEST_F(FullStackTest, ScreenshareSlidesVP9_2SL) {
minyue626bc952016-10-31 05:47:02 -0700732 VideoQualityTest::Params screenshare;
733 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100734 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
735 200000, 2000000, false, "VP9", 1,
736 0, 400000, false, false, ""};
737 screenshare.screenshare[0] = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700738 screenshare.analyzer = {"screenshare_slides_vp9_2sl", 0.0, 0.0,
739 kFullStackTestDurationSecs};
Sergey Silkin57027362018-05-15 09:12:05 +0200740 screenshare.ss[0] = {
741 std::vector<VideoStream>(), 0, 2, 1, InterLayerPredMode::kOn,
742 std::vector<SpatialLayer>(), false};
ivica5d6a06c2015-09-17 05:30:24 -0700743 RunTest(screenshare);
sprang@webrtc.org131bea82015-02-18 12:46:06 +0000744}
ilnik2a8c2f52017-02-15 02:23:28 -0800745
Sergey Silkinb3085b22018-05-25 09:07:11 +0000746TEST_F(FullStackTest, VP9SVC_3SL_High) {
ilnik2a8c2f52017-02-15 02:23:28 -0800747 VideoQualityTest::Params simulcast;
748 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100749 simulcast.video[0] = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800750 simulcast.analyzer = {"vp9svc_3sl_high", 0.0, 0.0,
751 kFullStackTestDurationSecs};
Sergey Silkin57027362018-05-15 09:12:05 +0200752 simulcast.ss[0] = {
753 std::vector<VideoStream>(), 0, 3, 2, InterLayerPredMode::kOn,
754 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800755 RunTest(simulcast);
756}
757
758TEST_F(FullStackTest, VP9SVC_3SL_Medium) {
759 VideoQualityTest::Params simulcast;
760 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100761 simulcast.video[0] = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800762 simulcast.analyzer = {"vp9svc_3sl_medium", 0.0, 0.0,
763 kFullStackTestDurationSecs};
Sergey Silkin57027362018-05-15 09:12:05 +0200764 simulcast.ss[0] = {
765 std::vector<VideoStream>(), 0, 3, 1, InterLayerPredMode::kOn,
766 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800767 RunTest(simulcast);
768}
769
770TEST_F(FullStackTest, VP9SVC_3SL_Low) {
771 VideoQualityTest::Params simulcast;
772 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100773 simulcast.video[0] = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800774 simulcast.analyzer = {"vp9svc_3sl_low", 0.0, 0.0, kFullStackTestDurationSecs};
Sergey Silkin57027362018-05-15 09:12:05 +0200775 simulcast.ss[0] = {
776 std::vector<VideoStream>(), 0, 3, 0, InterLayerPredMode::kOn,
777 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800778 RunTest(simulcast);
779}
Sergey Silkin0643fd62018-05-17 12:50:53 +0200780
781TEST_F(FullStackTest, VP9KSVC_3SL_High) {
782 VideoQualityTest::Params simulcast;
783 simulcast.call.send_side_bwe = true;
784 simulcast.video[0] = kSvcVp9Video;
785 simulcast.analyzer = {"vp9ksvc_3sl_high", 0.0, 0.0,
786 kFullStackTestDurationSecs};
787 simulcast.ss[0] = {
788 std::vector<VideoStream>(), 0, 3, 2, InterLayerPredMode::kOnKeyPic,
789 std::vector<SpatialLayer>(), false};
790 RunTest(simulcast);
791}
792
793TEST_F(FullStackTest, VP9KSVC_3SL_Medium) {
794 VideoQualityTest::Params simulcast;
795 simulcast.call.send_side_bwe = true;
796 simulcast.video[0] = kSvcVp9Video;
797 simulcast.analyzer = {"vp9ksvc_3sl_medium", 0.0, 0.0,
798 kFullStackTestDurationSecs};
799 simulcast.ss[0] = {
800 std::vector<VideoStream>(), 0, 3, 1, InterLayerPredMode::kOnKeyPic,
801 std::vector<SpatialLayer>(), false};
802 RunTest(simulcast);
803}
804
805TEST_F(FullStackTest, VP9KSVC_3SL_Low) {
806 VideoQualityTest::Params simulcast;
807 simulcast.call.send_side_bwe = true;
808 simulcast.video[0] = kSvcVp9Video;
809 simulcast.analyzer = {"vp9ksvc_3sl_low", 0.0, 0.0,
810 kFullStackTestDurationSecs};
811 simulcast.ss[0] = {
812 std::vector<VideoStream>(), 0, 3, 0, InterLayerPredMode::kOnKeyPic,
813 std::vector<SpatialLayer>(), false};
814 RunTest(simulcast);
815}
Peter Boström12996152016-05-14 02:03:18 +0200816#endif // !defined(RTC_DISABLE_VP9)
brandtr93c5d032016-11-30 07:50:07 -0800817
ilnik6b826ef2017-06-16 06:53:48 -0700818// Android bots can't handle FullHD, so disable the test.
Sam Zackrissonc3d8bb12018-05-02 10:22:32 +0200819// TODO(bugs.webrtc.org/9220): Investigate source of flakiness on Mac.
820#if defined(WEBRTC_ANDROID) || defined(WEBRTC_MAC)
ilnik6b826ef2017-06-16 06:53:48 -0700821#define MAYBE_SimulcastFullHdOveruse DISABLED_SimulcastFullHdOveruse
822#else
823#define MAYBE_SimulcastFullHdOveruse SimulcastFullHdOveruse
824#endif
825
826TEST_F(FullStackTest, MAYBE_SimulcastFullHdOveruse) {
827 VideoQualityTest::Params simulcast;
828 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100829 simulcast.video[0] = {true, 1920, 1080, 30, 800000,
830 2500000, 2500000, false, "VP8", 3,
831 2, 400000, false, false, "Generator"};
ilnik6b826ef2017-06-16 06:53:48 -0700832 simulcast.analyzer = {"simulcast_HD_high", 0.0, 0.0,
833 kFullStackTestDurationSecs};
834 simulcast.pipe.loss_percent = 0;
835 simulcast.pipe.queue_delay_ms = 100;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100836 std::vector<VideoStream> streams = {DefaultVideoStream(simulcast, 0),
837 DefaultVideoStream(simulcast, 0),
838 DefaultVideoStream(simulcast, 0)};
Sergey Silkin57027362018-05-15 09:12:05 +0200839 simulcast.ss[0] = {
840 streams, 2, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
841 true};
ilnik6b826ef2017-06-16 06:53:48 -0700842 webrtc::test::ScopedFieldTrials override_trials(
843 "WebRTC-ForceSimulatedOveruseIntervalMs/1000-50000-300/");
844 RunTest(simulcast);
845}
846
ilnik3dd5ad92017-02-09 04:58:53 -0800847TEST_F(FullStackTest, SimulcastVP8_3SL_High) {
848 VideoQualityTest::Params simulcast;
849 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100850 simulcast.video[0] = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800851 simulcast.analyzer = {"simulcast_vp8_3sl_high", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800852 kFullStackTestDurationSecs};
853 simulcast.pipe.loss_percent = 0;
854 simulcast.pipe.queue_delay_ms = 100;
855 VideoQualityTest::Params video_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100856 video_params_high.video[0] = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800857 VideoQualityTest::Params video_params_medium;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100858 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800859 VideoQualityTest::Params video_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100860 video_params_low.video[0] = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800861
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100862 std::vector<VideoStream> streams = {
863 DefaultVideoStream(video_params_low, 0),
864 DefaultVideoStream(video_params_medium, 0),
865 DefaultVideoStream(video_params_high, 0)};
Sergey Silkin57027362018-05-15 09:12:05 +0200866 simulcast.ss[0] = {
867 streams, 2, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
868 false};
ilnik3dd5ad92017-02-09 04:58:53 -0800869 RunTest(simulcast);
870}
871
872TEST_F(FullStackTest, SimulcastVP8_3SL_Medium) {
873 VideoQualityTest::Params simulcast;
874 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100875 simulcast.video[0] = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800876 simulcast.analyzer = {"simulcast_vp8_3sl_medium", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800877 kFullStackTestDurationSecs};
878 simulcast.pipe.loss_percent = 0;
879 simulcast.pipe.queue_delay_ms = 100;
880 VideoQualityTest::Params video_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100881 video_params_high.video[0] = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800882 VideoQualityTest::Params video_params_medium;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100883 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800884 VideoQualityTest::Params video_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100885 video_params_low.video[0] = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800886
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100887 std::vector<VideoStream> streams = {
888 DefaultVideoStream(video_params_low, 0),
889 DefaultVideoStream(video_params_medium, 0),
890 DefaultVideoStream(video_params_high, 0)};
Sergey Silkin57027362018-05-15 09:12:05 +0200891 simulcast.ss[0] = {
892 streams, 1, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
893 false};
ilnik3dd5ad92017-02-09 04:58:53 -0800894 RunTest(simulcast);
895}
896
897TEST_F(FullStackTest, SimulcastVP8_3SL_Low) {
898 VideoQualityTest::Params simulcast;
899 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100900 simulcast.video[0] = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800901 simulcast.analyzer = {"simulcast_vp8_3sl_low", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800902 kFullStackTestDurationSecs};
903 simulcast.pipe.loss_percent = 0;
904 simulcast.pipe.queue_delay_ms = 100;
905 VideoQualityTest::Params video_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100906 video_params_high.video[0] = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800907 VideoQualityTest::Params video_params_medium;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100908 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800909 VideoQualityTest::Params video_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100910 video_params_low.video[0] = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800911
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100912 std::vector<VideoStream> streams = {
913 DefaultVideoStream(video_params_low, 0),
914 DefaultVideoStream(video_params_medium, 0),
915 DefaultVideoStream(video_params_high, 0)};
Sergey Silkin57027362018-05-15 09:12:05 +0200916 simulcast.ss[0] = {
917 streams, 0, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
918 false};
ilnik3dd5ad92017-02-09 04:58:53 -0800919 RunTest(simulcast);
920}
921
ilnika014cc52017-03-07 04:21:04 -0800922TEST_F(FullStackTest, LargeRoomVP8_5thumb) {
923 VideoQualityTest::Params large_room;
924 large_room.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100925 large_room.video[0] = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800926 large_room.analyzer = {"largeroom_5thumb", 0.0, 0.0,
927 kFullStackTestDurationSecs};
928 large_room.pipe.loss_percent = 0;
929 large_room.pipe.queue_delay_ms = 100;
930 VideoQualityTest::Params video_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100931 video_params_high.video[0] = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800932 VideoQualityTest::Params video_params_medium;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100933 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800934 VideoQualityTest::Params video_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100935 video_params_low.video[0] = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800936
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100937 std::vector<VideoStream> streams = {
938 DefaultVideoStream(video_params_low, 0),
939 DefaultVideoStream(video_params_medium, 0),
940 DefaultVideoStream(video_params_high, 0)};
ilnik98436952017-07-13 00:47:03 -0700941 large_room.call.num_thumbnails = 5;
Sergey Silkin57027362018-05-15 09:12:05 +0200942 large_room.ss[0] = {
943 streams, 2, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
944 false};
ilnika014cc52017-03-07 04:21:04 -0800945 RunTest(large_room);
946}
947
oprypin743117f2017-09-15 05:24:24 -0700948#if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS)
949// Fails on mobile devices:
ilnikf89a7382017-03-07 06:15:27 -0800950// https://bugs.chromium.org/p/webrtc/issues/detail?id=7301
951#define MAYBE_LargeRoomVP8_50thumb DISABLED_LargeRoomVP8_50thumb
ilnik3ae7c252017-03-08 01:17:35 -0800952#define MAYBE_LargeRoomVP8_15thumb DISABLED_LargeRoomVP8_15thumb
ilnikf89a7382017-03-07 06:15:27 -0800953#else
954#define MAYBE_LargeRoomVP8_50thumb LargeRoomVP8_50thumb
ilnik3ae7c252017-03-08 01:17:35 -0800955#define MAYBE_LargeRoomVP8_15thumb LargeRoomVP8_15thumb
ilnikf89a7382017-03-07 06:15:27 -0800956#endif
957
958TEST_F(FullStackTest, MAYBE_LargeRoomVP8_15thumb) {
ilnika014cc52017-03-07 04:21:04 -0800959 VideoQualityTest::Params large_room;
960 large_room.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100961 large_room.video[0] = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800962 large_room.analyzer = {"largeroom_15thumb", 0.0, 0.0,
963 kFullStackTestDurationSecs};
964 large_room.pipe.loss_percent = 0;
965 large_room.pipe.queue_delay_ms = 100;
966 VideoQualityTest::Params video_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100967 video_params_high.video[0] = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800968 VideoQualityTest::Params video_params_medium;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100969 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800970 VideoQualityTest::Params video_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100971 video_params_low.video[0] = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800972
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100973 std::vector<VideoStream> streams = {
974 DefaultVideoStream(video_params_low, 0),
975 DefaultVideoStream(video_params_medium, 0),
976 DefaultVideoStream(video_params_high, 0)};
ilnik98436952017-07-13 00:47:03 -0700977 large_room.call.num_thumbnails = 15;
Sergey Silkin57027362018-05-15 09:12:05 +0200978 large_room.ss[0] = {
979 streams, 2, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
980 false};
ilnika014cc52017-03-07 04:21:04 -0800981 RunTest(large_room);
982}
983
ilnika014cc52017-03-07 04:21:04 -0800984TEST_F(FullStackTest, MAYBE_LargeRoomVP8_50thumb) {
985 VideoQualityTest::Params large_room;
986 large_room.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100987 large_room.video[0] = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800988 large_room.analyzer = {"largeroom_50thumb", 0.0, 0.0,
989 kFullStackTestDurationSecs};
990 large_room.pipe.loss_percent = 0;
991 large_room.pipe.queue_delay_ms = 100;
992 VideoQualityTest::Params video_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100993 video_params_high.video[0] = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800994 VideoQualityTest::Params video_params_medium;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100995 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800996 VideoQualityTest::Params video_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100997 video_params_low.video[0] = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800998
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100999 std::vector<VideoStream> streams = {
1000 DefaultVideoStream(video_params_low, 0),
1001 DefaultVideoStream(video_params_medium, 0),
1002 DefaultVideoStream(video_params_high, 0)};
ilnik98436952017-07-13 00:47:03 -07001003 large_room.call.num_thumbnails = 50;
Sergey Silkin57027362018-05-15 09:12:05 +02001004 large_room.ss[0] = {
1005 streams, 2, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
1006 false};
ilnika014cc52017-03-07 04:21:04 -08001007 RunTest(large_room);
1008}
1009
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +01001010class DualStreamsTest : public FullStackTest,
1011 public ::testing::WithParamInterface<int> {};
1012
1013// Disable dual video test on mobile device becuase it's too heavy.
1014#if !defined(WEBRTC_ANDROID) && !defined(WEBRTC_IOS)
1015TEST_P(DualStreamsTest,
1016 ModeratelyRestricted_SlidesVp8_3TL_Simulcast_Video_Simulcast_High) {
1017 test::ScopedFieldTrials field_trial(
1018 kScreenshareSimulcastExperiment + kAlrProbingExperiment +
1019 kRoundRobinPacingQueueExperiment + kPacerPushBackExperiment);
1020 const int first_stream = GetParam();
1021 VideoQualityTest::Params dual_streams;
1022
1023 // Screenshare Settings.
1024 dual_streams.screenshare[first_stream] = {true, false, 10};
1025 dual_streams.video[first_stream] = {true, 1850, 1110, 5, 800000,
1026 2500000, 2500000, false, "VP8", 3,
1027 2, 400000, false, false, ""};
1028
1029 VideoQualityTest::Params screenshare_params_high;
1030 screenshare_params_high.video[0] = {true, 1850, 1110, 5, 800000,
1031 2500000, 2500000, false, "VP8", 3,
1032 0, 400000, false, false, ""};
1033 VideoQualityTest::Params screenshare_params_low;
1034 screenshare_params_low.video[0] = {true, 1850, 1110, 5, 50000,
1035 200000, 2000000, false, "VP8", 2,
1036 0, 400000, false, false, ""};
1037 std::vector<VideoStream> screenhsare_streams = {
1038 DefaultVideoStream(screenshare_params_low, 0),
1039 DefaultVideoStream(screenshare_params_high, 0)};
1040
Sergey Silkin57027362018-05-15 09:12:05 +02001041 dual_streams.ss[first_stream] = {
1042 screenhsare_streams, 1, 1, 0, InterLayerPredMode::kOn,
1043 std::vector<SpatialLayer>(), false};
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +01001044
1045 // Video settings.
1046 dual_streams.video[1 - first_stream] = kSimulcastVp8VideoHigh;
1047
1048 VideoQualityTest::Params video_params_high;
1049 video_params_high.video[0] = kSimulcastVp8VideoHigh;
1050 VideoQualityTest::Params video_params_medium;
1051 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
1052 VideoQualityTest::Params video_params_low;
1053 video_params_low.video[0] = kSimulcastVp8VideoLow;
1054 std::vector<VideoStream> streams = {
1055 DefaultVideoStream(video_params_low, 0),
1056 DefaultVideoStream(video_params_medium, 0),
1057 DefaultVideoStream(video_params_high, 0)};
1058
1059 dual_streams.ss[1 - first_stream] = {
Sergey Silkin57027362018-05-15 09:12:05 +02001060 streams, 2, 1, 0, InterLayerPredMode::kOn, std::vector<SpatialLayer>(),
1061 false};
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +01001062
1063 // Call settings.
1064 dual_streams.call.send_side_bwe = true;
1065 dual_streams.call.dual_video = true;
Edward Lemur35d2b7e2017-12-27 18:54:47 +01001066 std::string test_label = "dualstreams_moderately_restricted_screenshare_" +
1067 std::to_string(first_stream);
1068 dual_streams.analyzer = {test_label, 0.0, 0.0, kFullStackTestDurationSecs};
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +01001069 dual_streams.pipe.loss_percent = 1;
1070 dual_streams.pipe.link_capacity_kbps = 7500;
1071 dual_streams.pipe.queue_length_packets = 30;
1072 dual_streams.pipe.queue_delay_ms = 100;
1073
1074 RunTest(dual_streams);
1075}
1076#endif // !defined(WEBRTC_ANDROID) && !defined(WEBRTC_IOS)
1077
1078TEST_P(DualStreamsTest, Conference_Restricted) {
1079 test::ScopedFieldTrials field_trial(kRoundRobinPacingQueueExperiment +
1080 kPacerPushBackExperiment);
1081 const int first_stream = GetParam();
1082 VideoQualityTest::Params dual_streams;
1083
1084 // Screenshare Settings.
1085 dual_streams.screenshare[first_stream] = {true, false, 10};
1086 dual_streams.video[first_stream] = {true, 1850, 1110, 5, 800000,
1087 2500000, 2500000, false, "VP8", 3,
1088 2, 400000, false, false, ""};
1089 // Video settings.
1090 dual_streams.video[1 - first_stream] = {
1091 true, 1280, 720, 30, 150000,
1092 500000, 700000, false, "VP8", 3,
1093 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
1094
1095 // Call settings.
1096 dual_streams.call.send_side_bwe = true;
1097 dual_streams.call.dual_video = true;
Edward Lemur35d2b7e2017-12-27 18:54:47 +01001098 std::string test_label = "dualstreams_conference_restricted_screenshare_" +
1099 std::to_string(first_stream);
1100 dual_streams.analyzer = {test_label, 0.0, 0.0, kFullStackTestDurationSecs};
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +01001101 dual_streams.pipe.loss_percent = 1;
1102 dual_streams.pipe.link_capacity_kbps = 5000;
1103 dual_streams.pipe.queue_length_packets = 30;
1104 dual_streams.pipe.queue_delay_ms = 100;
1105
1106 RunTest(dual_streams);
1107}
1108
1109INSTANTIATE_TEST_CASE_P(FullStackTest,
1110 DualStreamsTest,
1111 ::testing::Values(0, 1));
ilnika014cc52017-03-07 04:21:04 -08001112
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +00001113} // namespace webrtc