blob: 66253cc70e0f33ca329820c230b72a3316726908 [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
sprang89c4a7e2017-06-30 13:27:40 -070012#include "webrtc/modules/pacing/alr_detector.h"
ilnikcb8c1462017-03-09 09:23:30 -080013#include "webrtc/test/field_trial.h"
kwiberg77eab702016-09-28 17:42:01 -070014#include "webrtc/test/gtest.h"
ivica5d6a06c2015-09-17 05:30:24 -070015#include "webrtc/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 =
33 std::string(AlrDetector::kScreenshareProbingBweExperimentName) +
ilnik2ae19db2017-08-31 04:46:45 -070034 "/1.1,2875,85,20,-20,0/";
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000035};
36
sprangce4aef12015-11-02 07:23:20 -080037// VideoQualityTest::Params params = {
38// { ... }, // Common.
39// { ... }, // Video-specific settings.
40// { ... }, // Screenshare-specific settings.
41// { ... }, // Analyzer settings.
42// pipe, // FakeNetworkPipe::Config
43// { ... }, // Spatial scalability.
44// logs // bool
45// };
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000046
Peter Boström12996152016-05-14 02:03:18 +020047#if !defined(RTC_DISABLE_VP9)
asapersson88b0a222016-02-12 13:16:43 -080048TEST_F(FullStackTest, ForemanCifWithoutPacketLossVp9) {
brandtr93c5d032016-11-30 07:50:07 -080049 // TODO(pbos): Decide on psnr/ssim thresholds for foreman_cif.
50 VideoQualityTest::Params foreman_cif;
51 foreman_cif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -070052 foreman_cif.video = {true, 352, 288, 30, 700000, 700000, 700000, false,
53 "VP9", 1, 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -080054 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0_VP9", 0.0, 0.0,
55 kFullStackTestDurationSecs};
56 RunTest(foreman_cif);
asapersson88b0a222016-02-12 13:16:43 -080057}
58
59TEST_F(FullStackTest, ForemanCifPlr5Vp9) {
brandtr93c5d032016-11-30 07:50:07 -080060 VideoQualityTest::Params foreman_cif;
61 foreman_cif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -070062 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
63 "VP9", 1, 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -080064 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_VP9", 0.0, 0.0,
65 kFullStackTestDurationSecs};
66 foreman_cif.pipe.loss_percent = 5;
67 foreman_cif.pipe.queue_delay_ms = 50;
68 RunTest(foreman_cif);
asapersson88b0a222016-02-12 13:16:43 -080069}
Peter Boström12996152016-05-14 02:03:18 +020070#endif // !defined(RTC_DISABLE_VP9)
asapersson88b0a222016-02-12 13:16:43 -080071
pbos@webrtc.org994d0b72014-06-27 08:47:52 +000072TEST_F(FullStackTest, ParisQcifWithoutPacketLoss) {
minyue626bc952016-10-31 05:47:02 -070073 VideoQualityTest::Params paris_qcif;
74 paris_qcif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -070075 paris_qcif.video = {true, 176, 144, 30, 300000, 300000, 300000, false,
76 "VP8", 1, 0, 0, false, false, "paris_qcif"};
minyue626bc952016-10-31 05:47:02 -070077 paris_qcif.analyzer = {"net_delay_0_0_plr_0", 36.0, 0.96,
78 kFullStackTestDurationSecs};
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +000079 RunTest(paris_qcif);
pbos@webrtc.org994d0b72014-06-27 08:47:52 +000080}
81
82TEST_F(FullStackTest, ForemanCifWithoutPacketLoss) {
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +000083 // TODO(pbos): Decide on psnr/ssim thresholds for foreman_cif.
minyue626bc952016-10-31 05:47:02 -070084 VideoQualityTest::Params foreman_cif;
85 foreman_cif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -070086 foreman_cif.video = {true, 352, 288, 30, 700000, 700000, 700000, false,
87 "VP8", 1, 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -070088 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0", 0.0, 0.0,
89 kFullStackTestDurationSecs};
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +000090 RunTest(foreman_cif);
pbos@webrtc.org994d0b72014-06-27 08:47:52 +000091}
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000092
asaperssonfb6ad3b2016-12-16 06:54:01 -080093TEST_F(FullStackTest, ForemanCif30kbpsWithoutPacketLoss) {
94 VideoQualityTest::Params foreman_cif;
95 foreman_cif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -070096 foreman_cif.video = {true, 352, 288, 10, 30000, 30000, 30000, false,
97 "VP8", 1, 0, 0, false, false, "foreman_cif"};
asaperssonfb6ad3b2016-12-16 06:54:01 -080098 foreman_cif.analyzer = {"foreman_cif_30kbps_net_delay_0_0_plr_0", 0.0, 0.0,
99 kFullStackTestDurationSecs};
100 RunTest(foreman_cif);
101}
102
sprang@webrtc.org343096a2015-02-23 08:34:17 +0000103TEST_F(FullStackTest, ForemanCifPlr5) {
minyue626bc952016-10-31 05:47:02 -0700104 VideoQualityTest::Params foreman_cif;
105 foreman_cif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700106 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
107 "VP8", 1, 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700108 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5", 0.0, 0.0,
109 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700110 foreman_cif.pipe.loss_percent = 5;
111 foreman_cif.pipe.queue_delay_ms = 50;
stefan@webrtc.orgc216b9a2014-10-14 10:38:49 +0000112 RunTest(foreman_cif);
113}
114
brandtr93c5d032016-11-30 07:50:07 -0800115TEST_F(FullStackTest, ForemanCifPlr5Ulpfec) {
116 VideoQualityTest::Params foreman_cif;
117 foreman_cif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700118 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
119 "VP8", 1, 0, 0, true, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800120 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_ulpfec", 0.0, 0.0,
121 kFullStackTestDurationSecs};
122 foreman_cif.pipe.loss_percent = 5;
123 foreman_cif.pipe.queue_delay_ms = 50;
124 RunTest(foreman_cif);
125}
126
127TEST_F(FullStackTest, ForemanCifPlr5Flexfec) {
128 VideoQualityTest::Params foreman_cif;
129 foreman_cif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700130 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
131 "VP8", 1, 0, 0, false, true, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800132 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_flexfec", 0.0, 0.0,
133 kFullStackTestDurationSecs};
134 foreman_cif.pipe.loss_percent = 5;
135 foreman_cif.pipe.queue_delay_ms = 50;
136 RunTest(foreman_cif);
137}
138
stefan889d9652017-07-05 03:03:02 -0700139TEST_F(FullStackTest, ForemanCif500kbpsPlr3Flexfec) {
140 VideoQualityTest::Params foreman_cif;
141 foreman_cif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700142 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
143 "VP8", 1, 0, 0, false, true, "foreman_cif"};
stefan889d9652017-07-05 03:03:02 -0700144 foreman_cif.analyzer = {"foreman_cif_500kbps_delay_50_0_plr_3_flexfec", 0.0,
145 0.0, kFullStackTestDurationSecs};
146 foreman_cif.pipe.loss_percent = 3;
147 foreman_cif.pipe.link_capacity_kbps = 500;
148 foreman_cif.pipe.queue_delay_ms = 50;
149 RunTest(foreman_cif);
150}
151
152TEST_F(FullStackTest, ForemanCif500kbpsPlr3Ulpfec) {
153 VideoQualityTest::Params foreman_cif;
154 foreman_cif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700155 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
156 "VP8", 1, 0, 0, true, false, "foreman_cif"};
stefan889d9652017-07-05 03:03:02 -0700157 foreman_cif.analyzer = {"foreman_cif_500kbps_delay_50_0_plr_3_ulpfec", 0.0,
158 0.0, kFullStackTestDurationSecs};
159 foreman_cif.pipe.loss_percent = 3;
160 foreman_cif.pipe.link_capacity_kbps = 500;
161 foreman_cif.pipe.queue_delay_ms = 50;
162 RunTest(foreman_cif);
163}
164
brandtrdd369c62016-11-16 23:56:57 -0800165#if defined(WEBRTC_USE_H264)
166TEST_F(FullStackTest, ForemanCifWithoutPacketlossH264) {
brandtr93c5d032016-11-30 07:50:07 -0800167 // TODO(pbos): Decide on psnr/ssim thresholds for foreman_cif.
168 VideoQualityTest::Params foreman_cif;
169 foreman_cif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700170 foreman_cif.video = {true, 352, 288, 30, 700000,
171 700000, 700000, false, "H264", 1,
172 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800173 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0_H264", 0.0, 0.0,
174 kFullStackTestDurationSecs};
175 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800176}
177
asaperssonfb6ad3b2016-12-16 06:54:01 -0800178TEST_F(FullStackTest, ForemanCif30kbpsWithoutPacketlossH264) {
179 VideoQualityTest::Params foreman_cif;
180 foreman_cif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700181 foreman_cif.video = {true, 352, 288, 10, 30000, 30000, 30000, false,
182 "H264", 1, 0, 0, false, false, "foreman_cif"};
asaperssonfb6ad3b2016-12-16 06:54:01 -0800183 foreman_cif.analyzer = {"foreman_cif_30kbps_net_delay_0_0_plr_0_H264", 0.0,
184 0.0, kFullStackTestDurationSecs};
185 RunTest(foreman_cif);
186}
187
brandtrdd369c62016-11-16 23:56:57 -0800188TEST_F(FullStackTest, ForemanCifPlr5H264) {
brandtr93c5d032016-11-30 07:50:07 -0800189 VideoQualityTest::Params foreman_cif;
190 foreman_cif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700191 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
192 "H264", 1, 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800193 std::string fec_description;
194 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264", 0.0, 0.0,
195 kFullStackTestDurationSecs};
196 foreman_cif.pipe.loss_percent = 5;
197 foreman_cif.pipe.queue_delay_ms = 50;
198 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800199}
200
201// Verify that this is worth the bot time, before enabling.
202TEST_F(FullStackTest, ForemanCifPlr5H264Flexfec) {
brandtr93c5d032016-11-30 07:50:07 -0800203 VideoQualityTest::Params foreman_cif;
204 foreman_cif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700205 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
206 "H264", 1, 0, 0, false, true, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800207 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264_flexfec", 0.0, 0.0,
208 kFullStackTestDurationSecs};
209 foreman_cif.pipe.loss_percent = 5;
210 foreman_cif.pipe.queue_delay_ms = 50;
211 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800212}
213
214// Ulpfec with H264 is an unsupported combination, so this test is only useful
215// for debugging. It is therefore disabled by default.
216TEST_F(FullStackTest, DISABLED_ForemanCifPlr5H264Ulpfec) {
brandtr93c5d032016-11-30 07:50:07 -0800217 VideoQualityTest::Params foreman_cif;
218 foreman_cif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700219 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
220 "H264", 1, 0, 0, true, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800221 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264_ulpfec", 0.0, 0.0,
222 kFullStackTestDurationSecs};
223 foreman_cif.pipe.loss_percent = 5;
224 foreman_cif.pipe.queue_delay_ms = 50;
225 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800226}
227#endif // defined(WEBRTC_USE_H264)
228
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000229TEST_F(FullStackTest, ForemanCif500kbps) {
minyue626bc952016-10-31 05:47:02 -0700230 VideoQualityTest::Params foreman_cif;
231 foreman_cif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700232 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
233 "VP8", 1, 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700234 foreman_cif.analyzer = {"foreman_cif_500kbps", 0.0, 0.0,
235 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700236 foreman_cif.pipe.queue_length_packets = 0;
237 foreman_cif.pipe.queue_delay_ms = 0;
238 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000239 RunTest(foreman_cif);
240}
241
242TEST_F(FullStackTest, ForemanCif500kbpsLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700243 VideoQualityTest::Params foreman_cif;
244 foreman_cif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700245 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
246 "VP8", 1, 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700247 foreman_cif.analyzer = {"foreman_cif_500kbps_32pkts_queue", 0.0, 0.0,
248 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700249 foreman_cif.pipe.queue_length_packets = 32;
250 foreman_cif.pipe.queue_delay_ms = 0;
251 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000252 RunTest(foreman_cif);
253}
254
255TEST_F(FullStackTest, ForemanCif500kbps100ms) {
minyue626bc952016-10-31 05:47:02 -0700256 VideoQualityTest::Params foreman_cif;
257 foreman_cif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700258 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
259 "VP8", 1, 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700260 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms", 0.0, 0.0,
261 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700262 foreman_cif.pipe.queue_length_packets = 0;
263 foreman_cif.pipe.queue_delay_ms = 100;
264 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000265 RunTest(foreman_cif);
266}
267
268TEST_F(FullStackTest, ForemanCif500kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700269 VideoQualityTest::Params foreman_cif;
270 foreman_cif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700271 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
272 "VP8", 1, 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700273 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms_32pkts_queue", 0.0, 0.0,
274 kFullStackTestDurationSecs};
stefanb1797672016-08-11 07:00:57 -0700275 foreman_cif.pipe.queue_length_packets = 32;
276 foreman_cif.pipe.queue_delay_ms = 100;
277 foreman_cif.pipe.link_capacity_kbps = 500;
278 RunTest(foreman_cif);
279}
280
281TEST_F(FullStackTest, ForemanCif500kbps100msLimitedQueueRecvBwe) {
minyue626bc952016-10-31 05:47:02 -0700282 VideoQualityTest::Params foreman_cif;
brandtr93c5d032016-11-30 07:50:07 -0800283 foreman_cif.call.send_side_bwe = false;
ilnik98436952017-07-13 00:47:03 -0700284 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
285 "VP8", 1, 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800286 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms_32pkts_queue_recv_bwe",
287 0.0, 0.0, kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700288 foreman_cif.pipe.queue_length_packets = 32;
289 foreman_cif.pipe.queue_delay_ms = 100;
290 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000291 RunTest(foreman_cif);
292}
293
294TEST_F(FullStackTest, ForemanCif1000kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700295 VideoQualityTest::Params foreman_cif;
296 foreman_cif.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700297 foreman_cif.video = {true, 352, 288, 30, 30000, 2000000, 2000000, false,
298 "VP8", 1, 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700299 foreman_cif.analyzer = {"foreman_cif_1000kbps_100ms_32pkts_queue", 0.0, 0.0,
300 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700301 foreman_cif.pipe.queue_length_packets = 32;
302 foreman_cif.pipe.queue_delay_ms = 100;
303 foreman_cif.pipe.link_capacity_kbps = 1000;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000304 RunTest(foreman_cif);
305}
sprang@webrtc.org131bea82015-02-18 12:46:06 +0000306
stefanb1797672016-08-11 07:00:57 -0700307TEST_F(FullStackTest, ConferenceMotionHd2000kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700308 VideoQualityTest::Params conf_motion_hd;
309 conf_motion_hd.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700310 conf_motion_hd.video = {
311 true, 1280, 720, 50, 30000,
312 3000000, 3000000, false, "VP8", 1,
313 0, 0, false, false, "ConferenceMotion_1280_720_50"};
minyue626bc952016-10-31 05:47:02 -0700314 conf_motion_hd.analyzer = {"conference_motion_hd_2000kbps_100ms_32pkts_queue",
315 0.0, 0.0, kFullStackTestDurationSecs};
stefanb1797672016-08-11 07:00:57 -0700316 conf_motion_hd.pipe.queue_length_packets = 32;
317 conf_motion_hd.pipe.queue_delay_ms = 100;
318 conf_motion_hd.pipe.link_capacity_kbps = 2000;
319 RunTest(conf_motion_hd);
320}
321
jianj390e64d2017-02-03 09:51:23 -0800322#if !defined(RTC_DISABLE_VP9)
323TEST_F(FullStackTest, ConferenceMotionHd2000kbps100msLimitedQueueVP9) {
324 VideoQualityTest::Params conf_motion_hd;
325 conf_motion_hd.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700326 conf_motion_hd.video = {
327 true, 1280, 720, 50, 30000,
328 3000000, 3000000, false, "VP9", 1,
329 0, 0, false, false, "ConferenceMotion_1280_720_50"};
jianj390e64d2017-02-03 09:51:23 -0800330 conf_motion_hd.analyzer = {
331 "conference_motion_hd_2000kbps_100ms_32pkts_queue_vp9", 0.0, 0.0,
332 kFullStackTestDurationSecs};
333 conf_motion_hd.pipe.queue_length_packets = 32;
334 conf_motion_hd.pipe.queue_delay_ms = 100;
335 conf_motion_hd.pipe.link_capacity_kbps = 2000;
336 RunTest(conf_motion_hd);
337}
338#endif
339
ivica7bd242e2015-10-06 02:04:06 -0700340TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL) {
minyue626bc952016-10-31 05:47:02 -0700341 VideoQualityTest::Params screenshare;
342 screenshare.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700343 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
344 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700345 screenshare.screenshare = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700346 screenshare.analyzer = {"screenshare_slides", 0.0, 0.0,
347 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700348 RunTest(screenshare);
Erik SprĂ¥ng6ee69aa2015-09-03 15:58:05 +0200349}
350
ilnikcb8c1462017-03-09 09:23:30 -0800351TEST_F(FullStackTest, ScreenshareSlidesVP8_3TL_Simulcast) {
sprang89c4a7e2017-06-30 13:27:40 -0700352 test::ScopedFieldTrials field_trial(kScreenshareSimulcastExperiment);
ilnikcb8c1462017-03-09 09:23:30 -0800353 VideoQualityTest::Params screenshare;
354 screenshare.call.send_side_bwe = true;
erikvarga579de6f2017-08-29 09:12:57 -0700355 screenshare.screenshare = {true, false, 10};
ilnik98436952017-07-13 00:47:03 -0700356 screenshare.video = {true, 1850, 1110, 5, 800000,
357 2500000, 2500000, false, "VP8", 3,
358 2, 400000, false, false, ""};
ilnikcb8c1462017-03-09 09:23:30 -0800359 screenshare.analyzer = {"screenshare_slides_simulcast", 0.0, 0.0,
360 kFullStackTestDurationSecs};
361 VideoQualityTest::Params screenshare_params_high;
ilnik98436952017-07-13 00:47:03 -0700362 screenshare_params_high.video = {true, 1850, 1110, 5, 800000,
363 2500000, 2500000, false, "VP8", 3,
364 0, 400000, false, false, ""};
ilnikcb8c1462017-03-09 09:23:30 -0800365 VideoQualityTest::Params screenshare_params_low;
ilnik98436952017-07-13 00:47:03 -0700366 screenshare_params_low.video = {true, 1850, 1110, 5, 50000,
367 200000, 2000000, false, "VP8", 2,
368 0, 400000, false, false, ""};
ilnikcb8c1462017-03-09 09:23:30 -0800369
370 std::vector<VideoStream> streams = {
371 DefaultVideoStream(screenshare_params_low),
372 DefaultVideoStream(screenshare_params_high)};
ilnik6b826ef2017-06-16 06:53:48 -0700373 screenshare.ss = {streams, 1, 1, 0, std::vector<SpatialLayer>(), false};
ilnikcb8c1462017-03-09 09:23:30 -0800374 RunTest(screenshare);
375}
376
ivica7bd242e2015-10-06 02:04:06 -0700377TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_Scroll) {
minyue626bc952016-10-31 05:47:02 -0700378 VideoQualityTest::Params config;
379 config.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700380 config.video = {true, 1850, 1110 / 2, 5, 50000, 200000, 2000000, false,
381 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700382 config.screenshare = {true, false, 10, 2};
minyue626bc952016-10-31 05:47:02 -0700383 config.analyzer = {"screenshare_slides_scrolling", 0.0, 0.0,
384 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700385 RunTest(config);
ivica028cf482015-07-30 02:15:56 -0700386}
387
sprangee37de32015-11-23 06:10:23 -0800388TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNet) {
minyue626bc952016-10-31 05:47:02 -0700389 VideoQualityTest::Params screenshare;
390 screenshare.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700391 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
392 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700393 screenshare.screenshare = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700394 screenshare.analyzer = {"screenshare_slides_lossy_net", 0.0, 0.0,
395 kFullStackTestDurationSecs};
sprangee37de32015-11-23 06:10:23 -0800396 screenshare.pipe.loss_percent = 5;
397 screenshare.pipe.queue_delay_ms = 200;
398 screenshare.pipe.link_capacity_kbps = 500;
399 RunTest(screenshare);
400}
401
402TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_VeryLossyNet) {
minyue626bc952016-10-31 05:47:02 -0700403 VideoQualityTest::Params screenshare;
404 screenshare.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700405 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
406 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700407 screenshare.screenshare = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700408 screenshare.analyzer = {"screenshare_slides_very_lossy", 0.0, 0.0,
409 kFullStackTestDurationSecs};
sprangee37de32015-11-23 06:10:23 -0800410 screenshare.pipe.loss_percent = 10;
411 screenshare.pipe.queue_delay_ms = 200;
412 screenshare.pipe.link_capacity_kbps = 500;
413 RunTest(screenshare);
414}
415
sprange566e172017-06-08 01:29:15 -0700416TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNetRestrictedQueue) {
417 VideoQualityTest::Params screenshare;
418 screenshare.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700419 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
420 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700421 screenshare.screenshare = {true, false, 10};
sprange566e172017-06-08 01:29:15 -0700422 screenshare.analyzer = {"screenshare_slides_lossy_limited", 0.0, 0.0,
423 kFullStackTestDurationSecs};
424 screenshare.pipe.loss_percent = 5;
425 screenshare.pipe.link_capacity_kbps = 200;
426 screenshare.pipe.queue_length_packets = 30;
427
428 RunTest(screenshare);
429}
430
sprang89c4a7e2017-06-30 13:27:40 -0700431TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ModeratelyRestricted) {
432 VideoQualityTest::Params screenshare;
433 screenshare.call.send_side_bwe = true;
434 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
ilnik98436952017-07-13 00:47:03 -0700435 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700436 screenshare.screenshare = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700437 screenshare.analyzer = {"screenshare_slides_moderately_restricted", 0.0, 0.0,
438 kFullStackTestDurationSecs};
439 screenshare.pipe.loss_percent = 1;
440 screenshare.pipe.link_capacity_kbps = 1200;
441 screenshare.pipe.queue_length_packets = 30;
442
443 RunTest(screenshare);
444}
445
446// TODO(sprang): Retire these tests once experiment is removed.
447TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNetRestrictedQueue_ALR) {
448 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
449 VideoQualityTest::Params screenshare;
450 screenshare.call.send_side_bwe = true;
451 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
ilnik98436952017-07-13 00:47:03 -0700452 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700453 screenshare.screenshare = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700454 screenshare.analyzer = {"screenshare_slides_lossy_limited_ALR", 0.0, 0.0,
455 kFullStackTestDurationSecs};
456 screenshare.pipe.loss_percent = 5;
457 screenshare.pipe.link_capacity_kbps = 200;
458 screenshare.pipe.queue_length_packets = 30;
459
460 RunTest(screenshare);
461}
462
463TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ALR) {
464 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
465 VideoQualityTest::Params screenshare;
466 screenshare.call.send_side_bwe = true;
467 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
ilnik98436952017-07-13 00:47:03 -0700468 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700469 screenshare.screenshare = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700470 screenshare.analyzer = {"screenshare_slides_ALR", 0.0, 0.0,
471 kFullStackTestDurationSecs};
472 RunTest(screenshare);
473}
474
475TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ModeratelyRestricted_ALR) {
476 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
477 VideoQualityTest::Params screenshare;
478 screenshare.call.send_side_bwe = true;
479 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
ilnik98436952017-07-13 00:47:03 -0700480 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700481 screenshare.screenshare = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700482 screenshare.analyzer = {"screenshare_slides_moderately_restricted_ALR", 0.0,
483 0.0, kFullStackTestDurationSecs};
484 screenshare.pipe.loss_percent = 1;
485 screenshare.pipe.link_capacity_kbps = 1200;
486 screenshare.pipe.queue_length_packets = 30;
487
488 RunTest(screenshare);
489}
490
491TEST_F(FullStackTest, ScreenshareSlidesVP8_3TL_Simulcast_ALR) {
492 test::ScopedFieldTrials field_trial(kScreenshareSimulcastExperiment +
493 kAlrProbingExperiment);
494 VideoQualityTest::Params screenshare;
495 screenshare.call.send_side_bwe = true;
erikvarga579de6f2017-08-29 09:12:57 -0700496 screenshare.screenshare = {true, false, 10};
ilnik98436952017-07-13 00:47:03 -0700497 screenshare.video = {true, 1850, 1110, 5, 800000,
498 2500000, 2500000, false, "VP8", 3,
499 2, 400000, false, false, ""};
sprang89c4a7e2017-06-30 13:27:40 -0700500 screenshare.analyzer = {"screenshare_slides_simulcast_alr", 0.0, 0.0,
501 kFullStackTestDurationSecs};
502 VideoQualityTest::Params screenshare_params_high;
ilnik98436952017-07-13 00:47:03 -0700503 screenshare_params_high.video = {true, 1850, 1110, 5, 800000,
504 2500000, 2500000, false, "VP8", 3,
505 0, 400000, false, false, ""};
sprang89c4a7e2017-06-30 13:27:40 -0700506 VideoQualityTest::Params screenshare_params_low;
ilnik98436952017-07-13 00:47:03 -0700507 screenshare_params_low.video = {true, 1850, 1110, 5, 50000,
508 200000, 2000000, false, "VP8", 2,
509 0, 400000, false, false, ""};
sprang89c4a7e2017-06-30 13:27:40 -0700510
511 std::vector<VideoStream> streams = {
512 DefaultVideoStream(screenshare_params_low),
513 DefaultVideoStream(screenshare_params_high)};
514 screenshare.ss = {streams, 1, 1, 0, std::vector<SpatialLayer>(), false};
515 RunTest(screenshare);
516}
517
ilnik566c43b2017-03-07 04:42:54 -0800518const VideoQualityTest::Params::Video kSvcVp9Video = {
ilnik98436952017-07-13 00:47:03 -0700519 true, 1280, 720, 30, 800000,
520 2500000, 2500000, false, "VP9", 3,
521 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800522
523const VideoQualityTest::Params::Video kSimulcastVp8VideoHigh = {
ilnik98436952017-07-13 00:47:03 -0700524 true, 1280, 720, 30, 800000,
525 2500000, 2500000, false, "VP8", 3,
526 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800527
528const VideoQualityTest::Params::Video kSimulcastVp8VideoMedium = {
ilnik98436952017-07-13 00:47:03 -0700529 true, 640, 360, 30, 150000,
530 500000, 700000, false, "VP8", 3,
531 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800532
533const VideoQualityTest::Params::Video kSimulcastVp8VideoLow = {
ilnik98436952017-07-13 00:47:03 -0700534 true, 320, 180, 30, 30000,
535 150000, 200000, false, "VP8", 3,
536 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800537
Peter Boström12996152016-05-14 02:03:18 +0200538#if !defined(RTC_DISABLE_VP9)
marpan5f4aaeb2017-04-06 10:52:23 -0700539TEST_F(FullStackTest, ScreenshareSlidesVP9_2SL) {
minyue626bc952016-10-31 05:47:02 -0700540 VideoQualityTest::Params screenshare;
541 screenshare.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700542 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
543 "VP9", 1, 0, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700544 screenshare.screenshare = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700545 screenshare.analyzer = {"screenshare_slides_vp9_2sl", 0.0, 0.0,
546 kFullStackTestDurationSecs};
ilnik6b826ef2017-06-16 06:53:48 -0700547 screenshare.ss = {std::vector<VideoStream>(), 0, 2, 1,
548 std::vector<SpatialLayer>(), false};
ivica5d6a06c2015-09-17 05:30:24 -0700549 RunTest(screenshare);
sprang@webrtc.org131bea82015-02-18 12:46:06 +0000550}
ilnik2a8c2f52017-02-15 02:23:28 -0800551
552TEST_F(FullStackTest, VP9SVC_3SL_High) {
553 VideoQualityTest::Params simulcast;
554 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800555 simulcast.video = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800556 simulcast.analyzer = {"vp9svc_3sl_high", 0.0, 0.0,
557 kFullStackTestDurationSecs};
ilnik6b826ef2017-06-16 06:53:48 -0700558 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 2,
559 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800560 RunTest(simulcast);
561}
562
563TEST_F(FullStackTest, VP9SVC_3SL_Medium) {
564 VideoQualityTest::Params simulcast;
565 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800566 simulcast.video = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800567 simulcast.analyzer = {"vp9svc_3sl_medium", 0.0, 0.0,
568 kFullStackTestDurationSecs};
ilnik6b826ef2017-06-16 06:53:48 -0700569 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 1,
570 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800571 RunTest(simulcast);
572}
573
574TEST_F(FullStackTest, VP9SVC_3SL_Low) {
575 VideoQualityTest::Params simulcast;
576 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800577 simulcast.video = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800578 simulcast.analyzer = {"vp9svc_3sl_low", 0.0, 0.0, kFullStackTestDurationSecs};
ilnik6b826ef2017-06-16 06:53:48 -0700579 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 0,
580 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800581 RunTest(simulcast);
582}
Peter Boström12996152016-05-14 02:03:18 +0200583#endif // !defined(RTC_DISABLE_VP9)
brandtr93c5d032016-11-30 07:50:07 -0800584
ilnik6b826ef2017-06-16 06:53:48 -0700585// Android bots can't handle FullHD, so disable the test.
ilnik267041c2017-06-27 07:21:01 -0700586#if defined(WEBRTC_ANDROID)
ilnik6b826ef2017-06-16 06:53:48 -0700587#define MAYBE_SimulcastFullHdOveruse DISABLED_SimulcastFullHdOveruse
588#else
589#define MAYBE_SimulcastFullHdOveruse SimulcastFullHdOveruse
590#endif
591
592TEST_F(FullStackTest, MAYBE_SimulcastFullHdOveruse) {
593 VideoQualityTest::Params simulcast;
594 simulcast.call.send_side_bwe = true;
ilnik98436952017-07-13 00:47:03 -0700595 simulcast.video = {true, 1920, 1080, 30, 800000,
596 2500000, 2500000, false, "VP8", 3,
597 2, 400000, false, false, "Generator"};
ilnik6b826ef2017-06-16 06:53:48 -0700598 simulcast.analyzer = {"simulcast_HD_high", 0.0, 0.0,
599 kFullStackTestDurationSecs};
600 simulcast.pipe.loss_percent = 0;
601 simulcast.pipe.queue_delay_ms = 100;
602 std::vector<VideoStream> streams = {DefaultVideoStream(simulcast),
603 DefaultVideoStream(simulcast),
604 DefaultVideoStream(simulcast)};
605 simulcast.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), true};
606 webrtc::test::ScopedFieldTrials override_trials(
607 "WebRTC-ForceSimulatedOveruseIntervalMs/1000-50000-300/");
608 RunTest(simulcast);
609}
610
ilnik3dd5ad92017-02-09 04:58:53 -0800611TEST_F(FullStackTest, SimulcastVP8_3SL_High) {
612 VideoQualityTest::Params simulcast;
613 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800614 simulcast.video = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800615 simulcast.analyzer = {"simulcast_vp8_3sl_high", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800616 kFullStackTestDurationSecs};
617 simulcast.pipe.loss_percent = 0;
618 simulcast.pipe.queue_delay_ms = 100;
619 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800620 video_params_high.video = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800621 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800622 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800623 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800624 video_params_low.video = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800625
626 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
627 DefaultVideoStream(video_params_medium),
628 DefaultVideoStream(video_params_high)};
ilnik6b826ef2017-06-16 06:53:48 -0700629 simulcast.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnik3dd5ad92017-02-09 04:58:53 -0800630 RunTest(simulcast);
631}
632
633TEST_F(FullStackTest, SimulcastVP8_3SL_Medium) {
634 VideoQualityTest::Params simulcast;
635 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800636 simulcast.video = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800637 simulcast.analyzer = {"simulcast_vp8_3sl_medium", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800638 kFullStackTestDurationSecs};
639 simulcast.pipe.loss_percent = 0;
640 simulcast.pipe.queue_delay_ms = 100;
641 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800642 video_params_high.video = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800643 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800644 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800645 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800646 video_params_low.video = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800647
648 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
649 DefaultVideoStream(video_params_medium),
650 DefaultVideoStream(video_params_high)};
ilnik6b826ef2017-06-16 06:53:48 -0700651 simulcast.ss = {streams, 1, 1, 0, std::vector<SpatialLayer>(), false};
ilnik3dd5ad92017-02-09 04:58:53 -0800652 RunTest(simulcast);
653}
654
655TEST_F(FullStackTest, SimulcastVP8_3SL_Low) {
656 VideoQualityTest::Params simulcast;
657 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800658 simulcast.video = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800659 simulcast.analyzer = {"simulcast_vp8_3sl_low", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800660 kFullStackTestDurationSecs};
661 simulcast.pipe.loss_percent = 0;
662 simulcast.pipe.queue_delay_ms = 100;
663 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800664 video_params_high.video = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800665 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800666 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800667 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800668 video_params_low.video = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800669
670 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
671 DefaultVideoStream(video_params_medium),
672 DefaultVideoStream(video_params_high)};
ilnik6b826ef2017-06-16 06:53:48 -0700673 simulcast.ss = {streams, 0, 1, 0, std::vector<SpatialLayer>(), false};
ilnik3dd5ad92017-02-09 04:58:53 -0800674 RunTest(simulcast);
675}
676
ilnika014cc52017-03-07 04:21:04 -0800677TEST_F(FullStackTest, LargeRoomVP8_5thumb) {
678 VideoQualityTest::Params large_room;
679 large_room.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800680 large_room.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800681 large_room.analyzer = {"largeroom_5thumb", 0.0, 0.0,
682 kFullStackTestDurationSecs};
683 large_room.pipe.loss_percent = 0;
684 large_room.pipe.queue_delay_ms = 100;
685 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800686 video_params_high.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800687 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800688 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800689 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800690 video_params_low.video = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800691
692 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
693 DefaultVideoStream(video_params_medium),
694 DefaultVideoStream(video_params_high)};
ilnik98436952017-07-13 00:47:03 -0700695 large_room.call.num_thumbnails = 5;
ilnik6b826ef2017-06-16 06:53:48 -0700696 large_room.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnika014cc52017-03-07 04:21:04 -0800697 RunTest(large_room);
698}
699
ilnikbaded152017-03-17 05:55:25 -0700700#if defined(WEBRTC_ANDROID)
701// Fails on Android:
ilnikf89a7382017-03-07 06:15:27 -0800702// https://bugs.chromium.org/p/webrtc/issues/detail?id=7301
703#define MAYBE_LargeRoomVP8_50thumb DISABLED_LargeRoomVP8_50thumb
ilnik3ae7c252017-03-08 01:17:35 -0800704#define MAYBE_LargeRoomVP8_15thumb DISABLED_LargeRoomVP8_15thumb
ilnikf89a7382017-03-07 06:15:27 -0800705#else
706#define MAYBE_LargeRoomVP8_50thumb LargeRoomVP8_50thumb
ilnik3ae7c252017-03-08 01:17:35 -0800707#define MAYBE_LargeRoomVP8_15thumb LargeRoomVP8_15thumb
ilnikf89a7382017-03-07 06:15:27 -0800708#endif
709
710TEST_F(FullStackTest, MAYBE_LargeRoomVP8_15thumb) {
ilnika014cc52017-03-07 04:21:04 -0800711 VideoQualityTest::Params large_room;
712 large_room.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800713 large_room.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800714 large_room.analyzer = {"largeroom_15thumb", 0.0, 0.0,
715 kFullStackTestDurationSecs};
716 large_room.pipe.loss_percent = 0;
717 large_room.pipe.queue_delay_ms = 100;
718 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800719 video_params_high.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800720 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800721 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800722 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800723 video_params_low.video = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800724
725 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
726 DefaultVideoStream(video_params_medium),
727 DefaultVideoStream(video_params_high)};
ilnik98436952017-07-13 00:47:03 -0700728 large_room.call.num_thumbnails = 15;
ilnik6b826ef2017-06-16 06:53:48 -0700729 large_room.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnika014cc52017-03-07 04:21:04 -0800730 RunTest(large_room);
731}
732
ilnika014cc52017-03-07 04:21:04 -0800733TEST_F(FullStackTest, MAYBE_LargeRoomVP8_50thumb) {
734 VideoQualityTest::Params large_room;
735 large_room.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800736 large_room.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800737 large_room.analyzer = {"largeroom_50thumb", 0.0, 0.0,
738 kFullStackTestDurationSecs};
739 large_room.pipe.loss_percent = 0;
740 large_room.pipe.queue_delay_ms = 100;
741 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800742 video_params_high.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800743 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800744 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800745 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800746 video_params_low.video = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800747
748 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
749 DefaultVideoStream(video_params_medium),
750 DefaultVideoStream(video_params_high)};
ilnik98436952017-07-13 00:47:03 -0700751 large_room.call.num_thumbnails = 50;
ilnik6b826ef2017-06-16 06:53:48 -0700752 large_room.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnika014cc52017-03-07 04:21:04 -0800753 RunTest(large_room);
754}
755
756
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +0000757} // namespace webrtc