blob: c7f9fc1be1a5ced242361eda6e54c19245725856 [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}
Peter Boström12996152016-05-14 02:03:18 +0200363#endif // !defined(RTC_DISABLE_VP9)
brandtr93c5d032016-11-30 07:50:07 -0800364
ilnik3dd5ad92017-02-09 04:58:53 -0800365TEST_F(FullStackTest, SimulcastVP8_3SL_High) {
366 VideoQualityTest::Params simulcast;
367 simulcast.call.send_side_bwe = true;
368 simulcast.video = {true, 1280, 720, 50,
369 800000, 2500000, 2500000, false,
370 "VP8", 1, 0, 400000,
371 false, false, "", "ConferenceMotion_1280_720_50"};
372 simulcast.analyzer = {"simulcast_vp8_3sl_demo", 0.0, 0.0,
373 kFullStackTestDurationSecs};
374 simulcast.pipe.loss_percent = 0;
375 simulcast.pipe.queue_delay_ms = 100;
376 VideoQualityTest::Params video_params_high;
377 video_params_high.video = {
378 true, 1280, 720, 50,
379 800000, 2500000, 2500000, false,
380 "VP8", 1, 0, 400000,
381 false, false, "", "ConferenceMotion_1280_720_50"};
382 VideoQualityTest::Params video_params_medium;
383 video_params_medium.video = {
384 true, 640, 360, 50,
385 150000, 500000, 700000, false,
386 "VP8", 1, 0, 400000,
387 false, false, "", "ConferenceMotion_1280_720_50"};
388 VideoQualityTest::Params video_params_low;
389 video_params_low.video = {
390 true, 320, 180, 50,
391 30000, 150000, 200000, false,
392 "VP8", 1, 0, 400000,
393 false, false, "", "ConferenceMotion_1280_720_50"};
394
395 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
396 DefaultVideoStream(video_params_medium),
397 DefaultVideoStream(video_params_high)};
398 simulcast.ss = {streams, 2, 1, 0};
399 RunTest(simulcast);
400}
401
402TEST_F(FullStackTest, SimulcastVP8_3SL_Medium) {
403 VideoQualityTest::Params simulcast;
404 simulcast.call.send_side_bwe = true;
405 simulcast.video = {true, 1280, 720, 50,
406 800000, 2500000, 2500000, false,
407 "VP8", 1, 0, 400000,
408 false, false, "", "ConferenceMotion_1280_720_50"};
409 simulcast.analyzer = {"simulcast_vp8_3sl_demo", 0.0, 0.0,
410 kFullStackTestDurationSecs};
411 simulcast.pipe.loss_percent = 0;
412 simulcast.pipe.queue_delay_ms = 100;
413 VideoQualityTest::Params video_params_high;
414 video_params_high.video = {
415 true, 1280, 720, 50,
416 800000, 2500000, 2500000, false,
417 "VP8", 1, 0, 400000,
418 false, false, "", "ConferenceMotion_1280_720_50"};
419 VideoQualityTest::Params video_params_medium;
420 video_params_medium.video = {
421 true, 640, 360, 50,
422 150000, 500000, 700000, false,
423 "VP8", 1, 0, 400000,
424 false, false, "", "ConferenceMotion_1280_720_50"};
425 VideoQualityTest::Params video_params_low;
426 video_params_low.video = {
427 true, 320, 180, 50,
428 30000, 150000, 200000, false,
429 "VP8", 1, 0, 400000,
430 false, false, "", "ConferenceMotion_1280_720_50"};
431
432 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
433 DefaultVideoStream(video_params_medium),
434 DefaultVideoStream(video_params_high)};
435 simulcast.ss = {streams, 1, 1, 0};
436 RunTest(simulcast);
437}
438
439TEST_F(FullStackTest, SimulcastVP8_3SL_Low) {
440 VideoQualityTest::Params simulcast;
441 simulcast.call.send_side_bwe = true;
442 simulcast.video = {true, 1280, 720, 50,
443 800000, 2500000, 2500000, false,
444 "VP8", 1, 0, 400000,
445 false, false, "", "ConferenceMotion_1280_720_50"};
446 simulcast.analyzer = {"simulcast_vp8_3sl_demo", 0.0, 0.0,
447 kFullStackTestDurationSecs};
448 simulcast.pipe.loss_percent = 0;
449 simulcast.pipe.queue_delay_ms = 100;
450 VideoQualityTest::Params video_params_high;
451 video_params_high.video = {
452 true, 1280, 720, 50,
453 800000, 2500000, 2500000, false,
454 "VP8", 1, 0, 400000,
455 false, false, "", "ConferenceMotion_1280_720_50"};
456 VideoQualityTest::Params video_params_medium;
457 video_params_medium.video = {
458 true, 640, 360, 50,
459 150000, 500000, 700000, false,
460 "VP8", 1, 0, 400000,
461 false, false, "", "ConferenceMotion_1280_720_50"};
462 VideoQualityTest::Params video_params_low;
463 video_params_low.video = {
464 true, 320, 180, 50,
465 30000, 150000, 200000, false,
466 "VP8", 1, 0, 400000,
467 false, false, "", "ConferenceMotion_1280_720_50"};
468
469 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
470 DefaultVideoStream(video_params_medium),
471 DefaultVideoStream(video_params_high)};
472 simulcast.ss = {streams, 0, 1, 0};
473 RunTest(simulcast);
474}
475
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +0000476} // namespace webrtc