blob: 27dfc3b53cad2f019e8caaadb262b777f8628b2a [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)};
524 screenshare.ss[0] = {streams, 1, 1, 0, std::vector<SpatialLayer>(), false};
ilnikcb8c1462017-03-09 09:23:30 -0800525 RunTest(screenshare);
526}
527
ivica7bd242e2015-10-06 02:04:06 -0700528TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_Scroll) {
minyue626bc952016-10-31 05:47:02 -0700529 VideoQualityTest::Params config;
530 config.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100531 config.video[0] = {true, 1850, 1110 / 2, 5, 50000,
532 200000, 2000000, false, "VP8", 2,
533 1, 400000, false, false, ""};
534 config.screenshare[0] = {true, false, 10, 2};
minyue626bc952016-10-31 05:47:02 -0700535 config.analyzer = {"screenshare_slides_scrolling", 0.0, 0.0,
536 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700537 RunTest(config);
ivica028cf482015-07-30 02:15:56 -0700538}
539
sprangee37de32015-11-23 06:10:23 -0800540TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNet) {
minyue626bc952016-10-31 05:47:02 -0700541 VideoQualityTest::Params screenshare;
542 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100543 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
544 200000, 2000000, false, "VP8", 2,
545 1, 400000, false, false, ""};
546 screenshare.screenshare[0] = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700547 screenshare.analyzer = {"screenshare_slides_lossy_net", 0.0, 0.0,
548 kFullStackTestDurationSecs};
sprangee37de32015-11-23 06:10:23 -0800549 screenshare.pipe.loss_percent = 5;
550 screenshare.pipe.queue_delay_ms = 200;
551 screenshare.pipe.link_capacity_kbps = 500;
552 RunTest(screenshare);
553}
554
555TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_VeryLossyNet) {
minyue626bc952016-10-31 05:47:02 -0700556 VideoQualityTest::Params screenshare;
557 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100558 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
559 200000, 2000000, false, "VP8", 2,
560 1, 400000, false, false, ""};
561 screenshare.screenshare[0] = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700562 screenshare.analyzer = {"screenshare_slides_very_lossy", 0.0, 0.0,
563 kFullStackTestDurationSecs};
sprangee37de32015-11-23 06:10:23 -0800564 screenshare.pipe.loss_percent = 10;
565 screenshare.pipe.queue_delay_ms = 200;
566 screenshare.pipe.link_capacity_kbps = 500;
567 RunTest(screenshare);
568}
569
sprange566e172017-06-08 01:29:15 -0700570TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNetRestrictedQueue) {
571 VideoQualityTest::Params screenshare;
572 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100573 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
574 200000, 2000000, false, "VP8", 2,
575 1, 400000, false, false, ""};
576 screenshare.screenshare[0] = {true, false, 10};
sprange566e172017-06-08 01:29:15 -0700577 screenshare.analyzer = {"screenshare_slides_lossy_limited", 0.0, 0.0,
578 kFullStackTestDurationSecs};
579 screenshare.pipe.loss_percent = 5;
580 screenshare.pipe.link_capacity_kbps = 200;
581 screenshare.pipe.queue_length_packets = 30;
582
583 RunTest(screenshare);
584}
585
sprang89c4a7e2017-06-30 13:27:40 -0700586TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ModeratelyRestricted) {
587 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};
sprang89c4a7e2017-06-30 13:27:40 -0700593 screenshare.analyzer = {"screenshare_slides_moderately_restricted", 0.0, 0.0,
594 kFullStackTestDurationSecs};
595 screenshare.pipe.loss_percent = 1;
596 screenshare.pipe.link_capacity_kbps = 1200;
597 screenshare.pipe.queue_length_packets = 30;
598
599 RunTest(screenshare);
600}
601
602// TODO(sprang): Retire these tests once experiment is removed.
603TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNetRestrictedQueue_ALR) {
604 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
605 VideoQualityTest::Params screenshare;
606 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100607 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
608 200000, 2000000, false, "VP8", 2,
609 1, 400000, false, false, ""};
610 screenshare.screenshare[0] = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700611 screenshare.analyzer = {"screenshare_slides_lossy_limited_ALR", 0.0, 0.0,
612 kFullStackTestDurationSecs};
613 screenshare.pipe.loss_percent = 5;
614 screenshare.pipe.link_capacity_kbps = 200;
615 screenshare.pipe.queue_length_packets = 30;
616
617 RunTest(screenshare);
618}
619
620TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ALR) {
621 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
622 VideoQualityTest::Params screenshare;
623 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100624 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
625 200000, 2000000, false, "VP8", 2,
626 1, 400000, false, false, ""};
627 screenshare.screenshare[0] = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700628 screenshare.analyzer = {"screenshare_slides_ALR", 0.0, 0.0,
629 kFullStackTestDurationSecs};
630 RunTest(screenshare);
631}
632
633TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ModeratelyRestricted_ALR) {
634 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
635 VideoQualityTest::Params screenshare;
636 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100637 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
638 200000, 2000000, false, "VP8", 2,
639 1, 400000, false, false, ""};
640 screenshare.screenshare[0] = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700641 screenshare.analyzer = {"screenshare_slides_moderately_restricted_ALR", 0.0,
642 0.0, kFullStackTestDurationSecs};
643 screenshare.pipe.loss_percent = 1;
644 screenshare.pipe.link_capacity_kbps = 1200;
645 screenshare.pipe.queue_length_packets = 30;
646
647 RunTest(screenshare);
648}
649
650TEST_F(FullStackTest, ScreenshareSlidesVP8_3TL_Simulcast_ALR) {
651 test::ScopedFieldTrials field_trial(kScreenshareSimulcastExperiment +
652 kAlrProbingExperiment);
653 VideoQualityTest::Params screenshare;
654 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100655 screenshare.screenshare[0] = {true, false, 10};
656 screenshare.video[0] = {true, 1850, 1110, 5, 800000,
657 2500000, 2500000, false, "VP8", 3,
658 2, 400000, false, false, ""};
sprang89c4a7e2017-06-30 13:27:40 -0700659 screenshare.analyzer = {"screenshare_slides_simulcast_alr", 0.0, 0.0,
660 kFullStackTestDurationSecs};
661 VideoQualityTest::Params screenshare_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100662 screenshare_params_high.video[0] = {true, 1850, 1110, 5, 800000,
663 2500000, 2500000, false, "VP8", 3,
664 0, 400000, false, false, ""};
sprang89c4a7e2017-06-30 13:27:40 -0700665 VideoQualityTest::Params screenshare_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100666 screenshare_params_low.video[0] = {true, 1850, 1110, 5, 50000,
667 200000, 2000000, false, "VP8", 2,
668 0, 400000, false, false, ""};
sprang89c4a7e2017-06-30 13:27:40 -0700669
670 std::vector<VideoStream> streams = {
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100671 DefaultVideoStream(screenshare_params_low, 0),
672 DefaultVideoStream(screenshare_params_high, 0)};
673 screenshare.ss[0] = {streams, 1, 1, 0, std::vector<SpatialLayer>(), false};
sprang89c4a7e2017-06-30 13:27:40 -0700674 RunTest(screenshare);
675}
676
ilnik566c43b2017-03-07 04:42:54 -0800677const VideoQualityTest::Params::Video kSvcVp9Video = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000678 true, 1280, 720, 30, 800000,
679 2500000, 2500000, false, "VP9", 3,
680 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800681
682const VideoQualityTest::Params::Video kSimulcastVp8VideoHigh = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000683 true, 1280, 720, 30, 800000,
684 2500000, 2500000, false, "VP8", 3,
685 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800686
687const VideoQualityTest::Params::Video kSimulcastVp8VideoMedium = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000688 true, 640, 360, 30, 150000,
689 500000, 700000, false, "VP8", 3,
690 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800691
692const VideoQualityTest::Params::Video kSimulcastVp8VideoLow = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000693 true, 320, 180, 30, 30000,
694 150000, 200000, false, "VP8", 3,
695 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800696
Peter Boström12996152016-05-14 02:03:18 +0200697#if !defined(RTC_DISABLE_VP9)
marpan5f4aaeb2017-04-06 10:52:23 -0700698TEST_F(FullStackTest, ScreenshareSlidesVP9_2SL) {
minyue626bc952016-10-31 05:47:02 -0700699 VideoQualityTest::Params screenshare;
700 screenshare.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100701 screenshare.video[0] = {true, 1850, 1110, 5, 50000,
702 200000, 2000000, false, "VP9", 1,
703 0, 400000, false, false, ""};
704 screenshare.screenshare[0] = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700705 screenshare.analyzer = {"screenshare_slides_vp9_2sl", 0.0, 0.0,
706 kFullStackTestDurationSecs};
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100707 screenshare.ss[0] = {std::vector<VideoStream>(), 0, 2, 1,
708 std::vector<SpatialLayer>(), false};
ivica5d6a06c2015-09-17 05:30:24 -0700709 RunTest(screenshare);
sprang@webrtc.org131bea82015-02-18 12:46:06 +0000710}
ilnik2a8c2f52017-02-15 02:23:28 -0800711
712TEST_F(FullStackTest, VP9SVC_3SL_High) {
713 VideoQualityTest::Params simulcast;
714 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100715 simulcast.video[0] = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800716 simulcast.analyzer = {"vp9svc_3sl_high", 0.0, 0.0,
717 kFullStackTestDurationSecs};
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100718 simulcast.ss[0] = {std::vector<VideoStream>(), 0, 3, 2,
719 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800720 RunTest(simulcast);
721}
722
723TEST_F(FullStackTest, VP9SVC_3SL_Medium) {
724 VideoQualityTest::Params simulcast;
725 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100726 simulcast.video[0] = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800727 simulcast.analyzer = {"vp9svc_3sl_medium", 0.0, 0.0,
728 kFullStackTestDurationSecs};
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100729 simulcast.ss[0] = {std::vector<VideoStream>(), 0, 3, 1,
730 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800731 RunTest(simulcast);
732}
733
734TEST_F(FullStackTest, VP9SVC_3SL_Low) {
735 VideoQualityTest::Params simulcast;
736 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100737 simulcast.video[0] = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800738 simulcast.analyzer = {"vp9svc_3sl_low", 0.0, 0.0, kFullStackTestDurationSecs};
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100739 simulcast.ss[0] = {std::vector<VideoStream>(), 0, 3, 0,
740 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800741 RunTest(simulcast);
742}
Peter Boström12996152016-05-14 02:03:18 +0200743#endif // !defined(RTC_DISABLE_VP9)
brandtr93c5d032016-11-30 07:50:07 -0800744
ilnik6b826ef2017-06-16 06:53:48 -0700745// Android bots can't handle FullHD, so disable the test.
ilnik267041c2017-06-27 07:21:01 -0700746#if defined(WEBRTC_ANDROID)
ilnik6b826ef2017-06-16 06:53:48 -0700747#define MAYBE_SimulcastFullHdOveruse DISABLED_SimulcastFullHdOveruse
748#else
749#define MAYBE_SimulcastFullHdOveruse SimulcastFullHdOveruse
750#endif
751
752TEST_F(FullStackTest, MAYBE_SimulcastFullHdOveruse) {
753 VideoQualityTest::Params simulcast;
754 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100755 simulcast.video[0] = {true, 1920, 1080, 30, 800000,
756 2500000, 2500000, false, "VP8", 3,
757 2, 400000, false, false, "Generator"};
ilnik6b826ef2017-06-16 06:53:48 -0700758 simulcast.analyzer = {"simulcast_HD_high", 0.0, 0.0,
759 kFullStackTestDurationSecs};
760 simulcast.pipe.loss_percent = 0;
761 simulcast.pipe.queue_delay_ms = 100;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100762 std::vector<VideoStream> streams = {DefaultVideoStream(simulcast, 0),
763 DefaultVideoStream(simulcast, 0),
764 DefaultVideoStream(simulcast, 0)};
765 simulcast.ss[0] = {streams, 2, 1, 0, std::vector<SpatialLayer>(), true};
ilnik6b826ef2017-06-16 06:53:48 -0700766 webrtc::test::ScopedFieldTrials override_trials(
767 "WebRTC-ForceSimulatedOveruseIntervalMs/1000-50000-300/");
768 RunTest(simulcast);
769}
770
ilnik3dd5ad92017-02-09 04:58:53 -0800771TEST_F(FullStackTest, SimulcastVP8_3SL_High) {
772 VideoQualityTest::Params simulcast;
773 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100774 simulcast.video[0] = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800775 simulcast.analyzer = {"simulcast_vp8_3sl_high", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800776 kFullStackTestDurationSecs};
777 simulcast.pipe.loss_percent = 0;
778 simulcast.pipe.queue_delay_ms = 100;
779 VideoQualityTest::Params video_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100780 video_params_high.video[0] = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800781 VideoQualityTest::Params video_params_medium;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100782 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800783 VideoQualityTest::Params video_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100784 video_params_low.video[0] = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800785
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100786 std::vector<VideoStream> streams = {
787 DefaultVideoStream(video_params_low, 0),
788 DefaultVideoStream(video_params_medium, 0),
789 DefaultVideoStream(video_params_high, 0)};
790 simulcast.ss[0] = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnik3dd5ad92017-02-09 04:58:53 -0800791 RunTest(simulcast);
792}
793
794TEST_F(FullStackTest, SimulcastVP8_3SL_Medium) {
795 VideoQualityTest::Params simulcast;
796 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100797 simulcast.video[0] = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800798 simulcast.analyzer = {"simulcast_vp8_3sl_medium", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800799 kFullStackTestDurationSecs};
800 simulcast.pipe.loss_percent = 0;
801 simulcast.pipe.queue_delay_ms = 100;
802 VideoQualityTest::Params video_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100803 video_params_high.video[0] = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800804 VideoQualityTest::Params video_params_medium;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100805 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800806 VideoQualityTest::Params video_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100807 video_params_low.video[0] = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800808
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100809 std::vector<VideoStream> streams = {
810 DefaultVideoStream(video_params_low, 0),
811 DefaultVideoStream(video_params_medium, 0),
812 DefaultVideoStream(video_params_high, 0)};
813 simulcast.ss[0] = {streams, 1, 1, 0, std::vector<SpatialLayer>(), false};
ilnik3dd5ad92017-02-09 04:58:53 -0800814 RunTest(simulcast);
815}
816
817TEST_F(FullStackTest, SimulcastVP8_3SL_Low) {
818 VideoQualityTest::Params simulcast;
819 simulcast.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100820 simulcast.video[0] = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800821 simulcast.analyzer = {"simulcast_vp8_3sl_low", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800822 kFullStackTestDurationSecs};
823 simulcast.pipe.loss_percent = 0;
824 simulcast.pipe.queue_delay_ms = 100;
825 VideoQualityTest::Params video_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100826 video_params_high.video[0] = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800827 VideoQualityTest::Params video_params_medium;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100828 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800829 VideoQualityTest::Params video_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100830 video_params_low.video[0] = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800831
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100832 std::vector<VideoStream> streams = {
833 DefaultVideoStream(video_params_low, 0),
834 DefaultVideoStream(video_params_medium, 0),
835 DefaultVideoStream(video_params_high, 0)};
836 simulcast.ss[0] = {streams, 0, 1, 0, std::vector<SpatialLayer>(), false};
ilnik3dd5ad92017-02-09 04:58:53 -0800837 RunTest(simulcast);
838}
839
ilnika014cc52017-03-07 04:21:04 -0800840TEST_F(FullStackTest, LargeRoomVP8_5thumb) {
841 VideoQualityTest::Params large_room;
842 large_room.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100843 large_room.video[0] = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800844 large_room.analyzer = {"largeroom_5thumb", 0.0, 0.0,
845 kFullStackTestDurationSecs};
846 large_room.pipe.loss_percent = 0;
847 large_room.pipe.queue_delay_ms = 100;
848 VideoQualityTest::Params video_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100849 video_params_high.video[0] = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800850 VideoQualityTest::Params video_params_medium;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100851 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800852 VideoQualityTest::Params video_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100853 video_params_low.video[0] = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800854
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100855 std::vector<VideoStream> streams = {
856 DefaultVideoStream(video_params_low, 0),
857 DefaultVideoStream(video_params_medium, 0),
858 DefaultVideoStream(video_params_high, 0)};
ilnik98436952017-07-13 00:47:03 -0700859 large_room.call.num_thumbnails = 5;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100860 large_room.ss[0] = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnika014cc52017-03-07 04:21:04 -0800861 RunTest(large_room);
862}
863
oprypin743117f2017-09-15 05:24:24 -0700864#if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS)
865// Fails on mobile devices:
ilnikf89a7382017-03-07 06:15:27 -0800866// https://bugs.chromium.org/p/webrtc/issues/detail?id=7301
867#define MAYBE_LargeRoomVP8_50thumb DISABLED_LargeRoomVP8_50thumb
ilnik3ae7c252017-03-08 01:17:35 -0800868#define MAYBE_LargeRoomVP8_15thumb DISABLED_LargeRoomVP8_15thumb
ilnikf89a7382017-03-07 06:15:27 -0800869#else
870#define MAYBE_LargeRoomVP8_50thumb LargeRoomVP8_50thumb
ilnik3ae7c252017-03-08 01:17:35 -0800871#define MAYBE_LargeRoomVP8_15thumb LargeRoomVP8_15thumb
ilnikf89a7382017-03-07 06:15:27 -0800872#endif
873
874TEST_F(FullStackTest, MAYBE_LargeRoomVP8_15thumb) {
ilnika014cc52017-03-07 04:21:04 -0800875 VideoQualityTest::Params large_room;
876 large_room.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100877 large_room.video[0] = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800878 large_room.analyzer = {"largeroom_15thumb", 0.0, 0.0,
879 kFullStackTestDurationSecs};
880 large_room.pipe.loss_percent = 0;
881 large_room.pipe.queue_delay_ms = 100;
882 VideoQualityTest::Params video_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100883 video_params_high.video[0] = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800884 VideoQualityTest::Params video_params_medium;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100885 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800886 VideoQualityTest::Params video_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100887 video_params_low.video[0] = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800888
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100889 std::vector<VideoStream> streams = {
890 DefaultVideoStream(video_params_low, 0),
891 DefaultVideoStream(video_params_medium, 0),
892 DefaultVideoStream(video_params_high, 0)};
ilnik98436952017-07-13 00:47:03 -0700893 large_room.call.num_thumbnails = 15;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100894 large_room.ss[0] = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnika014cc52017-03-07 04:21:04 -0800895 RunTest(large_room);
896}
897
ilnika014cc52017-03-07 04:21:04 -0800898TEST_F(FullStackTest, MAYBE_LargeRoomVP8_50thumb) {
899 VideoQualityTest::Params large_room;
900 large_room.call.send_side_bwe = true;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100901 large_room.video[0] = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800902 large_room.analyzer = {"largeroom_50thumb", 0.0, 0.0,
903 kFullStackTestDurationSecs};
904 large_room.pipe.loss_percent = 0;
905 large_room.pipe.queue_delay_ms = 100;
906 VideoQualityTest::Params video_params_high;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100907 video_params_high.video[0] = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800908 VideoQualityTest::Params video_params_medium;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100909 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800910 VideoQualityTest::Params video_params_low;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100911 video_params_low.video[0] = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800912
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100913 std::vector<VideoStream> streams = {
914 DefaultVideoStream(video_params_low, 0),
915 DefaultVideoStream(video_params_medium, 0),
916 DefaultVideoStream(video_params_high, 0)};
ilnik98436952017-07-13 00:47:03 -0700917 large_room.call.num_thumbnails = 50;
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100918 large_room.ss[0] = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnika014cc52017-03-07 04:21:04 -0800919 RunTest(large_room);
920}
921
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100922class DualStreamsTest : public FullStackTest,
923 public ::testing::WithParamInterface<int> {};
924
925// Disable dual video test on mobile device becuase it's too heavy.
926#if !defined(WEBRTC_ANDROID) && !defined(WEBRTC_IOS)
927TEST_P(DualStreamsTest,
928 ModeratelyRestricted_SlidesVp8_3TL_Simulcast_Video_Simulcast_High) {
929 test::ScopedFieldTrials field_trial(
930 kScreenshareSimulcastExperiment + kAlrProbingExperiment +
931 kRoundRobinPacingQueueExperiment + kPacerPushBackExperiment);
932 const int first_stream = GetParam();
933 VideoQualityTest::Params dual_streams;
934
935 // Screenshare Settings.
936 dual_streams.screenshare[first_stream] = {true, false, 10};
937 dual_streams.video[first_stream] = {true, 1850, 1110, 5, 800000,
938 2500000, 2500000, false, "VP8", 3,
939 2, 400000, false, false, ""};
940
941 VideoQualityTest::Params screenshare_params_high;
942 screenshare_params_high.video[0] = {true, 1850, 1110, 5, 800000,
943 2500000, 2500000, false, "VP8", 3,
944 0, 400000, false, false, ""};
945 VideoQualityTest::Params screenshare_params_low;
946 screenshare_params_low.video[0] = {true, 1850, 1110, 5, 50000,
947 200000, 2000000, false, "VP8", 2,
948 0, 400000, false, false, ""};
949 std::vector<VideoStream> screenhsare_streams = {
950 DefaultVideoStream(screenshare_params_low, 0),
951 DefaultVideoStream(screenshare_params_high, 0)};
952
953 dual_streams.ss[first_stream] = {screenhsare_streams, 1, 1, 0,
954 std::vector<SpatialLayer>(), false};
955
956 // Video settings.
957 dual_streams.video[1 - first_stream] = kSimulcastVp8VideoHigh;
958
959 VideoQualityTest::Params video_params_high;
960 video_params_high.video[0] = kSimulcastVp8VideoHigh;
961 VideoQualityTest::Params video_params_medium;
962 video_params_medium.video[0] = kSimulcastVp8VideoMedium;
963 VideoQualityTest::Params video_params_low;
964 video_params_low.video[0] = kSimulcastVp8VideoLow;
965 std::vector<VideoStream> streams = {
966 DefaultVideoStream(video_params_low, 0),
967 DefaultVideoStream(video_params_medium, 0),
968 DefaultVideoStream(video_params_high, 0)};
969
970 dual_streams.ss[1 - first_stream] = {
971 streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
972
973 // Call settings.
974 dual_streams.call.send_side_bwe = true;
975 dual_streams.call.dual_video = true;
Edward Lemur35d2b7e2017-12-27 18:54:47 +0100976 std::string test_label = "dualstreams_moderately_restricted_screenshare_" +
977 std::to_string(first_stream);
978 dual_streams.analyzer = {test_label, 0.0, 0.0, kFullStackTestDurationSecs};
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +0100979 dual_streams.pipe.loss_percent = 1;
980 dual_streams.pipe.link_capacity_kbps = 7500;
981 dual_streams.pipe.queue_length_packets = 30;
982 dual_streams.pipe.queue_delay_ms = 100;
983
984 RunTest(dual_streams);
985}
986#endif // !defined(WEBRTC_ANDROID) && !defined(WEBRTC_IOS)
987
988TEST_P(DualStreamsTest, Conference_Restricted) {
989 test::ScopedFieldTrials field_trial(kRoundRobinPacingQueueExperiment +
990 kPacerPushBackExperiment);
991 const int first_stream = GetParam();
992 VideoQualityTest::Params dual_streams;
993
994 // Screenshare Settings.
995 dual_streams.screenshare[first_stream] = {true, false, 10};
996 dual_streams.video[first_stream] = {true, 1850, 1110, 5, 800000,
997 2500000, 2500000, false, "VP8", 3,
998 2, 400000, false, false, ""};
999 // Video settings.
1000 dual_streams.video[1 - first_stream] = {
1001 true, 1280, 720, 30, 150000,
1002 500000, 700000, false, "VP8", 3,
1003 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
1004
1005 // Call settings.
1006 dual_streams.call.send_side_bwe = true;
1007 dual_streams.call.dual_video = true;
Edward Lemur35d2b7e2017-12-27 18:54:47 +01001008 std::string test_label = "dualstreams_conference_restricted_screenshare_" +
1009 std::to_string(first_stream);
1010 dual_streams.analyzer = {test_label, 0.0, 0.0, kFullStackTestDurationSecs};
Ilya Nikolaevskiy255d1cd2017-12-21 18:02:59 +01001011 dual_streams.pipe.loss_percent = 1;
1012 dual_streams.pipe.link_capacity_kbps = 5000;
1013 dual_streams.pipe.queue_length_packets = 30;
1014 dual_streams.pipe.queue_delay_ms = 100;
1015
1016 RunTest(dual_streams);
1017}
1018
1019INSTANTIATE_TEST_CASE_P(FullStackTest,
1020 DualStreamsTest,
1021 ::testing::Values(0, 1));
ilnika014cc52017-03-07 04:21:04 -08001022
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +00001023} // namespace webrtc