blob: 930f5e5acb972a3d5ebeea4ae39ea1011b263a9c [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
Peter Boström12996152016-05-14 02:03:18 +0200350#if !defined(RTC_DISABLE_VP9)
philipelcfc319b2015-11-10 07:17:23 -0800351TEST_F(FullStackTest, ScreenshareSlidesVP9_2SL) {
minyue626bc952016-10-31 05:47:02 -0700352 VideoQualityTest::Params screenshare;
353 screenshare.call.send_side_bwe = true;
354 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
brandtr1293aca2016-11-16 22:47:29 -0800355 "VP9", 1, 0, 400000, false, false, "", ""};
minyue626bc952016-10-31 05:47:02 -0700356 screenshare.screenshare = {true, 10};
357 screenshare.analyzer = {"screenshare_slides_vp9_2sl", 0.0, 0.0,
358 kFullStackTestDurationSecs};
359 screenshare.logs = false;
360 screenshare.ss = {std::vector<VideoStream>(), 0, 2, 1};
ivica5d6a06c2015-09-17 05:30:24 -0700361 RunTest(screenshare);
sprang@webrtc.org131bea82015-02-18 12:46:06 +0000362}
ilnik2a8c2f52017-02-15 02:23:28 -0800363
364TEST_F(FullStackTest, VP9SVC_3SL_High) {
365 VideoQualityTest::Params simulcast;
366 simulcast.call.send_side_bwe = true;
ilnika014cc52017-03-07 04:21:04 -0800367 simulcast.video = {true, 1280, 720, 30,
ilnik2a8c2f52017-02-15 02:23:28 -0800368 800000, 2500000, 2500000, false,
369 "VP9", 1, 0, 400000,
370 false, false, "", "ConferenceMotion_1280_720_50"};
371 simulcast.analyzer = {"vp9svc_3sl_high", 0.0, 0.0,
372 kFullStackTestDurationSecs};
373 simulcast.logs = false;
374 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 2};
375 RunTest(simulcast);
376}
377
378TEST_F(FullStackTest, VP9SVC_3SL_Medium) {
379 VideoQualityTest::Params simulcast;
380 simulcast.call.send_side_bwe = true;
ilnika014cc52017-03-07 04:21:04 -0800381 simulcast.video = {true, 1280, 720, 30,
ilnik2a8c2f52017-02-15 02:23:28 -0800382 800000, 2500000, 2500000, false,
383 "VP9", 1, 0, 400000,
384 false, false, "", "ConferenceMotion_1280_720_50"};
385 simulcast.analyzer = {"vp9svc_3sl_medium", 0.0, 0.0,
386 kFullStackTestDurationSecs};
387 simulcast.logs = false;
388 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 1};
389 RunTest(simulcast);
390}
391
392TEST_F(FullStackTest, VP9SVC_3SL_Low) {
393 VideoQualityTest::Params simulcast;
394 simulcast.call.send_side_bwe = true;
ilnika014cc52017-03-07 04:21:04 -0800395 simulcast.video = {true, 1280, 720, 30,
ilnik2a8c2f52017-02-15 02:23:28 -0800396 800000, 2500000, 2500000, false,
397 "VP9", 1, 0, 400000,
398 false, false, "", "ConferenceMotion_1280_720_50"};
399 simulcast.analyzer = {"vp9svc_3sl_low", 0.0, 0.0, kFullStackTestDurationSecs};
400 simulcast.logs = false;
401 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 0};
402 RunTest(simulcast);
403}
Peter Boström12996152016-05-14 02:03:18 +0200404#endif // !defined(RTC_DISABLE_VP9)
brandtr93c5d032016-11-30 07:50:07 -0800405
ilnik3dd5ad92017-02-09 04:58:53 -0800406TEST_F(FullStackTest, SimulcastVP8_3SL_High) {
407 VideoQualityTest::Params simulcast;
408 simulcast.call.send_side_bwe = true;
ilnika014cc52017-03-07 04:21:04 -0800409 simulcast.video = {true, 1280, 720, 30,
ilnik3dd5ad92017-02-09 04:58:53 -0800410 800000, 2500000, 2500000, false,
411 "VP8", 1, 0, 400000,
412 false, false, "", "ConferenceMotion_1280_720_50"};
ilnik2a8c2f52017-02-15 02:23:28 -0800413 simulcast.analyzer = {"simulcast_vp8_3sl_high", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800414 kFullStackTestDurationSecs};
415 simulcast.pipe.loss_percent = 0;
416 simulcast.pipe.queue_delay_ms = 100;
417 VideoQualityTest::Params video_params_high;
418 video_params_high.video = {
ilnika014cc52017-03-07 04:21:04 -0800419 true, 1280, 720, 30,
ilnik3dd5ad92017-02-09 04:58:53 -0800420 800000, 2500000, 2500000, false,
421 "VP8", 1, 0, 400000,
422 false, false, "", "ConferenceMotion_1280_720_50"};
423 VideoQualityTest::Params video_params_medium;
424 video_params_medium.video = {
ilnika014cc52017-03-07 04:21:04 -0800425 true, 640, 360, 30,
ilnik3dd5ad92017-02-09 04:58:53 -0800426 150000, 500000, 700000, false,
427 "VP8", 1, 0, 400000,
428 false, false, "", "ConferenceMotion_1280_720_50"};
429 VideoQualityTest::Params video_params_low;
430 video_params_low.video = {
ilnika014cc52017-03-07 04:21:04 -0800431 true, 320, 180, 30,
ilnik3dd5ad92017-02-09 04:58:53 -0800432 30000, 150000, 200000, false,
433 "VP8", 1, 0, 400000,
434 false, false, "", "ConferenceMotion_1280_720_50"};
435
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;
ilnika014cc52017-03-07 04:21:04 -0800446 simulcast.video = {true, 1280, 720, 30,
ilnik3dd5ad92017-02-09 04:58:53 -0800447 800000, 2500000, 2500000, false,
448 "VP8", 1, 0, 400000,
449 false, false, "", "ConferenceMotion_1280_720_50"};
ilnik2a8c2f52017-02-15 02:23:28 -0800450 simulcast.analyzer = {"simulcast_vp8_3sl_medium", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800451 kFullStackTestDurationSecs};
452 simulcast.pipe.loss_percent = 0;
453 simulcast.pipe.queue_delay_ms = 100;
454 VideoQualityTest::Params video_params_high;
455 video_params_high.video = {
ilnika014cc52017-03-07 04:21:04 -0800456 true, 1280, 720, 30,
ilnik3dd5ad92017-02-09 04:58:53 -0800457 800000, 2500000, 2500000, false,
458 "VP8", 1, 0, 400000,
459 false, false, "", "ConferenceMotion_1280_720_50"};
460 VideoQualityTest::Params video_params_medium;
461 video_params_medium.video = {
ilnika014cc52017-03-07 04:21:04 -0800462 true, 640, 360, 30,
ilnik3dd5ad92017-02-09 04:58:53 -0800463 150000, 500000, 700000, false,
464 "VP8", 1, 0, 400000,
465 false, false, "", "ConferenceMotion_1280_720_50"};
466 VideoQualityTest::Params video_params_low;
467 video_params_low.video = {
ilnika014cc52017-03-07 04:21:04 -0800468 true, 320, 180, 30,
ilnik3dd5ad92017-02-09 04:58:53 -0800469 30000, 150000, 200000, false,
470 "VP8", 1, 0, 400000,
471 false, false, "", "ConferenceMotion_1280_720_50"};
472
473 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
474 DefaultVideoStream(video_params_medium),
475 DefaultVideoStream(video_params_high)};
476 simulcast.ss = {streams, 1, 1, 0};
477 RunTest(simulcast);
478}
479
480TEST_F(FullStackTest, SimulcastVP8_3SL_Low) {
481 VideoQualityTest::Params simulcast;
482 simulcast.call.send_side_bwe = true;
ilnika014cc52017-03-07 04:21:04 -0800483 simulcast.video = {true, 1280, 720, 30,
ilnik3dd5ad92017-02-09 04:58:53 -0800484 800000, 2500000, 2500000, false,
485 "VP8", 1, 0, 400000,
486 false, false, "", "ConferenceMotion_1280_720_50"};
ilnik2a8c2f52017-02-15 02:23:28 -0800487 simulcast.analyzer = {"simulcast_vp8_3sl_low", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800488 kFullStackTestDurationSecs};
489 simulcast.pipe.loss_percent = 0;
490 simulcast.pipe.queue_delay_ms = 100;
491 VideoQualityTest::Params video_params_high;
492 video_params_high.video = {
ilnika014cc52017-03-07 04:21:04 -0800493 true, 1280, 720, 30,
ilnik3dd5ad92017-02-09 04:58:53 -0800494 800000, 2500000, 2500000, false,
495 "VP8", 1, 0, 400000,
496 false, false, "", "ConferenceMotion_1280_720_50"};
497 VideoQualityTest::Params video_params_medium;
498 video_params_medium.video = {
ilnika014cc52017-03-07 04:21:04 -0800499 true, 640, 360, 30,
ilnik3dd5ad92017-02-09 04:58:53 -0800500 150000, 500000, 700000, false,
501 "VP8", 1, 0, 400000,
502 false, false, "", "ConferenceMotion_1280_720_50"};
503 VideoQualityTest::Params video_params_low;
504 video_params_low.video = {
ilnika014cc52017-03-07 04:21:04 -0800505 true, 320, 180, 30,
ilnik3dd5ad92017-02-09 04:58:53 -0800506 30000, 150000, 200000, false,
507 "VP8", 1, 0, 400000,
508 false, false, "", "ConferenceMotion_1280_720_50"};
509
510 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
511 DefaultVideoStream(video_params_medium),
512 DefaultVideoStream(video_params_high)};
513 simulcast.ss = {streams, 0, 1, 0};
514 RunTest(simulcast);
515}
516
ilnika014cc52017-03-07 04:21:04 -0800517TEST_F(FullStackTest, LargeRoomVP8_5thumb) {
518 VideoQualityTest::Params large_room;
519 large_room.call.send_side_bwe = true;
520 large_room.video = {true, 1280, 720, 30,
521 800000, 2500000, 2500000, false,
522 "VP8", 3, 2, 400000,
523 false, false, "", "ConferenceMotion_1280_720_50"};
524 large_room.analyzer = {"largeroom_5thumb", 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;
529 video_params_high.video = {
530 true, 1280, 720, 30,
531 800000, 2500000, 2500000, false,
532 "VP8", 3, 2, 400000,
533 false, false, "", "ConferenceMotion_1280_720_50"};
534 VideoQualityTest::Params video_params_medium;
535 video_params_medium.video = {
536 true, 640, 360, 30,
537 150000, 500000, 700000, false,
538 "VP8", 3, 2, 400000,
539 false, false, "", "ConferenceMotion_1280_720_50"};
540 VideoQualityTest::Params video_params_low;
541 video_params_low.video = {
542 true, 320, 180, 30,
543 30000, 150000, 200000, false,
544 "VP8", 3, 2, 400000,
545 false, false, "", "ConferenceMotion_1280_720_50"};
546
547 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
548 DefaultVideoStream(video_params_medium),
549 DefaultVideoStream(video_params_high)};
550 large_room.num_thumbnails = 5;
551 large_room.ss = {streams, 2, 1, 0};
552 RunTest(large_room);
553}
554
555TEST_F(FullStackTest, LargeRoomVP8_15thumb) {
556 VideoQualityTest::Params large_room;
557 large_room.call.send_side_bwe = true;
558 large_room.video = {true, 1280, 720, 30,
559 800000, 2500000, 2500000, false,
560 "VP8", 3, 2, 400000,
561 false, false, "", "ConferenceMotion_1280_720_50"};
562 large_room.analyzer = {"largeroom_15thumb", 0.0, 0.0,
563 kFullStackTestDurationSecs};
564 large_room.pipe.loss_percent = 0;
565 large_room.pipe.queue_delay_ms = 100;
566 VideoQualityTest::Params video_params_high;
567 video_params_high.video = {
568 true, 1280, 720, 30,
569 800000, 2500000, 2500000, false,
570 "VP8", 3, 2, 400000,
571 false, false, "", "ConferenceMotion_1280_720_50"};
572 VideoQualityTest::Params video_params_medium;
573 video_params_medium.video = {
574 true, 640, 360, 30,
575 150000, 500000, 700000, false,
576 "VP8", 3, 2, 400000,
577 false, false, "", "ConferenceMotion_1280_720_50"};
578 VideoQualityTest::Params video_params_low;
579 video_params_low.video = {
580 true, 320, 180, 30,
581 30000, 150000, 200000, false,
582 "VP8", 3, 2, 400000,
583 false, false, "", "ConferenceMotion_1280_720_50"};
584
585 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
586 DefaultVideoStream(video_params_medium),
587 DefaultVideoStream(video_params_high)};
588 large_room.num_thumbnails = 15;
589 large_room.ss = {streams, 2, 1, 0};
590 RunTest(large_room);
591}
592
593#if defined(WEBRTC_ANDROID) || defined(WEBRTC_WIN)
594// Fails on Android and win:
595// https://bugs.chromium.org/p/webrtc/issues/detail?id=7301
596#define MAYBE_LargeRoomVP8_50thumb DISABLED_LargeRoomVP8_50thumb
597#else
598#define MAYBE_LargeRoomVP8_50thumb LargeRoomVP8_50thumb
599#endif
600
601TEST_F(FullStackTest, MAYBE_LargeRoomVP8_50thumb) {
602 VideoQualityTest::Params large_room;
603 large_room.call.send_side_bwe = true;
604 large_room.video = {true, 1280, 720, 30,
605 800000, 2500000, 2500000, false,
606 "VP8", 3, 2, 400000,
607 false, false, "", "ConferenceMotion_1280_720_50"};
608 large_room.analyzer = {"largeroom_50thumb", 0.0, 0.0,
609 kFullStackTestDurationSecs};
610 large_room.pipe.loss_percent = 0;
611 large_room.pipe.queue_delay_ms = 100;
612 VideoQualityTest::Params video_params_high;
613 video_params_high.video = {
614 true, 1280, 720, 30,
615 800000, 2500000, 2500000, false,
616 "VP8", 3, 2, 400000,
617 false, false, "", "ConferenceMotion_1280_720_50"};
618 VideoQualityTest::Params video_params_medium;
619 video_params_medium.video = {
620 true, 640, 360, 30,
621 150000, 500000, 700000, false,
622 "VP8", 3, 2, 400000,
623 false, false, "", "ConferenceMotion_1280_720_50"};
624 VideoQualityTest::Params video_params_low;
625 video_params_low.video = {
626 true, 320, 180, 30,
627 30000, 150000, 200000, false,
628 "VP8", 3, 2, 400000,
629 false, false, "", "ConferenceMotion_1280_720_50"};
630
631 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
632 DefaultVideoStream(video_params_medium),
633 DefaultVideoStream(video_params_high)};
634 large_room.num_thumbnails = 50;
635 large_room.ss = {streams, 2, 1, 0};
636 RunTest(large_room);
637}
638
639
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +0000640} // namespace webrtc