blob: e59280a05561c681ad43d91e413f998c9b862164 [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
ilnikcb8c1462017-03-09 09:23:30 -080012#include "webrtc/test/field_trial.h"
kwiberg77eab702016-09-28 17:42:01 -070013#include "webrtc/test/gtest.h"
ivica5d6a06c2015-09-17 05:30:24 -070014#include "webrtc/video/video_quality_test.h"
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000015
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000016namespace webrtc {
17
brandtrdd369c62016-11-16 23:56:57 -080018static const int kFullStackTestDurationSecs = 45;
pbos@webrtc.orgb613b5a2013-12-03 10:13:04 +000019
ivica5d6a06c2015-09-17 05:30:24 -070020class FullStackTest : public VideoQualityTest {
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000021 public:
ivica5d6a06c2015-09-17 05:30:24 -070022 void RunTest(const VideoQualityTest::Params &params) {
23 RunWithAnalyzer(params);
pbos@webrtc.org94015242013-10-16 11:05:37 +000024 }
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000025};
26
sprangce4aef12015-11-02 07:23:20 -080027// VideoQualityTest::Params params = {
28// { ... }, // Common.
29// { ... }, // Video-specific settings.
30// { ... }, // Screenshare-specific settings.
31// { ... }, // Analyzer settings.
32// pipe, // FakeNetworkPipe::Config
33// { ... }, // Spatial scalability.
34// logs // bool
35// };
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000036
Peter Boström12996152016-05-14 02:03:18 +020037#if !defined(RTC_DISABLE_VP9)
asapersson88b0a222016-02-12 13:16:43 -080038TEST_F(FullStackTest, ForemanCifWithoutPacketLossVp9) {
brandtr93c5d032016-11-30 07:50:07 -080039 // TODO(pbos): Decide on psnr/ssim thresholds for foreman_cif.
40 VideoQualityTest::Params foreman_cif;
41 foreman_cif.call.send_side_bwe = true;
42 foreman_cif.video = {true, 352, 288, 30, 700000, 700000, 700000, false,
43 "VP9", 1, 0, 0, false, false, "", "foreman_cif"};
44 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0_VP9", 0.0, 0.0,
45 kFullStackTestDurationSecs};
46 RunTest(foreman_cif);
asapersson88b0a222016-02-12 13:16:43 -080047}
48
49TEST_F(FullStackTest, ForemanCifPlr5Vp9) {
brandtr93c5d032016-11-30 07:50:07 -080050 VideoQualityTest::Params foreman_cif;
51 foreman_cif.call.send_side_bwe = true;
52 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
53 "VP9", 1, 0, 0, false, false, "", "foreman_cif"};
54 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_VP9", 0.0, 0.0,
55 kFullStackTestDurationSecs};
56 foreman_cif.pipe.loss_percent = 5;
57 foreman_cif.pipe.queue_delay_ms = 50;
58 RunTest(foreman_cif);
asapersson88b0a222016-02-12 13:16:43 -080059}
Peter Boström12996152016-05-14 02:03:18 +020060#endif // !defined(RTC_DISABLE_VP9)
asapersson88b0a222016-02-12 13:16:43 -080061
pbos@webrtc.org994d0b72014-06-27 08:47:52 +000062TEST_F(FullStackTest, ParisQcifWithoutPacketLoss) {
minyue626bc952016-10-31 05:47:02 -070063 VideoQualityTest::Params paris_qcif;
64 paris_qcif.call.send_side_bwe = true;
65 paris_qcif.video = {true, 176, 144, 30, 300000, 300000, 300000, false,
brandtr1293aca2016-11-16 22:47:29 -080066 "VP8", 1, 0, 0, false, false, "", "paris_qcif"};
minyue626bc952016-10-31 05:47:02 -070067 paris_qcif.analyzer = {"net_delay_0_0_plr_0", 36.0, 0.96,
68 kFullStackTestDurationSecs};
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +000069 RunTest(paris_qcif);
pbos@webrtc.org994d0b72014-06-27 08:47:52 +000070}
71
72TEST_F(FullStackTest, ForemanCifWithoutPacketLoss) {
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +000073 // TODO(pbos): Decide on psnr/ssim thresholds for foreman_cif.
minyue626bc952016-10-31 05:47:02 -070074 VideoQualityTest::Params foreman_cif;
75 foreman_cif.call.send_side_bwe = true;
76 foreman_cif.video = {true, 352, 288, 30, 700000, 700000, 700000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -080077 1, 0, 0, false, false, "", "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -070078 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0", 0.0, 0.0,
79 kFullStackTestDurationSecs};
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +000080 RunTest(foreman_cif);
pbos@webrtc.org994d0b72014-06-27 08:47:52 +000081}
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000082
asaperssonfb6ad3b2016-12-16 06:54:01 -080083TEST_F(FullStackTest, ForemanCif30kbpsWithoutPacketLoss) {
84 VideoQualityTest::Params foreman_cif;
85 foreman_cif.call.send_side_bwe = true;
86 foreman_cif.video = {true, 352, 288, 10, 30000, 30000, 30000, false,
87 "VP8", 1, 0, 0, false, false, "", "foreman_cif"};
88 foreman_cif.analyzer = {"foreman_cif_30kbps_net_delay_0_0_plr_0", 0.0, 0.0,
89 kFullStackTestDurationSecs};
90 RunTest(foreman_cif);
91}
92
sprang@webrtc.org343096a2015-02-23 08:34:17 +000093TEST_F(FullStackTest, ForemanCifPlr5) {
minyue626bc952016-10-31 05:47:02 -070094 VideoQualityTest::Params foreman_cif;
95 foreman_cif.call.send_side_bwe = true;
96 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -080097 1, 0, 0, false, false, "", "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -070098 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5", 0.0, 0.0,
99 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700100 foreman_cif.pipe.loss_percent = 5;
101 foreman_cif.pipe.queue_delay_ms = 50;
stefan@webrtc.orgc216b9a2014-10-14 10:38:49 +0000102 RunTest(foreman_cif);
103}
104
brandtr93c5d032016-11-30 07:50:07 -0800105TEST_F(FullStackTest, ForemanCifPlr5Ulpfec) {
106 VideoQualityTest::Params foreman_cif;
107 foreman_cif.call.send_side_bwe = true;
108 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
109 1, 0, 0, true, false, "", "foreman_cif"};
110 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_ulpfec", 0.0, 0.0,
111 kFullStackTestDurationSecs};
112 foreman_cif.pipe.loss_percent = 5;
113 foreman_cif.pipe.queue_delay_ms = 50;
114 RunTest(foreman_cif);
115}
116
117TEST_F(FullStackTest, ForemanCifPlr5Flexfec) {
118 VideoQualityTest::Params foreman_cif;
119 foreman_cif.call.send_side_bwe = true;
120 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
121 1, 0, 0, false, true, "", "foreman_cif"};
122 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_flexfec", 0.0, 0.0,
123 kFullStackTestDurationSecs};
124 foreman_cif.pipe.loss_percent = 5;
125 foreman_cif.pipe.queue_delay_ms = 50;
126 RunTest(foreman_cif);
127}
128
brandtrdd369c62016-11-16 23:56:57 -0800129#if defined(WEBRTC_USE_H264)
130TEST_F(FullStackTest, ForemanCifWithoutPacketlossH264) {
brandtr93c5d032016-11-30 07:50:07 -0800131 // TODO(pbos): Decide on psnr/ssim thresholds for foreman_cif.
132 VideoQualityTest::Params foreman_cif;
133 foreman_cif.call.send_side_bwe = true;
134 foreman_cif.video = {true, 352, 288, 30, 700000, 700000, 700000, false,
135 "H264", 1, 0, 0, false, false, "", "foreman_cif"};
136 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0_H264", 0.0, 0.0,
137 kFullStackTestDurationSecs};
138 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800139}
140
asaperssonfb6ad3b2016-12-16 06:54:01 -0800141TEST_F(FullStackTest, ForemanCif30kbpsWithoutPacketlossH264) {
142 VideoQualityTest::Params foreman_cif;
143 foreman_cif.call.send_side_bwe = true;
144 foreman_cif.video = {true, 352, 288, 10, 30000, 30000, 30000, false, "H264",
145 1, 0, 0, false, false, "", "foreman_cif"};
146 foreman_cif.analyzer = {"foreman_cif_30kbps_net_delay_0_0_plr_0_H264", 0.0,
147 0.0, kFullStackTestDurationSecs};
148 RunTest(foreman_cif);
149}
150
brandtrdd369c62016-11-16 23:56:57 -0800151TEST_F(FullStackTest, ForemanCifPlr5H264) {
brandtr93c5d032016-11-30 07:50:07 -0800152 VideoQualityTest::Params foreman_cif;
153 foreman_cif.call.send_side_bwe = true;
154 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
155 "H264", 1, 0, 0, false, false, "", "foreman_cif"};
156 std::string fec_description;
157 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264", 0.0, 0.0,
158 kFullStackTestDurationSecs};
159 foreman_cif.pipe.loss_percent = 5;
160 foreman_cif.pipe.queue_delay_ms = 50;
161 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800162}
163
164// Verify that this is worth the bot time, before enabling.
165TEST_F(FullStackTest, ForemanCifPlr5H264Flexfec) {
brandtr93c5d032016-11-30 07:50:07 -0800166 VideoQualityTest::Params foreman_cif;
167 foreman_cif.call.send_side_bwe = true;
168 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
169 "H264", 1, 0, 0, false, true, "", "foreman_cif"};
170 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264_flexfec", 0.0, 0.0,
171 kFullStackTestDurationSecs};
172 foreman_cif.pipe.loss_percent = 5;
173 foreman_cif.pipe.queue_delay_ms = 50;
174 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800175}
176
177// Ulpfec with H264 is an unsupported combination, so this test is only useful
178// for debugging. It is therefore disabled by default.
179TEST_F(FullStackTest, DISABLED_ForemanCifPlr5H264Ulpfec) {
brandtr93c5d032016-11-30 07:50:07 -0800180 VideoQualityTest::Params foreman_cif;
181 foreman_cif.call.send_side_bwe = true;
182 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
183 "H264", 1, 0, 0, true, false, "", "foreman_cif"};
184 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264_ulpfec", 0.0, 0.0,
185 kFullStackTestDurationSecs};
186 foreman_cif.pipe.loss_percent = 5;
187 foreman_cif.pipe.queue_delay_ms = 50;
188 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800189}
190#endif // defined(WEBRTC_USE_H264)
191
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000192TEST_F(FullStackTest, ForemanCif500kbps) {
minyue626bc952016-10-31 05:47:02 -0700193 VideoQualityTest::Params foreman_cif;
194 foreman_cif.call.send_side_bwe = true;
195 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -0800196 1, 0, 0, false, false, "", "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700197 foreman_cif.analyzer = {"foreman_cif_500kbps", 0.0, 0.0,
198 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700199 foreman_cif.pipe.queue_length_packets = 0;
200 foreman_cif.pipe.queue_delay_ms = 0;
201 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000202 RunTest(foreman_cif);
203}
204
205TEST_F(FullStackTest, ForemanCif500kbpsLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700206 VideoQualityTest::Params foreman_cif;
207 foreman_cif.call.send_side_bwe = true;
208 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -0800209 1, 0, 0, false, false, "", "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700210 foreman_cif.analyzer = {"foreman_cif_500kbps_32pkts_queue", 0.0, 0.0,
211 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700212 foreman_cif.pipe.queue_length_packets = 32;
213 foreman_cif.pipe.queue_delay_ms = 0;
214 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000215 RunTest(foreman_cif);
216}
217
218TEST_F(FullStackTest, ForemanCif500kbps100ms) {
minyue626bc952016-10-31 05:47:02 -0700219 VideoQualityTest::Params foreman_cif;
220 foreman_cif.call.send_side_bwe = true;
221 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -0800222 1, 0, 0, false, false, "", "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700223 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms", 0.0, 0.0,
224 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700225 foreman_cif.pipe.queue_length_packets = 0;
226 foreman_cif.pipe.queue_delay_ms = 100;
227 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000228 RunTest(foreman_cif);
229}
230
231TEST_F(FullStackTest, ForemanCif500kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700232 VideoQualityTest::Params foreman_cif;
233 foreman_cif.call.send_side_bwe = true;
234 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -0800235 1, 0, 0, false, false, "", "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700236 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms_32pkts_queue", 0.0, 0.0,
237 kFullStackTestDurationSecs};
stefanb1797672016-08-11 07:00:57 -0700238 foreman_cif.pipe.queue_length_packets = 32;
239 foreman_cif.pipe.queue_delay_ms = 100;
240 foreman_cif.pipe.link_capacity_kbps = 500;
241 RunTest(foreman_cif);
242}
243
244TEST_F(FullStackTest, ForemanCif500kbps100msLimitedQueueRecvBwe) {
minyue626bc952016-10-31 05:47:02 -0700245 VideoQualityTest::Params foreman_cif;
brandtr93c5d032016-11-30 07:50:07 -0800246 foreman_cif.call.send_side_bwe = false;
minyue626bc952016-10-31 05:47:02 -0700247 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -0800248 1, 0, 0, false, false, "", "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800249 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms_32pkts_queue_recv_bwe",
250 0.0, 0.0, kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700251 foreman_cif.pipe.queue_length_packets = 32;
252 foreman_cif.pipe.queue_delay_ms = 100;
253 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000254 RunTest(foreman_cif);
255}
256
257TEST_F(FullStackTest, ForemanCif1000kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700258 VideoQualityTest::Params foreman_cif;
259 foreman_cif.call.send_side_bwe = true;
260 foreman_cif.video = {true, 352, 288, 30, 30000, 2000000, 2000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800261 "VP8", 1, 0, 0, false, false, "", "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700262 foreman_cif.analyzer = {"foreman_cif_1000kbps_100ms_32pkts_queue", 0.0, 0.0,
263 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700264 foreman_cif.pipe.queue_length_packets = 32;
265 foreman_cif.pipe.queue_delay_ms = 100;
266 foreman_cif.pipe.link_capacity_kbps = 1000;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000267 RunTest(foreman_cif);
268}
sprang@webrtc.org131bea82015-02-18 12:46:06 +0000269
stefanb1797672016-08-11 07:00:57 -0700270TEST_F(FullStackTest, ConferenceMotionHd2000kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700271 VideoQualityTest::Params conf_motion_hd;
272 conf_motion_hd.call.send_side_bwe = true;
273 conf_motion_hd.video = {true, 1280, 720, 50, 30000, 3000000, 3000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800274 "VP8", 1, 0, 0, false, false, "",
minyue626bc952016-10-31 05:47:02 -0700275 "ConferenceMotion_1280_720_50"};
276 conf_motion_hd.analyzer = {"conference_motion_hd_2000kbps_100ms_32pkts_queue",
277 0.0, 0.0, kFullStackTestDurationSecs};
stefanb1797672016-08-11 07:00:57 -0700278 conf_motion_hd.pipe.queue_length_packets = 32;
279 conf_motion_hd.pipe.queue_delay_ms = 100;
280 conf_motion_hd.pipe.link_capacity_kbps = 2000;
281 RunTest(conf_motion_hd);
282}
283
jianj390e64d2017-02-03 09:51:23 -0800284#if !defined(RTC_DISABLE_VP9)
285TEST_F(FullStackTest, ConferenceMotionHd2000kbps100msLimitedQueueVP9) {
286 VideoQualityTest::Params conf_motion_hd;
287 conf_motion_hd.call.send_side_bwe = true;
288 conf_motion_hd.video = {true, 1280, 720, 50, 30000, 3000000, 3000000, false,
289 "VP9", 1, 0, 0, false, false, "",
290 "ConferenceMotion_1280_720_50"};
291 conf_motion_hd.analyzer = {
292 "conference_motion_hd_2000kbps_100ms_32pkts_queue_vp9", 0.0, 0.0,
293 kFullStackTestDurationSecs};
294 conf_motion_hd.pipe.queue_length_packets = 32;
295 conf_motion_hd.pipe.queue_delay_ms = 100;
296 conf_motion_hd.pipe.link_capacity_kbps = 2000;
297 RunTest(conf_motion_hd);
298}
299#endif
300
ivica7bd242e2015-10-06 02:04:06 -0700301TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL) {
minyue626bc952016-10-31 05:47:02 -0700302 VideoQualityTest::Params screenshare;
303 screenshare.call.send_side_bwe = true;
304 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800305 "VP8", 2, 1, 400000, false, false, "", ""};
minyue626bc952016-10-31 05:47:02 -0700306 screenshare.screenshare = {true, 10};
307 screenshare.analyzer = {"screenshare_slides", 0.0, 0.0,
308 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700309 RunTest(screenshare);
Erik SprĂ¥ng6ee69aa2015-09-03 15:58:05 +0200310}
311
ilnikcb8c1462017-03-09 09:23:30 -0800312TEST_F(FullStackTest, ScreenshareSlidesVP8_3TL_Simulcast) {
313 test::ScopedFieldTrials field_trial("WebRTC-SimulcastScreenshare/Enabled/");
314 VideoQualityTest::Params screenshare;
315 screenshare.call.send_side_bwe = true;
316 screenshare.screenshare = {true, 10};
317 screenshare.video = {true, 1850, 1110, 5, 800000, 2500000,
318 2500000, false, "VP8", 3, 2, 400000,
319 false, false, "", ""};
320 screenshare.analyzer = {"screenshare_slides_simulcast", 0.0, 0.0,
321 kFullStackTestDurationSecs};
322 VideoQualityTest::Params screenshare_params_high;
323 screenshare_params_high.video = {true, 1850, 1110, 5, 800000, 2500000,
324 2500000, false, "VP8", 3, 0, 400000,
325 false, false, "", ""};
326 VideoQualityTest::Params screenshare_params_low;
327 screenshare_params_low.video = {true, 1850, 1110, 5, 50000, 200000,
328 2000000, false, "VP8", 2, 0, 400000,
329 false, false, "", ""};
330
331 std::vector<VideoStream> streams = {
332 DefaultVideoStream(screenshare_params_low),
333 DefaultVideoStream(screenshare_params_high)};
334 screenshare.ss = {streams, 1, 1, 0};
335 RunTest(screenshare);
336}
337
ivica7bd242e2015-10-06 02:04:06 -0700338TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_Scroll) {
minyue626bc952016-10-31 05:47:02 -0700339 VideoQualityTest::Params config;
340 config.call.send_side_bwe = true;
341 config.video = {true, 1850, 1110 / 2, 5, 50000, 200000, 2000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800342 "VP8", 2, 1, 400000, false, false, "", ""};
minyue626bc952016-10-31 05:47:02 -0700343 config.screenshare = {true, 10, 2};
344 config.analyzer = {"screenshare_slides_scrolling", 0.0, 0.0,
345 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700346 RunTest(config);
ivica028cf482015-07-30 02:15:56 -0700347}
348
sprangee37de32015-11-23 06:10:23 -0800349TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNet) {
minyue626bc952016-10-31 05:47:02 -0700350 VideoQualityTest::Params screenshare;
351 screenshare.call.send_side_bwe = true;
352 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800353 "VP8", 2, 1, 400000, false, false, "", ""};
minyue626bc952016-10-31 05:47:02 -0700354 screenshare.screenshare = {true, 10};
355 screenshare.analyzer = {"screenshare_slides_lossy_net", 0.0, 0.0,
356 kFullStackTestDurationSecs};
sprangee37de32015-11-23 06:10:23 -0800357 screenshare.pipe.loss_percent = 5;
358 screenshare.pipe.queue_delay_ms = 200;
359 screenshare.pipe.link_capacity_kbps = 500;
360 RunTest(screenshare);
361}
362
363TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_VeryLossyNet) {
minyue626bc952016-10-31 05:47:02 -0700364 VideoQualityTest::Params screenshare;
365 screenshare.call.send_side_bwe = true;
366 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800367 "VP8", 2, 1, 400000, false, false, "", ""};
minyue626bc952016-10-31 05:47:02 -0700368 screenshare.screenshare = {true, 10};
369 screenshare.analyzer = {"screenshare_slides_very_lossy", 0.0, 0.0,
370 kFullStackTestDurationSecs};
sprangee37de32015-11-23 06:10:23 -0800371 screenshare.pipe.loss_percent = 10;
372 screenshare.pipe.queue_delay_ms = 200;
373 screenshare.pipe.link_capacity_kbps = 500;
374 RunTest(screenshare);
375}
376
ilnik566c43b2017-03-07 04:42:54 -0800377const VideoQualityTest::Params::Video kSvcVp9Video = {
378 true, 1280, 720, 30,
379 800000, 2500000, 2500000, false,
380 "VP9", 3, 2, 400000,
381 false, false, "", "ConferenceMotion_1280_720_50"};
382
383const VideoQualityTest::Params::Video kSimulcastVp8VideoHigh = {
384 true, 1280, 720, 30,
385 800000, 2500000, 2500000, false,
386 "VP8", 3, 2, 400000,
387 false, false, "", "ConferenceMotion_1280_720_50"};
388
389const VideoQualityTest::Params::Video kSimulcastVp8VideoMedium = {
390 true, 640, 360, 30,
391 150000, 500000, 700000, false,
392 "VP8", 3, 2, 400000,
393 false, false, "", "ConferenceMotion_1280_720_50"};
394
395const VideoQualityTest::Params::Video kSimulcastVp8VideoLow = {
396 true, 320, 180, 30,
397 30000, 150000, 200000, false,
398 "VP8", 3, 2, 400000,
399 false, false, "", "ConferenceMotion_1280_720_50"};
400
Peter Boström12996152016-05-14 02:03:18 +0200401#if !defined(RTC_DISABLE_VP9)
philipelcfc319b2015-11-10 07:17:23 -0800402TEST_F(FullStackTest, ScreenshareSlidesVP9_2SL) {
minyue626bc952016-10-31 05:47:02 -0700403 VideoQualityTest::Params screenshare;
404 screenshare.call.send_side_bwe = true;
405 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800406 "VP9", 1, 0, 400000, false, false, "", ""};
minyue626bc952016-10-31 05:47:02 -0700407 screenshare.screenshare = {true, 10};
408 screenshare.analyzer = {"screenshare_slides_vp9_2sl", 0.0, 0.0,
409 kFullStackTestDurationSecs};
410 screenshare.logs = false;
411 screenshare.ss = {std::vector<VideoStream>(), 0, 2, 1};
ivica5d6a06c2015-09-17 05:30:24 -0700412 RunTest(screenshare);
sprang@webrtc.org131bea82015-02-18 12:46:06 +0000413}
ilnik2a8c2f52017-02-15 02:23:28 -0800414
415TEST_F(FullStackTest, VP9SVC_3SL_High) {
416 VideoQualityTest::Params simulcast;
417 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800418 simulcast.video = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800419 simulcast.analyzer = {"vp9svc_3sl_high", 0.0, 0.0,
420 kFullStackTestDurationSecs};
421 simulcast.logs = false;
422 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 2};
423 RunTest(simulcast);
424}
425
426TEST_F(FullStackTest, VP9SVC_3SL_Medium) {
427 VideoQualityTest::Params simulcast;
428 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800429 simulcast.video = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800430 simulcast.analyzer = {"vp9svc_3sl_medium", 0.0, 0.0,
431 kFullStackTestDurationSecs};
432 simulcast.logs = false;
433 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 1};
434 RunTest(simulcast);
435}
436
437TEST_F(FullStackTest, VP9SVC_3SL_Low) {
438 VideoQualityTest::Params simulcast;
439 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800440 simulcast.video = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800441 simulcast.analyzer = {"vp9svc_3sl_low", 0.0, 0.0, kFullStackTestDurationSecs};
442 simulcast.logs = false;
443 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 0};
444 RunTest(simulcast);
445}
Peter Boström12996152016-05-14 02:03:18 +0200446#endif // !defined(RTC_DISABLE_VP9)
brandtr93c5d032016-11-30 07:50:07 -0800447
ilnik3dd5ad92017-02-09 04:58:53 -0800448TEST_F(FullStackTest, SimulcastVP8_3SL_High) {
449 VideoQualityTest::Params simulcast;
450 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800451 simulcast.video = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800452 simulcast.analyzer = {"simulcast_vp8_3sl_high", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800453 kFullStackTestDurationSecs};
454 simulcast.pipe.loss_percent = 0;
455 simulcast.pipe.queue_delay_ms = 100;
456 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800457 video_params_high.video = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800458 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800459 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800460 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800461 video_params_low.video = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800462
463 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
464 DefaultVideoStream(video_params_medium),
465 DefaultVideoStream(video_params_high)};
466 simulcast.ss = {streams, 2, 1, 0};
467 RunTest(simulcast);
468}
469
470TEST_F(FullStackTest, SimulcastVP8_3SL_Medium) {
471 VideoQualityTest::Params simulcast;
472 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800473 simulcast.video = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800474 simulcast.analyzer = {"simulcast_vp8_3sl_medium", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800475 kFullStackTestDurationSecs};
476 simulcast.pipe.loss_percent = 0;
477 simulcast.pipe.queue_delay_ms = 100;
478 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800479 video_params_high.video = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800480 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800481 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800482 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800483 video_params_low.video = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800484
485 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
486 DefaultVideoStream(video_params_medium),
487 DefaultVideoStream(video_params_high)};
488 simulcast.ss = {streams, 1, 1, 0};
489 RunTest(simulcast);
490}
491
492TEST_F(FullStackTest, SimulcastVP8_3SL_Low) {
493 VideoQualityTest::Params simulcast;
494 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800495 simulcast.video = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800496 simulcast.analyzer = {"simulcast_vp8_3sl_low", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800497 kFullStackTestDurationSecs};
498 simulcast.pipe.loss_percent = 0;
499 simulcast.pipe.queue_delay_ms = 100;
500 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800501 video_params_high.video = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800502 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800503 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800504 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800505 video_params_low.video = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800506
507 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
508 DefaultVideoStream(video_params_medium),
509 DefaultVideoStream(video_params_high)};
510 simulcast.ss = {streams, 0, 1, 0};
511 RunTest(simulcast);
512}
513
ilnika014cc52017-03-07 04:21:04 -0800514TEST_F(FullStackTest, LargeRoomVP8_5thumb) {
515 VideoQualityTest::Params large_room;
516 large_room.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800517 large_room.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800518 large_room.analyzer = {"largeroom_5thumb", 0.0, 0.0,
519 kFullStackTestDurationSecs};
520 large_room.pipe.loss_percent = 0;
521 large_room.pipe.queue_delay_ms = 100;
522 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800523 video_params_high.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800524 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800525 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800526 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800527 video_params_low.video = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800528
529 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
530 DefaultVideoStream(video_params_medium),
531 DefaultVideoStream(video_params_high)};
532 large_room.num_thumbnails = 5;
533 large_room.ss = {streams, 2, 1, 0};
534 RunTest(large_room);
535}
536
ilnik2a420ce2017-03-16 09:43:44 -0700537#if defined(WEBRTC_ANDROID) || defined(WEBRTC_WIN)
538// Fails on Android and win:
ilnikf89a7382017-03-07 06:15:27 -0800539// https://bugs.chromium.org/p/webrtc/issues/detail?id=7301
540#define MAYBE_LargeRoomVP8_50thumb DISABLED_LargeRoomVP8_50thumb
ilnik3ae7c252017-03-08 01:17:35 -0800541#define MAYBE_LargeRoomVP8_15thumb DISABLED_LargeRoomVP8_15thumb
ilnikf89a7382017-03-07 06:15:27 -0800542#else
543#define MAYBE_LargeRoomVP8_50thumb LargeRoomVP8_50thumb
ilnik3ae7c252017-03-08 01:17:35 -0800544#define MAYBE_LargeRoomVP8_15thumb LargeRoomVP8_15thumb
ilnikf89a7382017-03-07 06:15:27 -0800545#endif
546
547TEST_F(FullStackTest, MAYBE_LargeRoomVP8_15thumb) {
ilnika014cc52017-03-07 04:21:04 -0800548 VideoQualityTest::Params large_room;
549 large_room.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800550 large_room.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800551 large_room.analyzer = {"largeroom_15thumb", 0.0, 0.0,
552 kFullStackTestDurationSecs};
553 large_room.pipe.loss_percent = 0;
554 large_room.pipe.queue_delay_ms = 100;
555 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800556 video_params_high.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800557 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800558 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800559 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800560 video_params_low.video = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800561
562 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
563 DefaultVideoStream(video_params_medium),
564 DefaultVideoStream(video_params_high)};
565 large_room.num_thumbnails = 15;
566 large_room.ss = {streams, 2, 1, 0};
567 RunTest(large_room);
568}
569
ilnika014cc52017-03-07 04:21:04 -0800570TEST_F(FullStackTest, MAYBE_LargeRoomVP8_50thumb) {
571 VideoQualityTest::Params large_room;
572 large_room.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800573 large_room.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800574 large_room.analyzer = {"largeroom_50thumb", 0.0, 0.0,
575 kFullStackTestDurationSecs};
576 large_room.pipe.loss_percent = 0;
577 large_room.pipe.queue_delay_ms = 100;
578 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800579 video_params_high.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800580 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800581 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800582 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800583 video_params_low.video = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800584
585 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
586 DefaultVideoStream(video_params_medium),
587 DefaultVideoStream(video_params_high)};
588 large_room.num_thumbnails = 50;
589 large_room.ss = {streams, 2, 1, 0};
590 RunTest(large_room);
591}
592
593
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +0000594} // namespace webrtc