blob: e94acdae32993050d226a826fcc064f671fd2be4 [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
kwiberg77eab702016-09-28 17:42:01 -070012#include "webrtc/test/gtest.h"
ivica5d6a06c2015-09-17 05:30:24 -070013#include "webrtc/video/video_quality_test.h"
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000014
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000015namespace webrtc {
16
brandtrdd369c62016-11-16 23:56:57 -080017static const int kFullStackTestDurationSecs = 45;
pbos@webrtc.orgb613b5a2013-12-03 10:13:04 +000018
ivica5d6a06c2015-09-17 05:30:24 -070019class FullStackTest : public VideoQualityTest {
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000020 public:
ivica5d6a06c2015-09-17 05:30:24 -070021 void RunTest(const VideoQualityTest::Params &params) {
22 RunWithAnalyzer(params);
pbos@webrtc.org94015242013-10-16 11:05:37 +000023 }
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000024};
25
sprangce4aef12015-11-02 07:23:20 -080026// VideoQualityTest::Params params = {
27// { ... }, // Common.
28// { ... }, // Video-specific settings.
29// { ... }, // Screenshare-specific settings.
30// { ... }, // Analyzer settings.
31// pipe, // FakeNetworkPipe::Config
32// { ... }, // Spatial scalability.
33// logs // bool
34// };
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000035
Peter Boström12996152016-05-14 02:03:18 +020036#if !defined(RTC_DISABLE_VP9)
asapersson88b0a222016-02-12 13:16:43 -080037TEST_F(FullStackTest, ForemanCifWithoutPacketLossVp9) {
brandtr93c5d032016-11-30 07:50:07 -080038 // TODO(pbos): Decide on psnr/ssim thresholds for foreman_cif.
39 VideoQualityTest::Params foreman_cif;
40 foreman_cif.call.send_side_bwe = true;
41 foreman_cif.video = {true, 352, 288, 30, 700000, 700000, 700000, false,
42 "VP9", 1, 0, 0, false, false, "", "foreman_cif"};
43 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0_VP9", 0.0, 0.0,
44 kFullStackTestDurationSecs};
45 RunTest(foreman_cif);
asapersson88b0a222016-02-12 13:16:43 -080046}
47
48TEST_F(FullStackTest, ForemanCifPlr5Vp9) {
brandtr93c5d032016-11-30 07:50:07 -080049 VideoQualityTest::Params foreman_cif;
50 foreman_cif.call.send_side_bwe = true;
51 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
52 "VP9", 1, 0, 0, false, false, "", "foreman_cif"};
53 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_VP9", 0.0, 0.0,
54 kFullStackTestDurationSecs};
55 foreman_cif.pipe.loss_percent = 5;
56 foreman_cif.pipe.queue_delay_ms = 50;
57 RunTest(foreman_cif);
asapersson88b0a222016-02-12 13:16:43 -080058}
Peter Boström12996152016-05-14 02:03:18 +020059#endif // !defined(RTC_DISABLE_VP9)
asapersson88b0a222016-02-12 13:16:43 -080060
pbos@webrtc.org994d0b72014-06-27 08:47:52 +000061TEST_F(FullStackTest, ParisQcifWithoutPacketLoss) {
minyue626bc952016-10-31 05:47:02 -070062 VideoQualityTest::Params paris_qcif;
63 paris_qcif.call.send_side_bwe = true;
64 paris_qcif.video = {true, 176, 144, 30, 300000, 300000, 300000, false,
brandtr1293aca2016-11-16 22:47:29 -080065 "VP8", 1, 0, 0, false, false, "", "paris_qcif"};
minyue626bc952016-10-31 05:47:02 -070066 paris_qcif.analyzer = {"net_delay_0_0_plr_0", 36.0, 0.96,
67 kFullStackTestDurationSecs};
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +000068 RunTest(paris_qcif);
pbos@webrtc.org994d0b72014-06-27 08:47:52 +000069}
70
71TEST_F(FullStackTest, ForemanCifWithoutPacketLoss) {
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +000072 // TODO(pbos): Decide on psnr/ssim thresholds for foreman_cif.
minyue626bc952016-10-31 05:47:02 -070073 VideoQualityTest::Params foreman_cif;
74 foreman_cif.call.send_side_bwe = true;
75 foreman_cif.video = {true, 352, 288, 30, 700000, 700000, 700000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -080076 1, 0, 0, false, false, "", "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -070077 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0", 0.0, 0.0,
78 kFullStackTestDurationSecs};
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +000079 RunTest(foreman_cif);
pbos@webrtc.org994d0b72014-06-27 08:47:52 +000080}
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000081
asaperssonfb6ad3b2016-12-16 06:54:01 -080082TEST_F(FullStackTest, ForemanCif30kbpsWithoutPacketLoss) {
83 VideoQualityTest::Params foreman_cif;
84 foreman_cif.call.send_side_bwe = true;
85 foreman_cif.video = {true, 352, 288, 10, 30000, 30000, 30000, false,
86 "VP8", 1, 0, 0, false, false, "", "foreman_cif"};
87 foreman_cif.analyzer = {"foreman_cif_30kbps_net_delay_0_0_plr_0", 0.0, 0.0,
88 kFullStackTestDurationSecs};
89 RunTest(foreman_cif);
90}
91
sprang@webrtc.org343096a2015-02-23 08:34:17 +000092TEST_F(FullStackTest, ForemanCifPlr5) {
minyue626bc952016-10-31 05:47:02 -070093 VideoQualityTest::Params foreman_cif;
94 foreman_cif.call.send_side_bwe = true;
95 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -080096 1, 0, 0, false, false, "", "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -070097 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5", 0.0, 0.0,
98 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -070099 foreman_cif.pipe.loss_percent = 5;
100 foreman_cif.pipe.queue_delay_ms = 50;
stefan@webrtc.orgc216b9a2014-10-14 10:38:49 +0000101 RunTest(foreman_cif);
102}
103
brandtr93c5d032016-11-30 07:50:07 -0800104TEST_F(FullStackTest, ForemanCifPlr5Ulpfec) {
105 VideoQualityTest::Params foreman_cif;
106 foreman_cif.call.send_side_bwe = true;
107 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
108 1, 0, 0, true, false, "", "foreman_cif"};
109 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_ulpfec", 0.0, 0.0,
110 kFullStackTestDurationSecs};
111 foreman_cif.pipe.loss_percent = 5;
112 foreman_cif.pipe.queue_delay_ms = 50;
113 RunTest(foreman_cif);
114}
115
116TEST_F(FullStackTest, ForemanCifPlr5Flexfec) {
117 VideoQualityTest::Params foreman_cif;
118 foreman_cif.call.send_side_bwe = true;
119 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
120 1, 0, 0, false, true, "", "foreman_cif"};
121 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_flexfec", 0.0, 0.0,
122 kFullStackTestDurationSecs};
123 foreman_cif.pipe.loss_percent = 5;
124 foreman_cif.pipe.queue_delay_ms = 50;
125 RunTest(foreman_cif);
126}
127
brandtrdd369c62016-11-16 23:56:57 -0800128#if defined(WEBRTC_USE_H264)
129TEST_F(FullStackTest, ForemanCifWithoutPacketlossH264) {
brandtr93c5d032016-11-30 07:50:07 -0800130 // TODO(pbos): Decide on psnr/ssim thresholds for foreman_cif.
131 VideoQualityTest::Params foreman_cif;
132 foreman_cif.call.send_side_bwe = true;
133 foreman_cif.video = {true, 352, 288, 30, 700000, 700000, 700000, false,
134 "H264", 1, 0, 0, false, false, "", "foreman_cif"};
135 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0_H264", 0.0, 0.0,
136 kFullStackTestDurationSecs};
137 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800138}
139
asaperssonfb6ad3b2016-12-16 06:54:01 -0800140TEST_F(FullStackTest, ForemanCif30kbpsWithoutPacketlossH264) {
141 VideoQualityTest::Params foreman_cif;
142 foreman_cif.call.send_side_bwe = true;
143 foreman_cif.video = {true, 352, 288, 10, 30000, 30000, 30000, false, "H264",
144 1, 0, 0, false, false, "", "foreman_cif"};
145 foreman_cif.analyzer = {"foreman_cif_30kbps_net_delay_0_0_plr_0_H264", 0.0,
146 0.0, kFullStackTestDurationSecs};
147 RunTest(foreman_cif);
148}
149
brandtrdd369c62016-11-16 23:56:57 -0800150TEST_F(FullStackTest, ForemanCifPlr5H264) {
brandtr93c5d032016-11-30 07:50:07 -0800151 VideoQualityTest::Params foreman_cif;
152 foreman_cif.call.send_side_bwe = true;
153 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
154 "H264", 1, 0, 0, false, false, "", "foreman_cif"};
155 std::string fec_description;
156 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264", 0.0, 0.0,
157 kFullStackTestDurationSecs};
158 foreman_cif.pipe.loss_percent = 5;
159 foreman_cif.pipe.queue_delay_ms = 50;
160 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800161}
162
163// Verify that this is worth the bot time, before enabling.
164TEST_F(FullStackTest, ForemanCifPlr5H264Flexfec) {
brandtr93c5d032016-11-30 07:50:07 -0800165 VideoQualityTest::Params foreman_cif;
166 foreman_cif.call.send_side_bwe = true;
167 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
168 "H264", 1, 0, 0, false, true, "", "foreman_cif"};
169 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264_flexfec", 0.0, 0.0,
170 kFullStackTestDurationSecs};
171 foreman_cif.pipe.loss_percent = 5;
172 foreman_cif.pipe.queue_delay_ms = 50;
173 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800174}
175
176// Ulpfec with H264 is an unsupported combination, so this test is only useful
177// for debugging. It is therefore disabled by default.
178TEST_F(FullStackTest, DISABLED_ForemanCifPlr5H264Ulpfec) {
brandtr93c5d032016-11-30 07:50:07 -0800179 VideoQualityTest::Params foreman_cif;
180 foreman_cif.call.send_side_bwe = true;
181 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
182 "H264", 1, 0, 0, true, false, "", "foreman_cif"};
183 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264_ulpfec", 0.0, 0.0,
184 kFullStackTestDurationSecs};
185 foreman_cif.pipe.loss_percent = 5;
186 foreman_cif.pipe.queue_delay_ms = 50;
187 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800188}
189#endif // defined(WEBRTC_USE_H264)
190
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000191TEST_F(FullStackTest, ForemanCif500kbps) {
minyue626bc952016-10-31 05:47:02 -0700192 VideoQualityTest::Params foreman_cif;
193 foreman_cif.call.send_side_bwe = true;
194 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -0800195 1, 0, 0, false, false, "", "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700196 foreman_cif.analyzer = {"foreman_cif_500kbps", 0.0, 0.0,
197 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700198 foreman_cif.pipe.queue_length_packets = 0;
199 foreman_cif.pipe.queue_delay_ms = 0;
200 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000201 RunTest(foreman_cif);
202}
203
204TEST_F(FullStackTest, ForemanCif500kbpsLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700205 VideoQualityTest::Params foreman_cif;
206 foreman_cif.call.send_side_bwe = true;
207 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -0800208 1, 0, 0, false, false, "", "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700209 foreman_cif.analyzer = {"foreman_cif_500kbps_32pkts_queue", 0.0, 0.0,
210 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700211 foreman_cif.pipe.queue_length_packets = 32;
212 foreman_cif.pipe.queue_delay_ms = 0;
213 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000214 RunTest(foreman_cif);
215}
216
217TEST_F(FullStackTest, ForemanCif500kbps100ms) {
minyue626bc952016-10-31 05:47:02 -0700218 VideoQualityTest::Params foreman_cif;
219 foreman_cif.call.send_side_bwe = true;
220 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -0800221 1, 0, 0, false, false, "", "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700222 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms", 0.0, 0.0,
223 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700224 foreman_cif.pipe.queue_length_packets = 0;
225 foreman_cif.pipe.queue_delay_ms = 100;
226 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000227 RunTest(foreman_cif);
228}
229
230TEST_F(FullStackTest, ForemanCif500kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700231 VideoQualityTest::Params foreman_cif;
232 foreman_cif.call.send_side_bwe = true;
233 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -0800234 1, 0, 0, false, false, "", "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700235 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms_32pkts_queue", 0.0, 0.0,
236 kFullStackTestDurationSecs};
stefanb1797672016-08-11 07:00:57 -0700237 foreman_cif.pipe.queue_length_packets = 32;
238 foreman_cif.pipe.queue_delay_ms = 100;
239 foreman_cif.pipe.link_capacity_kbps = 500;
240 RunTest(foreman_cif);
241}
242
243TEST_F(FullStackTest, ForemanCif500kbps100msLimitedQueueRecvBwe) {
minyue626bc952016-10-31 05:47:02 -0700244 VideoQualityTest::Params foreman_cif;
brandtr93c5d032016-11-30 07:50:07 -0800245 foreman_cif.call.send_side_bwe = false;
minyue626bc952016-10-31 05:47:02 -0700246 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false, "VP8",
brandtr1293aca2016-11-16 22:47:29 -0800247 1, 0, 0, false, false, "", "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800248 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms_32pkts_queue_recv_bwe",
249 0.0, 0.0, kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700250 foreman_cif.pipe.queue_length_packets = 32;
251 foreman_cif.pipe.queue_delay_ms = 100;
252 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000253 RunTest(foreman_cif);
254}
255
256TEST_F(FullStackTest, ForemanCif1000kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700257 VideoQualityTest::Params foreman_cif;
258 foreman_cif.call.send_side_bwe = true;
259 foreman_cif.video = {true, 352, 288, 30, 30000, 2000000, 2000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800260 "VP8", 1, 0, 0, false, false, "", "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700261 foreman_cif.analyzer = {"foreman_cif_1000kbps_100ms_32pkts_queue", 0.0, 0.0,
262 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700263 foreman_cif.pipe.queue_length_packets = 32;
264 foreman_cif.pipe.queue_delay_ms = 100;
265 foreman_cif.pipe.link_capacity_kbps = 1000;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000266 RunTest(foreman_cif);
267}
sprang@webrtc.org131bea82015-02-18 12:46:06 +0000268
stefanb1797672016-08-11 07:00:57 -0700269TEST_F(FullStackTest, ConferenceMotionHd2000kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700270 VideoQualityTest::Params conf_motion_hd;
271 conf_motion_hd.call.send_side_bwe = true;
272 conf_motion_hd.video = {true, 1280, 720, 50, 30000, 3000000, 3000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800273 "VP8", 1, 0, 0, false, false, "",
minyue626bc952016-10-31 05:47:02 -0700274 "ConferenceMotion_1280_720_50"};
275 conf_motion_hd.analyzer = {"conference_motion_hd_2000kbps_100ms_32pkts_queue",
276 0.0, 0.0, kFullStackTestDurationSecs};
stefanb1797672016-08-11 07:00:57 -0700277 conf_motion_hd.pipe.queue_length_packets = 32;
278 conf_motion_hd.pipe.queue_delay_ms = 100;
279 conf_motion_hd.pipe.link_capacity_kbps = 2000;
280 RunTest(conf_motion_hd);
281}
282
jianj390e64d2017-02-03 09:51:23 -0800283#if !defined(RTC_DISABLE_VP9)
284TEST_F(FullStackTest, ConferenceMotionHd2000kbps100msLimitedQueueVP9) {
285 VideoQualityTest::Params conf_motion_hd;
286 conf_motion_hd.call.send_side_bwe = true;
287 conf_motion_hd.video = {true, 1280, 720, 50, 30000, 3000000, 3000000, false,
288 "VP9", 1, 0, 0, false, false, "",
289 "ConferenceMotion_1280_720_50"};
290 conf_motion_hd.analyzer = {
291 "conference_motion_hd_2000kbps_100ms_32pkts_queue_vp9", 0.0, 0.0,
292 kFullStackTestDurationSecs};
293 conf_motion_hd.pipe.queue_length_packets = 32;
294 conf_motion_hd.pipe.queue_delay_ms = 100;
295 conf_motion_hd.pipe.link_capacity_kbps = 2000;
296 RunTest(conf_motion_hd);
297}
298#endif
299
ivica7bd242e2015-10-06 02:04:06 -0700300TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL) {
minyue626bc952016-10-31 05:47:02 -0700301 VideoQualityTest::Params screenshare;
302 screenshare.call.send_side_bwe = true;
303 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800304 "VP8", 2, 1, 400000, false, false, "", ""};
minyue626bc952016-10-31 05:47:02 -0700305 screenshare.screenshare = {true, 10};
306 screenshare.analyzer = {"screenshare_slides", 0.0, 0.0,
307 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700308 RunTest(screenshare);
Erik SprĂ¥ng6ee69aa2015-09-03 15:58:05 +0200309}
310
ivica7bd242e2015-10-06 02:04:06 -0700311TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_Scroll) {
minyue626bc952016-10-31 05:47:02 -0700312 VideoQualityTest::Params config;
313 config.call.send_side_bwe = true;
314 config.video = {true, 1850, 1110 / 2, 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 config.screenshare = {true, 10, 2};
317 config.analyzer = {"screenshare_slides_scrolling", 0.0, 0.0,
318 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700319 RunTest(config);
ivica028cf482015-07-30 02:15:56 -0700320}
321
sprangee37de32015-11-23 06:10:23 -0800322TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNet) {
minyue626bc952016-10-31 05:47:02 -0700323 VideoQualityTest::Params screenshare;
324 screenshare.call.send_side_bwe = true;
325 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800326 "VP8", 2, 1, 400000, false, false, "", ""};
minyue626bc952016-10-31 05:47:02 -0700327 screenshare.screenshare = {true, 10};
328 screenshare.analyzer = {"screenshare_slides_lossy_net", 0.0, 0.0,
329 kFullStackTestDurationSecs};
sprangee37de32015-11-23 06:10:23 -0800330 screenshare.pipe.loss_percent = 5;
331 screenshare.pipe.queue_delay_ms = 200;
332 screenshare.pipe.link_capacity_kbps = 500;
333 RunTest(screenshare);
334}
335
336TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_VeryLossyNet) {
minyue626bc952016-10-31 05:47:02 -0700337 VideoQualityTest::Params screenshare;
338 screenshare.call.send_side_bwe = true;
339 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800340 "VP8", 2, 1, 400000, false, false, "", ""};
minyue626bc952016-10-31 05:47:02 -0700341 screenshare.screenshare = {true, 10};
342 screenshare.analyzer = {"screenshare_slides_very_lossy", 0.0, 0.0,
343 kFullStackTestDurationSecs};
sprangee37de32015-11-23 06:10:23 -0800344 screenshare.pipe.loss_percent = 10;
345 screenshare.pipe.queue_delay_ms = 200;
346 screenshare.pipe.link_capacity_kbps = 500;
347 RunTest(screenshare);
348}
349
ilnik566c43b2017-03-07 04:42:54 -0800350const VideoQualityTest::Params::Video kSvcVp9Video = {
351 true, 1280, 720, 30,
352 800000, 2500000, 2500000, false,
353 "VP9", 3, 2, 400000,
354 false, false, "", "ConferenceMotion_1280_720_50"};
355
356const VideoQualityTest::Params::Video kSimulcastVp8VideoHigh = {
357 true, 1280, 720, 30,
358 800000, 2500000, 2500000, false,
359 "VP8", 3, 2, 400000,
360 false, false, "", "ConferenceMotion_1280_720_50"};
361
362const VideoQualityTest::Params::Video kSimulcastVp8VideoMedium = {
363 true, 640, 360, 30,
364 150000, 500000, 700000, false,
365 "VP8", 3, 2, 400000,
366 false, false, "", "ConferenceMotion_1280_720_50"};
367
368const VideoQualityTest::Params::Video kSimulcastVp8VideoLow = {
369 true, 320, 180, 30,
370 30000, 150000, 200000, false,
371 "VP8", 3, 2, 400000,
372 false, false, "", "ConferenceMotion_1280_720_50"};
373
Peter Boström12996152016-05-14 02:03:18 +0200374#if !defined(RTC_DISABLE_VP9)
philipelcfc319b2015-11-10 07:17:23 -0800375TEST_F(FullStackTest, ScreenshareSlidesVP9_2SL) {
minyue626bc952016-10-31 05:47:02 -0700376 VideoQualityTest::Params screenshare;
377 screenshare.call.send_side_bwe = true;
378 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800379 "VP9", 1, 0, 400000, false, false, "", ""};
minyue626bc952016-10-31 05:47:02 -0700380 screenshare.screenshare = {true, 10};
381 screenshare.analyzer = {"screenshare_slides_vp9_2sl", 0.0, 0.0,
382 kFullStackTestDurationSecs};
383 screenshare.logs = false;
384 screenshare.ss = {std::vector<VideoStream>(), 0, 2, 1};
ivica5d6a06c2015-09-17 05:30:24 -0700385 RunTest(screenshare);
sprang@webrtc.org131bea82015-02-18 12:46:06 +0000386}
ilnik2a8c2f52017-02-15 02:23:28 -0800387
388TEST_F(FullStackTest, VP9SVC_3SL_High) {
389 VideoQualityTest::Params simulcast;
390 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800391 simulcast.video = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800392 simulcast.analyzer = {"vp9svc_3sl_high", 0.0, 0.0,
393 kFullStackTestDurationSecs};
394 simulcast.logs = false;
395 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 2};
396 RunTest(simulcast);
397}
398
399TEST_F(FullStackTest, VP9SVC_3SL_Medium) {
400 VideoQualityTest::Params simulcast;
401 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800402 simulcast.video = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800403 simulcast.analyzer = {"vp9svc_3sl_medium", 0.0, 0.0,
404 kFullStackTestDurationSecs};
405 simulcast.logs = false;
406 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 1};
407 RunTest(simulcast);
408}
409
410TEST_F(FullStackTest, VP9SVC_3SL_Low) {
411 VideoQualityTest::Params simulcast;
412 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800413 simulcast.video = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800414 simulcast.analyzer = {"vp9svc_3sl_low", 0.0, 0.0, kFullStackTestDurationSecs};
415 simulcast.logs = false;
416 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 0};
417 RunTest(simulcast);
418}
Peter Boström12996152016-05-14 02:03:18 +0200419#endif // !defined(RTC_DISABLE_VP9)
brandtr93c5d032016-11-30 07:50:07 -0800420
ilnik3dd5ad92017-02-09 04:58:53 -0800421TEST_F(FullStackTest, SimulcastVP8_3SL_High) {
422 VideoQualityTest::Params simulcast;
423 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800424 simulcast.video = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800425 simulcast.analyzer = {"simulcast_vp8_3sl_high", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800426 kFullStackTestDurationSecs};
427 simulcast.pipe.loss_percent = 0;
428 simulcast.pipe.queue_delay_ms = 100;
429 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800430 video_params_high.video = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800431 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800432 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800433 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800434 video_params_low.video = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800435
436 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
437 DefaultVideoStream(video_params_medium),
438 DefaultVideoStream(video_params_high)};
439 simulcast.ss = {streams, 2, 1, 0};
440 RunTest(simulcast);
441}
442
443TEST_F(FullStackTest, SimulcastVP8_3SL_Medium) {
444 VideoQualityTest::Params simulcast;
445 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800446 simulcast.video = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800447 simulcast.analyzer = {"simulcast_vp8_3sl_medium", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800448 kFullStackTestDurationSecs};
449 simulcast.pipe.loss_percent = 0;
450 simulcast.pipe.queue_delay_ms = 100;
451 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800452 video_params_high.video = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800453 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800454 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800455 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800456 video_params_low.video = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800457
458 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
459 DefaultVideoStream(video_params_medium),
460 DefaultVideoStream(video_params_high)};
461 simulcast.ss = {streams, 1, 1, 0};
462 RunTest(simulcast);
463}
464
465TEST_F(FullStackTest, SimulcastVP8_3SL_Low) {
466 VideoQualityTest::Params simulcast;
467 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800468 simulcast.video = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800469 simulcast.analyzer = {"simulcast_vp8_3sl_low", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800470 kFullStackTestDurationSecs};
471 simulcast.pipe.loss_percent = 0;
472 simulcast.pipe.queue_delay_ms = 100;
473 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800474 video_params_high.video = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800475 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800476 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800477 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800478 video_params_low.video = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800479
480 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
481 DefaultVideoStream(video_params_medium),
482 DefaultVideoStream(video_params_high)};
483 simulcast.ss = {streams, 0, 1, 0};
484 RunTest(simulcast);
485}
486
ilnika014cc52017-03-07 04:21:04 -0800487TEST_F(FullStackTest, LargeRoomVP8_5thumb) {
488 VideoQualityTest::Params large_room;
489 large_room.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800490 large_room.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800491 large_room.analyzer = {"largeroom_5thumb", 0.0, 0.0,
492 kFullStackTestDurationSecs};
493 large_room.pipe.loss_percent = 0;
494 large_room.pipe.queue_delay_ms = 100;
495 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800496 video_params_high.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800497 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800498 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800499 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800500 video_params_low.video = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800501
502 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
503 DefaultVideoStream(video_params_medium),
504 DefaultVideoStream(video_params_high)};
505 large_room.num_thumbnails = 5;
506 large_room.ss = {streams, 2, 1, 0};
507 RunTest(large_room);
508}
509
ilnikf89a7382017-03-07 06:15:27 -0800510#if defined(WEBRTC_ANDROID) || defined(WEBRTC_WIN)
511// Fails on Android and win:
512// https://bugs.chromium.org/p/webrtc/issues/detail?id=7301
513#define MAYBE_LargeRoomVP8_50thumb DISABLED_LargeRoomVP8_50thumb
ilnik3ae7c252017-03-08 01:17:35 -0800514#define MAYBE_LargeRoomVP8_15thumb DISABLED_LargeRoomVP8_15thumb
ilnikf89a7382017-03-07 06:15:27 -0800515#else
516#define MAYBE_LargeRoomVP8_50thumb LargeRoomVP8_50thumb
ilnik3ae7c252017-03-08 01:17:35 -0800517#define MAYBE_LargeRoomVP8_15thumb LargeRoomVP8_15thumb
ilnikf89a7382017-03-07 06:15:27 -0800518#endif
519
520TEST_F(FullStackTest, MAYBE_LargeRoomVP8_15thumb) {
ilnika014cc52017-03-07 04:21:04 -0800521 VideoQualityTest::Params large_room;
522 large_room.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800523 large_room.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800524 large_room.analyzer = {"largeroom_15thumb", 0.0, 0.0,
525 kFullStackTestDurationSecs};
526 large_room.pipe.loss_percent = 0;
527 large_room.pipe.queue_delay_ms = 100;
528 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800529 video_params_high.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800530 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800531 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800532 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800533 video_params_low.video = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800534
535 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
536 DefaultVideoStream(video_params_medium),
537 DefaultVideoStream(video_params_high)};
538 large_room.num_thumbnails = 15;
539 large_room.ss = {streams, 2, 1, 0};
540 RunTest(large_room);
541}
542
ilnika014cc52017-03-07 04:21:04 -0800543TEST_F(FullStackTest, MAYBE_LargeRoomVP8_50thumb) {
544 VideoQualityTest::Params large_room;
545 large_room.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800546 large_room.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800547 large_room.analyzer = {"largeroom_50thumb", 0.0, 0.0,
548 kFullStackTestDurationSecs};
549 large_room.pipe.loss_percent = 0;
550 large_room.pipe.queue_delay_ms = 100;
551 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800552 video_params_high.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800553 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800554 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800555 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800556 video_params_low.video = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800557
558 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
559 DefaultVideoStream(video_params_medium),
560 DefaultVideoStream(video_params_high)};
561 large_room.num_thumbnails = 50;
562 large_room.ss = {streams, 2, 1, 0};
563 RunTest(large_room);
564}
565
566
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +0000567} // namespace webrtc