blob: 4a7334fe1ea2291207e573c7b75d33df4a245395 [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) +
34 "/1.1-2875-80-90/";
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;
52 foreman_cif.video = {true, 352, 288, 30, 700000, 700000, 700000, false,
53 "VP9", 1, 0, 0, false, false, "", "foreman_cif"};
54 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;
62 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
63 "VP9", 1, 0, 0, false, false, "", "foreman_cif"};
64 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;
75 paris_qcif.video = {true, 176, 144, 30, 300000, 300000, 300000, false,
brandtr1293aca2016-11-16 22:47:29 -080076 "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;
86 foreman_cif.video = {true, 352, 288, 30, 700000, 700000, 700000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -080087 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;
96 foreman_cif.video = {true, 352, 288, 10, 30000, 30000, 30000, false,
97 "VP8", 1, 0, 0, false, false, "", "foreman_cif"};
98 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;
106 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -0800107 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;
118 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
119 1, 0, 0, true, false, "", "foreman_cif"};
120 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;
130 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
131 1, 0, 0, false, true, "", "foreman_cif"};
132 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
brandtrdd369c62016-11-16 23:56:57 -0800139#if defined(WEBRTC_USE_H264)
140TEST_F(FullStackTest, ForemanCifWithoutPacketlossH264) {
brandtr93c5d032016-11-30 07:50:07 -0800141 // TODO(pbos): Decide on psnr/ssim thresholds for foreman_cif.
142 VideoQualityTest::Params foreman_cif;
143 foreman_cif.call.send_side_bwe = true;
144 foreman_cif.video = {true, 352, 288, 30, 700000, 700000, 700000, false,
145 "H264", 1, 0, 0, false, false, "", "foreman_cif"};
146 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0_H264", 0.0, 0.0,
147 kFullStackTestDurationSecs};
148 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800149}
150
asaperssonfb6ad3b2016-12-16 06:54:01 -0800151TEST_F(FullStackTest, ForemanCif30kbpsWithoutPacketlossH264) {
152 VideoQualityTest::Params foreman_cif;
153 foreman_cif.call.send_side_bwe = true;
154 foreman_cif.video = {true, 352, 288, 10, 30000, 30000, 30000, false, "H264",
155 1, 0, 0, false, false, "", "foreman_cif"};
156 foreman_cif.analyzer = {"foreman_cif_30kbps_net_delay_0_0_plr_0_H264", 0.0,
157 0.0, kFullStackTestDurationSecs};
158 RunTest(foreman_cif);
159}
160
brandtrdd369c62016-11-16 23:56:57 -0800161TEST_F(FullStackTest, ForemanCifPlr5H264) {
brandtr93c5d032016-11-30 07:50:07 -0800162 VideoQualityTest::Params foreman_cif;
163 foreman_cif.call.send_side_bwe = true;
164 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
165 "H264", 1, 0, 0, false, false, "", "foreman_cif"};
166 std::string fec_description;
167 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264", 0.0, 0.0,
168 kFullStackTestDurationSecs};
169 foreman_cif.pipe.loss_percent = 5;
170 foreman_cif.pipe.queue_delay_ms = 50;
171 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800172}
173
174// Verify that this is worth the bot time, before enabling.
175TEST_F(FullStackTest, ForemanCifPlr5H264Flexfec) {
brandtr93c5d032016-11-30 07:50:07 -0800176 VideoQualityTest::Params foreman_cif;
177 foreman_cif.call.send_side_bwe = true;
178 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
179 "H264", 1, 0, 0, false, true, "", "foreman_cif"};
180 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264_flexfec", 0.0, 0.0,
181 kFullStackTestDurationSecs};
182 foreman_cif.pipe.loss_percent = 5;
183 foreman_cif.pipe.queue_delay_ms = 50;
184 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800185}
186
187// Ulpfec with H264 is an unsupported combination, so this test is only useful
188// for debugging. It is therefore disabled by default.
189TEST_F(FullStackTest, DISABLED_ForemanCifPlr5H264Ulpfec) {
brandtr93c5d032016-11-30 07:50:07 -0800190 VideoQualityTest::Params foreman_cif;
191 foreman_cif.call.send_side_bwe = true;
192 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
193 "H264", 1, 0, 0, true, false, "", "foreman_cif"};
194 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264_ulpfec", 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#endif // defined(WEBRTC_USE_H264)
201
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000202TEST_F(FullStackTest, ForemanCif500kbps) {
minyue626bc952016-10-31 05:47:02 -0700203 VideoQualityTest::Params foreman_cif;
204 foreman_cif.call.send_side_bwe = true;
205 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -0800206 1, 0, 0, false, false, "", "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700207 foreman_cif.analyzer = {"foreman_cif_500kbps", 0.0, 0.0,
208 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700209 foreman_cif.pipe.queue_length_packets = 0;
210 foreman_cif.pipe.queue_delay_ms = 0;
211 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000212 RunTest(foreman_cif);
213}
214
215TEST_F(FullStackTest, ForemanCif500kbpsLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700216 VideoQualityTest::Params foreman_cif;
217 foreman_cif.call.send_side_bwe = true;
218 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -0800219 1, 0, 0, false, false, "", "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700220 foreman_cif.analyzer = {"foreman_cif_500kbps_32pkts_queue", 0.0, 0.0,
221 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700222 foreman_cif.pipe.queue_length_packets = 32;
223 foreman_cif.pipe.queue_delay_ms = 0;
224 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000225 RunTest(foreman_cif);
226}
227
228TEST_F(FullStackTest, ForemanCif500kbps100ms) {
minyue626bc952016-10-31 05:47:02 -0700229 VideoQualityTest::Params foreman_cif;
230 foreman_cif.call.send_side_bwe = true;
231 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -0800232 1, 0, 0, false, false, "", "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700233 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms", 0.0, 0.0,
234 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700235 foreman_cif.pipe.queue_length_packets = 0;
236 foreman_cif.pipe.queue_delay_ms = 100;
237 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000238 RunTest(foreman_cif);
239}
240
241TEST_F(FullStackTest, ForemanCif500kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700242 VideoQualityTest::Params foreman_cif;
243 foreman_cif.call.send_side_bwe = true;
244 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -0800245 1, 0, 0, false, false, "", "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700246 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms_32pkts_queue", 0.0, 0.0,
247 kFullStackTestDurationSecs};
stefanb1797672016-08-11 07:00:57 -0700248 foreman_cif.pipe.queue_length_packets = 32;
249 foreman_cif.pipe.queue_delay_ms = 100;
250 foreman_cif.pipe.link_capacity_kbps = 500;
251 RunTest(foreman_cif);
252}
253
254TEST_F(FullStackTest, ForemanCif500kbps100msLimitedQueueRecvBwe) {
minyue626bc952016-10-31 05:47:02 -0700255 VideoQualityTest::Params foreman_cif;
brandtr93c5d032016-11-30 07:50:07 -0800256 foreman_cif.call.send_side_bwe = false;
minyue626bc952016-10-31 05:47:02 -0700257 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -0800258 1, 0, 0, false, false, "", "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800259 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms_32pkts_queue_recv_bwe",
260 0.0, 0.0, kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700261 foreman_cif.pipe.queue_length_packets = 32;
262 foreman_cif.pipe.queue_delay_ms = 100;
263 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000264 RunTest(foreman_cif);
265}
266
267TEST_F(FullStackTest, ForemanCif1000kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700268 VideoQualityTest::Params foreman_cif;
269 foreman_cif.call.send_side_bwe = true;
270 foreman_cif.video = {true, 352, 288, 30, 30000, 2000000, 2000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800271 "VP8", 1, 0, 0, false, false, "", "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700272 foreman_cif.analyzer = {"foreman_cif_1000kbps_100ms_32pkts_queue", 0.0, 0.0,
273 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700274 foreman_cif.pipe.queue_length_packets = 32;
275 foreman_cif.pipe.queue_delay_ms = 100;
276 foreman_cif.pipe.link_capacity_kbps = 1000;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000277 RunTest(foreman_cif);
278}
sprang@webrtc.org131bea82015-02-18 12:46:06 +0000279
stefanb1797672016-08-11 07:00:57 -0700280TEST_F(FullStackTest, ConferenceMotionHd2000kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700281 VideoQualityTest::Params conf_motion_hd;
282 conf_motion_hd.call.send_side_bwe = true;
283 conf_motion_hd.video = {true, 1280, 720, 50, 30000, 3000000, 3000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800284 "VP8", 1, 0, 0, false, false, "",
minyue626bc952016-10-31 05:47:02 -0700285 "ConferenceMotion_1280_720_50"};
286 conf_motion_hd.analyzer = {"conference_motion_hd_2000kbps_100ms_32pkts_queue",
287 0.0, 0.0, kFullStackTestDurationSecs};
stefanb1797672016-08-11 07:00:57 -0700288 conf_motion_hd.pipe.queue_length_packets = 32;
289 conf_motion_hd.pipe.queue_delay_ms = 100;
290 conf_motion_hd.pipe.link_capacity_kbps = 2000;
291 RunTest(conf_motion_hd);
292}
293
jianj390e64d2017-02-03 09:51:23 -0800294#if !defined(RTC_DISABLE_VP9)
295TEST_F(FullStackTest, ConferenceMotionHd2000kbps100msLimitedQueueVP9) {
296 VideoQualityTest::Params conf_motion_hd;
297 conf_motion_hd.call.send_side_bwe = true;
298 conf_motion_hd.video = {true, 1280, 720, 50, 30000, 3000000, 3000000, false,
299 "VP9", 1, 0, 0, false, false, "",
300 "ConferenceMotion_1280_720_50"};
301 conf_motion_hd.analyzer = {
302 "conference_motion_hd_2000kbps_100ms_32pkts_queue_vp9", 0.0, 0.0,
303 kFullStackTestDurationSecs};
304 conf_motion_hd.pipe.queue_length_packets = 32;
305 conf_motion_hd.pipe.queue_delay_ms = 100;
306 conf_motion_hd.pipe.link_capacity_kbps = 2000;
307 RunTest(conf_motion_hd);
308}
309#endif
310
ivica7bd242e2015-10-06 02:04:06 -0700311TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL) {
minyue626bc952016-10-31 05:47:02 -0700312 VideoQualityTest::Params screenshare;
313 screenshare.call.send_side_bwe = true;
314 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800315 "VP8", 2, 1, 400000, false, false, "", ""};
minyue626bc952016-10-31 05:47:02 -0700316 screenshare.screenshare = {true, 10};
317 screenshare.analyzer = {"screenshare_slides", 0.0, 0.0,
318 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700319 RunTest(screenshare);
Erik SprĂ¥ng6ee69aa2015-09-03 15:58:05 +0200320}
321
ilnikcb8c1462017-03-09 09:23:30 -0800322TEST_F(FullStackTest, ScreenshareSlidesVP8_3TL_Simulcast) {
sprang89c4a7e2017-06-30 13:27:40 -0700323 test::ScopedFieldTrials field_trial(kScreenshareSimulcastExperiment);
ilnikcb8c1462017-03-09 09:23:30 -0800324 VideoQualityTest::Params screenshare;
325 screenshare.call.send_side_bwe = true;
326 screenshare.screenshare = {true, 10};
327 screenshare.video = {true, 1850, 1110, 5, 800000, 2500000,
328 2500000, false, "VP8", 3, 2, 400000,
329 false, false, "", ""};
330 screenshare.analyzer = {"screenshare_slides_simulcast", 0.0, 0.0,
331 kFullStackTestDurationSecs};
332 VideoQualityTest::Params screenshare_params_high;
333 screenshare_params_high.video = {true, 1850, 1110, 5, 800000, 2500000,
334 2500000, false, "VP8", 3, 0, 400000,
335 false, false, "", ""};
336 VideoQualityTest::Params screenshare_params_low;
337 screenshare_params_low.video = {true, 1850, 1110, 5, 50000, 200000,
338 2000000, false, "VP8", 2, 0, 400000,
339 false, false, "", ""};
340
341 std::vector<VideoStream> streams = {
342 DefaultVideoStream(screenshare_params_low),
343 DefaultVideoStream(screenshare_params_high)};
ilnik6b826ef2017-06-16 06:53:48 -0700344 screenshare.ss = {streams, 1, 1, 0, std::vector<SpatialLayer>(), false};
ilnikcb8c1462017-03-09 09:23:30 -0800345 RunTest(screenshare);
346}
347
ivica7bd242e2015-10-06 02:04:06 -0700348TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_Scroll) {
minyue626bc952016-10-31 05:47:02 -0700349 VideoQualityTest::Params config;
350 config.call.send_side_bwe = true;
351 config.video = {true, 1850, 1110 / 2, 5, 50000, 200000, 2000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800352 "VP8", 2, 1, 400000, false, false, "", ""};
minyue626bc952016-10-31 05:47:02 -0700353 config.screenshare = {true, 10, 2};
354 config.analyzer = {"screenshare_slides_scrolling", 0.0, 0.0,
355 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700356 RunTest(config);
ivica028cf482015-07-30 02:15:56 -0700357}
358
sprangee37de32015-11-23 06:10:23 -0800359TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNet) {
minyue626bc952016-10-31 05:47:02 -0700360 VideoQualityTest::Params screenshare;
361 screenshare.call.send_side_bwe = true;
362 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800363 "VP8", 2, 1, 400000, false, false, "", ""};
minyue626bc952016-10-31 05:47:02 -0700364 screenshare.screenshare = {true, 10};
365 screenshare.analyzer = {"screenshare_slides_lossy_net", 0.0, 0.0,
366 kFullStackTestDurationSecs};
sprangee37de32015-11-23 06:10:23 -0800367 screenshare.pipe.loss_percent = 5;
368 screenshare.pipe.queue_delay_ms = 200;
369 screenshare.pipe.link_capacity_kbps = 500;
370 RunTest(screenshare);
371}
372
373TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_VeryLossyNet) {
minyue626bc952016-10-31 05:47:02 -0700374 VideoQualityTest::Params screenshare;
375 screenshare.call.send_side_bwe = true;
376 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800377 "VP8", 2, 1, 400000, false, false, "", ""};
minyue626bc952016-10-31 05:47:02 -0700378 screenshare.screenshare = {true, 10};
379 screenshare.analyzer = {"screenshare_slides_very_lossy", 0.0, 0.0,
380 kFullStackTestDurationSecs};
sprangee37de32015-11-23 06:10:23 -0800381 screenshare.pipe.loss_percent = 10;
382 screenshare.pipe.queue_delay_ms = 200;
383 screenshare.pipe.link_capacity_kbps = 500;
384 RunTest(screenshare);
385}
386
sprange566e172017-06-08 01:29:15 -0700387TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNetRestrictedQueue) {
388 VideoQualityTest::Params screenshare;
389 screenshare.call.send_side_bwe = true;
390 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
391 "VP8", 2, 1, 400000, false, false, "", ""};
392 screenshare.screenshare = {true, 10};
393 screenshare.analyzer = {"screenshare_slides_lossy_limited", 0.0, 0.0,
394 kFullStackTestDurationSecs};
395 screenshare.pipe.loss_percent = 5;
396 screenshare.pipe.link_capacity_kbps = 200;
397 screenshare.pipe.queue_length_packets = 30;
398
399 RunTest(screenshare);
400}
401
sprang89c4a7e2017-06-30 13:27:40 -0700402TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ModeratelyRestricted) {
403 VideoQualityTest::Params screenshare;
404 screenshare.call.send_side_bwe = true;
405 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
406 "VP8", 2, 1, 400000, false, false, "", ""};
407 screenshare.screenshare = {true, 10};
408 screenshare.analyzer = {"screenshare_slides_moderately_restricted", 0.0, 0.0,
409 kFullStackTestDurationSecs};
410 screenshare.pipe.loss_percent = 1;
411 screenshare.pipe.link_capacity_kbps = 1200;
412 screenshare.pipe.queue_length_packets = 30;
413
414 RunTest(screenshare);
415}
416
417// TODO(sprang): Retire these tests once experiment is removed.
418TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNetRestrictedQueue_ALR) {
419 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
420 VideoQualityTest::Params screenshare;
421 screenshare.call.send_side_bwe = true;
422 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
423 "VP8", 2, 1, 400000, false, false, "", ""};
424 screenshare.screenshare = {true, 10};
425 screenshare.analyzer = {"screenshare_slides_lossy_limited_ALR", 0.0, 0.0,
426 kFullStackTestDurationSecs};
427 screenshare.pipe.loss_percent = 5;
428 screenshare.pipe.link_capacity_kbps = 200;
429 screenshare.pipe.queue_length_packets = 30;
430
431 RunTest(screenshare);
432}
433
434TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ALR) {
435 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
436 VideoQualityTest::Params screenshare;
437 screenshare.call.send_side_bwe = true;
438 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
439 "VP8", 2, 1, 400000, false, false, "", ""};
440 screenshare.screenshare = {true, 10};
441 screenshare.analyzer = {"screenshare_slides_ALR", 0.0, 0.0,
442 kFullStackTestDurationSecs};
443 RunTest(screenshare);
444}
445
446TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ModeratelyRestricted_ALR) {
447 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
448 VideoQualityTest::Params screenshare;
449 screenshare.call.send_side_bwe = true;
450 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
451 "VP8", 2, 1, 400000, false, false, "", ""};
452 screenshare.screenshare = {true, 10};
453 screenshare.analyzer = {"screenshare_slides_moderately_restricted_ALR", 0.0,
454 0.0, kFullStackTestDurationSecs};
455 screenshare.pipe.loss_percent = 1;
456 screenshare.pipe.link_capacity_kbps = 1200;
457 screenshare.pipe.queue_length_packets = 30;
458
459 RunTest(screenshare);
460}
461
462TEST_F(FullStackTest, ScreenshareSlidesVP8_3TL_Simulcast_ALR) {
463 test::ScopedFieldTrials field_trial(kScreenshareSimulcastExperiment +
464 kAlrProbingExperiment);
465 VideoQualityTest::Params screenshare;
466 screenshare.call.send_side_bwe = true;
467 screenshare.screenshare = {true, 10};
468 screenshare.video = {true, 1850, 1110, 5, 800000, 2500000,
469 2500000, false, "VP8", 3, 2, 400000,
470 false, false, "", ""};
471 screenshare.analyzer = {"screenshare_slides_simulcast_alr", 0.0, 0.0,
472 kFullStackTestDurationSecs};
473 VideoQualityTest::Params screenshare_params_high;
474 screenshare_params_high.video = {true, 1850, 1110, 5, 800000, 2500000,
475 2500000, false, "VP8", 3, 0, 400000,
476 false, false, "", ""};
477 VideoQualityTest::Params screenshare_params_low;
478 screenshare_params_low.video = {true, 1850, 1110, 5, 50000, 200000,
479 2000000, false, "VP8", 2, 0, 400000,
480 false, false, "", ""};
481
482 std::vector<VideoStream> streams = {
483 DefaultVideoStream(screenshare_params_low),
484 DefaultVideoStream(screenshare_params_high)};
485 screenshare.ss = {streams, 1, 1, 0, std::vector<SpatialLayer>(), false};
486 RunTest(screenshare);
487}
488
ilnik566c43b2017-03-07 04:42:54 -0800489const VideoQualityTest::Params::Video kSvcVp9Video = {
490 true, 1280, 720, 30,
491 800000, 2500000, 2500000, false,
492 "VP9", 3, 2, 400000,
493 false, false, "", "ConferenceMotion_1280_720_50"};
494
495const VideoQualityTest::Params::Video kSimulcastVp8VideoHigh = {
496 true, 1280, 720, 30,
497 800000, 2500000, 2500000, false,
498 "VP8", 3, 2, 400000,
499 false, false, "", "ConferenceMotion_1280_720_50"};
500
501const VideoQualityTest::Params::Video kSimulcastVp8VideoMedium = {
502 true, 640, 360, 30,
503 150000, 500000, 700000, false,
504 "VP8", 3, 2, 400000,
505 false, false, "", "ConferenceMotion_1280_720_50"};
506
507const VideoQualityTest::Params::Video kSimulcastVp8VideoLow = {
508 true, 320, 180, 30,
509 30000, 150000, 200000, false,
510 "VP8", 3, 2, 400000,
511 false, false, "", "ConferenceMotion_1280_720_50"};
512
Peter Boström12996152016-05-14 02:03:18 +0200513#if !defined(RTC_DISABLE_VP9)
marpan5f4aaeb2017-04-06 10:52:23 -0700514TEST_F(FullStackTest, ScreenshareSlidesVP9_2SL) {
minyue626bc952016-10-31 05:47:02 -0700515 VideoQualityTest::Params screenshare;
516 screenshare.call.send_side_bwe = true;
517 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800518 "VP9", 1, 0, 400000, false, false, "", ""};
minyue626bc952016-10-31 05:47:02 -0700519 screenshare.screenshare = {true, 10};
520 screenshare.analyzer = {"screenshare_slides_vp9_2sl", 0.0, 0.0,
521 kFullStackTestDurationSecs};
522 screenshare.logs = false;
ilnik6b826ef2017-06-16 06:53:48 -0700523 screenshare.ss = {std::vector<VideoStream>(), 0, 2, 1,
524 std::vector<SpatialLayer>(), false};
ivica5d6a06c2015-09-17 05:30:24 -0700525 RunTest(screenshare);
sprang@webrtc.org131bea82015-02-18 12:46:06 +0000526}
ilnik2a8c2f52017-02-15 02:23:28 -0800527
528TEST_F(FullStackTest, VP9SVC_3SL_High) {
529 VideoQualityTest::Params simulcast;
530 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800531 simulcast.video = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800532 simulcast.analyzer = {"vp9svc_3sl_high", 0.0, 0.0,
533 kFullStackTestDurationSecs};
534 simulcast.logs = false;
ilnik6b826ef2017-06-16 06:53:48 -0700535 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 2,
536 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800537 RunTest(simulcast);
538}
539
540TEST_F(FullStackTest, VP9SVC_3SL_Medium) {
541 VideoQualityTest::Params simulcast;
542 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800543 simulcast.video = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800544 simulcast.analyzer = {"vp9svc_3sl_medium", 0.0, 0.0,
545 kFullStackTestDurationSecs};
546 simulcast.logs = false;
ilnik6b826ef2017-06-16 06:53:48 -0700547 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 1,
548 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800549 RunTest(simulcast);
550}
551
552TEST_F(FullStackTest, VP9SVC_3SL_Low) {
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_low", 0.0, 0.0, kFullStackTestDurationSecs};
557 simulcast.logs = false;
ilnik6b826ef2017-06-16 06:53:48 -0700558 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 0,
559 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800560 RunTest(simulcast);
561}
Peter Boström12996152016-05-14 02:03:18 +0200562#endif // !defined(RTC_DISABLE_VP9)
brandtr93c5d032016-11-30 07:50:07 -0800563
ilnik6b826ef2017-06-16 06:53:48 -0700564// Android bots can't handle FullHD, so disable the test.
ilnik267041c2017-06-27 07:21:01 -0700565#if defined(WEBRTC_ANDROID)
ilnik6b826ef2017-06-16 06:53:48 -0700566#define MAYBE_SimulcastFullHdOveruse DISABLED_SimulcastFullHdOveruse
567#else
568#define MAYBE_SimulcastFullHdOveruse SimulcastFullHdOveruse
569#endif
570
571TEST_F(FullStackTest, MAYBE_SimulcastFullHdOveruse) {
572 VideoQualityTest::Params simulcast;
573 simulcast.call.send_side_bwe = true;
574 simulcast.video = {true, 1920, 1080, 30, 800000, 2500000,
575 2500000, false, "VP8", 3, 2, 400000,
576 false, false, "", "Generator"};
577 simulcast.analyzer = {"simulcast_HD_high", 0.0, 0.0,
578 kFullStackTestDurationSecs};
579 simulcast.pipe.loss_percent = 0;
580 simulcast.pipe.queue_delay_ms = 100;
581 std::vector<VideoStream> streams = {DefaultVideoStream(simulcast),
582 DefaultVideoStream(simulcast),
583 DefaultVideoStream(simulcast)};
584 simulcast.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), true};
585 webrtc::test::ScopedFieldTrials override_trials(
586 "WebRTC-ForceSimulatedOveruseIntervalMs/1000-50000-300/");
587 RunTest(simulcast);
588}
589
ilnik3dd5ad92017-02-09 04:58:53 -0800590TEST_F(FullStackTest, SimulcastVP8_3SL_High) {
591 VideoQualityTest::Params simulcast;
592 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800593 simulcast.video = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800594 simulcast.analyzer = {"simulcast_vp8_3sl_high", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800595 kFullStackTestDurationSecs};
596 simulcast.pipe.loss_percent = 0;
597 simulcast.pipe.queue_delay_ms = 100;
598 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800599 video_params_high.video = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800600 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800601 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800602 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800603 video_params_low.video = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800604
605 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
606 DefaultVideoStream(video_params_medium),
607 DefaultVideoStream(video_params_high)};
ilnik6b826ef2017-06-16 06:53:48 -0700608 simulcast.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnik3dd5ad92017-02-09 04:58:53 -0800609 RunTest(simulcast);
610}
611
612TEST_F(FullStackTest, SimulcastVP8_3SL_Medium) {
613 VideoQualityTest::Params simulcast;
614 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800615 simulcast.video = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800616 simulcast.analyzer = {"simulcast_vp8_3sl_medium", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800617 kFullStackTestDurationSecs};
618 simulcast.pipe.loss_percent = 0;
619 simulcast.pipe.queue_delay_ms = 100;
620 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800621 video_params_high.video = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800622 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800623 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800624 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800625 video_params_low.video = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800626
627 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
628 DefaultVideoStream(video_params_medium),
629 DefaultVideoStream(video_params_high)};
ilnik6b826ef2017-06-16 06:53:48 -0700630 simulcast.ss = {streams, 1, 1, 0, std::vector<SpatialLayer>(), false};
ilnik3dd5ad92017-02-09 04:58:53 -0800631 RunTest(simulcast);
632}
633
634TEST_F(FullStackTest, SimulcastVP8_3SL_Low) {
635 VideoQualityTest::Params simulcast;
636 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800637 simulcast.video = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800638 simulcast.analyzer = {"simulcast_vp8_3sl_low", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800639 kFullStackTestDurationSecs};
640 simulcast.pipe.loss_percent = 0;
641 simulcast.pipe.queue_delay_ms = 100;
642 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800643 video_params_high.video = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800644 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800645 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800646 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800647 video_params_low.video = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800648
649 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
650 DefaultVideoStream(video_params_medium),
651 DefaultVideoStream(video_params_high)};
ilnik6b826ef2017-06-16 06:53:48 -0700652 simulcast.ss = {streams, 0, 1, 0, std::vector<SpatialLayer>(), false};
ilnik3dd5ad92017-02-09 04:58:53 -0800653 RunTest(simulcast);
654}
655
ilnika014cc52017-03-07 04:21:04 -0800656TEST_F(FullStackTest, LargeRoomVP8_5thumb) {
657 VideoQualityTest::Params large_room;
658 large_room.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800659 large_room.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800660 large_room.analyzer = {"largeroom_5thumb", 0.0, 0.0,
661 kFullStackTestDurationSecs};
662 large_room.pipe.loss_percent = 0;
663 large_room.pipe.queue_delay_ms = 100;
664 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800665 video_params_high.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800666 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800667 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800668 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800669 video_params_low.video = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800670
671 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
672 DefaultVideoStream(video_params_medium),
673 DefaultVideoStream(video_params_high)};
674 large_room.num_thumbnails = 5;
ilnik6b826ef2017-06-16 06:53:48 -0700675 large_room.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnika014cc52017-03-07 04:21:04 -0800676 RunTest(large_room);
677}
678
ilnikbaded152017-03-17 05:55:25 -0700679#if defined(WEBRTC_ANDROID)
680// Fails on Android:
ilnikf89a7382017-03-07 06:15:27 -0800681// https://bugs.chromium.org/p/webrtc/issues/detail?id=7301
682#define MAYBE_LargeRoomVP8_50thumb DISABLED_LargeRoomVP8_50thumb
ilnik3ae7c252017-03-08 01:17:35 -0800683#define MAYBE_LargeRoomVP8_15thumb DISABLED_LargeRoomVP8_15thumb
ilnikf89a7382017-03-07 06:15:27 -0800684#else
685#define MAYBE_LargeRoomVP8_50thumb LargeRoomVP8_50thumb
ilnik3ae7c252017-03-08 01:17:35 -0800686#define MAYBE_LargeRoomVP8_15thumb LargeRoomVP8_15thumb
ilnikf89a7382017-03-07 06:15:27 -0800687#endif
688
689TEST_F(FullStackTest, MAYBE_LargeRoomVP8_15thumb) {
ilnika014cc52017-03-07 04:21:04 -0800690 VideoQualityTest::Params large_room;
691 large_room.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800692 large_room.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800693 large_room.analyzer = {"largeroom_15thumb", 0.0, 0.0,
694 kFullStackTestDurationSecs};
695 large_room.pipe.loss_percent = 0;
696 large_room.pipe.queue_delay_ms = 100;
697 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800698 video_params_high.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800699 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800700 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800701 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800702 video_params_low.video = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800703
704 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
705 DefaultVideoStream(video_params_medium),
706 DefaultVideoStream(video_params_high)};
707 large_room.num_thumbnails = 15;
ilnik6b826ef2017-06-16 06:53:48 -0700708 large_room.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnika014cc52017-03-07 04:21:04 -0800709 RunTest(large_room);
710}
711
ilnika014cc52017-03-07 04:21:04 -0800712TEST_F(FullStackTest, MAYBE_LargeRoomVP8_50thumb) {
713 VideoQualityTest::Params large_room;
714 large_room.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800715 large_room.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800716 large_room.analyzer = {"largeroom_50thumb", 0.0, 0.0,
717 kFullStackTestDurationSecs};
718 large_room.pipe.loss_percent = 0;
719 large_room.pipe.queue_delay_ms = 100;
720 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800721 video_params_high.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800722 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800723 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800724 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800725 video_params_low.video = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800726
727 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
728 DefaultVideoStream(video_params_medium),
729 DefaultVideoStream(video_params_high)};
730 large_room.num_thumbnails = 50;
ilnik6b826ef2017-06-16 06:53:48 -0700731 large_room.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnika014cc52017-03-07 04:21:04 -0800732 RunTest(large_room);
733}
734
735
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +0000736} // namespace webrtc