blob: ea1e37f9f050988ff4aed816a9b5002a07a2b520 [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
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020012#include "modules/pacing/alr_detector.h"
13#include "test/field_trial.h"
14#include "test/gtest.h"
15#include "video/video_quality_test.h"
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000016
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000017namespace webrtc {
18
sprang89c4a7e2017-06-30 13:27:40 -070019namespace {
brandtrdd369c62016-11-16 23:56:57 -080020static const int kFullStackTestDurationSecs = 45;
sprang89c4a7e2017-06-30 13:27:40 -070021} // namespace
pbos@webrtc.orgb613b5a2013-12-03 10:13:04 +000022
ivica5d6a06c2015-09-17 05:30:24 -070023class FullStackTest : public VideoQualityTest {
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000024 public:
ivica5d6a06c2015-09-17 05:30:24 -070025 void RunTest(const VideoQualityTest::Params &params) {
26 RunWithAnalyzer(params);
pbos@webrtc.org94015242013-10-16 11:05:37 +000027 }
sprang89c4a7e2017-06-30 13:27:40 -070028
29 protected:
30 const std::string kScreenshareSimulcastExperiment =
31 "WebRTC-SimulcastScreenshare/Enabled/";
32 const std::string kAlrProbingExperiment =
33 std::string(AlrDetector::kScreenshareProbingBweExperimentName) +
ilnik2ae19db2017-08-31 04:46:45 -070034 "/1.1,2875,85,20,-20,0/";
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000035};
36
sprangce4aef12015-11-02 07:23:20 -080037// VideoQualityTest::Params params = {
38// { ... }, // Common.
39// { ... }, // Video-specific settings.
40// { ... }, // Screenshare-specific settings.
41// { ... }, // Analyzer settings.
42// pipe, // FakeNetworkPipe::Config
43// { ... }, // Spatial scalability.
44// logs // bool
45// };
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000046
Peter Boström12996152016-05-14 02:03:18 +020047#if !defined(RTC_DISABLE_VP9)
asapersson88b0a222016-02-12 13:16:43 -080048TEST_F(FullStackTest, ForemanCifWithoutPacketLossVp9) {
brandtr93c5d032016-11-30 07:50:07 -080049 // TODO(pbos): Decide on psnr/ssim thresholds for foreman_cif.
50 VideoQualityTest::Params foreman_cif;
51 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +000052 foreman_cif.video = {true, 352, 288, 30, 700000, 700000, 700000, false,
53 "VP9", 1, 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -080054 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0_VP9", 0.0, 0.0,
55 kFullStackTestDurationSecs};
56 RunTest(foreman_cif);
asapersson88b0a222016-02-12 13:16:43 -080057}
58
59TEST_F(FullStackTest, ForemanCifPlr5Vp9) {
brandtr93c5d032016-11-30 07:50:07 -080060 VideoQualityTest::Params foreman_cif;
61 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +000062 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
63 "VP9", 1, 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -080064 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_VP9", 0.0, 0.0,
65 kFullStackTestDurationSecs};
66 foreman_cif.pipe.loss_percent = 5;
67 foreman_cif.pipe.queue_delay_ms = 50;
68 RunTest(foreman_cif);
asapersson88b0a222016-02-12 13:16:43 -080069}
Peter Boström12996152016-05-14 02:03:18 +020070#endif // !defined(RTC_DISABLE_VP9)
asapersson88b0a222016-02-12 13:16:43 -080071
pbos@webrtc.org994d0b72014-06-27 08:47:52 +000072TEST_F(FullStackTest, ParisQcifWithoutPacketLoss) {
minyue626bc952016-10-31 05:47:02 -070073 VideoQualityTest::Params paris_qcif;
74 paris_qcif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +000075 paris_qcif.video = {true, 176, 144, 30, 300000, 300000, 300000, false,
76 "VP8", 1, 0, 0, false, false, "paris_qcif"};
minyue626bc952016-10-31 05:47:02 -070077 paris_qcif.analyzer = {"net_delay_0_0_plr_0", 36.0, 0.96,
78 kFullStackTestDurationSecs};
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +000079 RunTest(paris_qcif);
pbos@webrtc.org994d0b72014-06-27 08:47:52 +000080}
81
82TEST_F(FullStackTest, ForemanCifWithoutPacketLoss) {
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +000083 // TODO(pbos): Decide on psnr/ssim thresholds for foreman_cif.
minyue626bc952016-10-31 05:47:02 -070084 VideoQualityTest::Params foreman_cif;
85 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +000086 foreman_cif.video = {true, 352, 288, 30, 700000, 700000, 700000, false,
87 "VP8", 1, 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -070088 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0", 0.0, 0.0,
89 kFullStackTestDurationSecs};
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +000090 RunTest(foreman_cif);
pbos@webrtc.org994d0b72014-06-27 08:47:52 +000091}
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +000092
asaperssonfb6ad3b2016-12-16 06:54:01 -080093TEST_F(FullStackTest, ForemanCif30kbpsWithoutPacketLoss) {
94 VideoQualityTest::Params foreman_cif;
95 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +000096 foreman_cif.video = {true, 352, 288, 10, 30000, 30000, 30000, false,
97 "VP8", 1, 0, 0, false, false, "foreman_cif"};
asaperssonfb6ad3b2016-12-16 06:54:01 -080098 foreman_cif.analyzer = {"foreman_cif_30kbps_net_delay_0_0_plr_0", 0.0, 0.0,
99 kFullStackTestDurationSecs};
100 RunTest(foreman_cif);
101}
102
sprang@webrtc.org343096a2015-02-23 08:34:17 +0000103TEST_F(FullStackTest, ForemanCifPlr5) {
minyue626bc952016-10-31 05:47:02 -0700104 VideoQualityTest::Params foreman_cif;
105 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000106 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
107 "VP8", 1, 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700108 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5", 0.0, 0.0,
109 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700110 foreman_cif.pipe.loss_percent = 5;
111 foreman_cif.pipe.queue_delay_ms = 50;
stefan@webrtc.orgc216b9a2014-10-14 10:38:49 +0000112 RunTest(foreman_cif);
113}
114
brandtr93c5d032016-11-30 07:50:07 -0800115TEST_F(FullStackTest, ForemanCifPlr5Ulpfec) {
116 VideoQualityTest::Params foreman_cif;
117 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000118 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
119 "VP8", 1, 0, 0, true, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800120 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_ulpfec", 0.0, 0.0,
121 kFullStackTestDurationSecs};
122 foreman_cif.pipe.loss_percent = 5;
123 foreman_cif.pipe.queue_delay_ms = 50;
124 RunTest(foreman_cif);
125}
126
127TEST_F(FullStackTest, ForemanCifPlr5Flexfec) {
128 VideoQualityTest::Params foreman_cif;
129 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000130 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
131 "VP8", 1, 0, 0, false, true, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800132 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_flexfec", 0.0, 0.0,
133 kFullStackTestDurationSecs};
134 foreman_cif.pipe.loss_percent = 5;
135 foreman_cif.pipe.queue_delay_ms = 50;
136 RunTest(foreman_cif);
137}
138
stefan889d9652017-07-05 03:03:02 -0700139TEST_F(FullStackTest, ForemanCif500kbpsPlr3Flexfec) {
140 VideoQualityTest::Params foreman_cif;
141 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000142 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
143 "VP8", 1, 0, 0, false, true, "foreman_cif"};
stefan889d9652017-07-05 03:03:02 -0700144 foreman_cif.analyzer = {"foreman_cif_500kbps_delay_50_0_plr_3_flexfec", 0.0,
145 0.0, kFullStackTestDurationSecs};
146 foreman_cif.pipe.loss_percent = 3;
147 foreman_cif.pipe.link_capacity_kbps = 500;
148 foreman_cif.pipe.queue_delay_ms = 50;
149 RunTest(foreman_cif);
150}
151
152TEST_F(FullStackTest, ForemanCif500kbpsPlr3Ulpfec) {
153 VideoQualityTest::Params foreman_cif;
154 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000155 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
156 "VP8", 1, 0, 0, true, false, "foreman_cif"};
stefan889d9652017-07-05 03:03:02 -0700157 foreman_cif.analyzer = {"foreman_cif_500kbps_delay_50_0_plr_3_ulpfec", 0.0,
158 0.0, kFullStackTestDurationSecs};
159 foreman_cif.pipe.loss_percent = 3;
160 foreman_cif.pipe.link_capacity_kbps = 500;
161 foreman_cif.pipe.queue_delay_ms = 50;
162 RunTest(foreman_cif);
163}
164
brandtrdd369c62016-11-16 23:56:57 -0800165#if defined(WEBRTC_USE_H264)
166TEST_F(FullStackTest, ForemanCifWithoutPacketlossH264) {
brandtr93c5d032016-11-30 07:50:07 -0800167 // TODO(pbos): Decide on psnr/ssim thresholds for foreman_cif.
168 VideoQualityTest::Params foreman_cif;
169 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000170 foreman_cif.video = {true, 352, 288, 30, 700000,
171 700000, 700000, false, "H264", 1,
172 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800173 foreman_cif.analyzer = {"foreman_cif_net_delay_0_0_plr_0_H264", 0.0, 0.0,
174 kFullStackTestDurationSecs};
175 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800176}
177
asaperssonfb6ad3b2016-12-16 06:54:01 -0800178TEST_F(FullStackTest, ForemanCif30kbpsWithoutPacketlossH264) {
179 VideoQualityTest::Params foreman_cif;
180 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000181 foreman_cif.video = {true, 352, 288, 10, 30000, 30000, 30000, false,
182 "H264", 1, 0, 0, false, false, "foreman_cif"};
asaperssonfb6ad3b2016-12-16 06:54:01 -0800183 foreman_cif.analyzer = {"foreman_cif_30kbps_net_delay_0_0_plr_0_H264", 0.0,
184 0.0, kFullStackTestDurationSecs};
185 RunTest(foreman_cif);
186}
187
brandtrdd369c62016-11-16 23:56:57 -0800188TEST_F(FullStackTest, ForemanCifPlr5H264) {
brandtr93c5d032016-11-30 07:50:07 -0800189 VideoQualityTest::Params foreman_cif;
190 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000191 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
192 "H264", 1, 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800193 std::string fec_description;
194 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264", 0.0, 0.0,
195 kFullStackTestDurationSecs};
196 foreman_cif.pipe.loss_percent = 5;
197 foreman_cif.pipe.queue_delay_ms = 50;
198 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800199}
200
201// Verify that this is worth the bot time, before enabling.
202TEST_F(FullStackTest, ForemanCifPlr5H264Flexfec) {
brandtr93c5d032016-11-30 07:50:07 -0800203 VideoQualityTest::Params foreman_cif;
204 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000205 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
206 "H264", 1, 0, 0, false, true, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800207 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264_flexfec", 0.0, 0.0,
208 kFullStackTestDurationSecs};
209 foreman_cif.pipe.loss_percent = 5;
210 foreman_cif.pipe.queue_delay_ms = 50;
211 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800212}
213
214// Ulpfec with H264 is an unsupported combination, so this test is only useful
215// for debugging. It is therefore disabled by default.
216TEST_F(FullStackTest, DISABLED_ForemanCifPlr5H264Ulpfec) {
brandtr93c5d032016-11-30 07:50:07 -0800217 VideoQualityTest::Params foreman_cif;
218 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000219 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
220 "H264", 1, 0, 0, true, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800221 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264_ulpfec", 0.0, 0.0,
222 kFullStackTestDurationSecs};
223 foreman_cif.pipe.loss_percent = 5;
224 foreman_cif.pipe.queue_delay_ms = 50;
225 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800226}
227#endif // defined(WEBRTC_USE_H264)
228
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000229TEST_F(FullStackTest, ForemanCif500kbps) {
minyue626bc952016-10-31 05:47:02 -0700230 VideoQualityTest::Params foreman_cif;
231 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000232 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
233 "VP8", 1, 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700234 foreman_cif.analyzer = {"foreman_cif_500kbps", 0.0, 0.0,
235 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700236 foreman_cif.pipe.queue_length_packets = 0;
237 foreman_cif.pipe.queue_delay_ms = 0;
238 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000239 RunTest(foreman_cif);
240}
241
242TEST_F(FullStackTest, ForemanCif500kbpsLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700243 VideoQualityTest::Params foreman_cif;
244 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000245 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
246 "VP8", 1, 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700247 foreman_cif.analyzer = {"foreman_cif_500kbps_32pkts_queue", 0.0, 0.0,
248 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700249 foreman_cif.pipe.queue_length_packets = 32;
250 foreman_cif.pipe.queue_delay_ms = 0;
251 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000252 RunTest(foreman_cif);
253}
254
255TEST_F(FullStackTest, ForemanCif500kbps100ms) {
minyue626bc952016-10-31 05:47:02 -0700256 VideoQualityTest::Params foreman_cif;
257 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000258 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
259 "VP8", 1, 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700260 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms", 0.0, 0.0,
261 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700262 foreman_cif.pipe.queue_length_packets = 0;
263 foreman_cif.pipe.queue_delay_ms = 100;
264 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000265 RunTest(foreman_cif);
266}
267
268TEST_F(FullStackTest, ForemanCif500kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700269 VideoQualityTest::Params foreman_cif;
270 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000271 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
272 "VP8", 1, 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700273 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms_32pkts_queue", 0.0, 0.0,
274 kFullStackTestDurationSecs};
stefanb1797672016-08-11 07:00:57 -0700275 foreman_cif.pipe.queue_length_packets = 32;
276 foreman_cif.pipe.queue_delay_ms = 100;
277 foreman_cif.pipe.link_capacity_kbps = 500;
278 RunTest(foreman_cif);
279}
280
281TEST_F(FullStackTest, ForemanCif500kbps100msLimitedQueueRecvBwe) {
minyue626bc952016-10-31 05:47:02 -0700282 VideoQualityTest::Params foreman_cif;
brandtr93c5d032016-11-30 07:50:07 -0800283 foreman_cif.call.send_side_bwe = false;
Rasmus Brandt31027342017-09-29 13:48:12 +0000284 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
285 "VP8", 1, 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800286 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms_32pkts_queue_recv_bwe",
287 0.0, 0.0, kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700288 foreman_cif.pipe.queue_length_packets = 32;
289 foreman_cif.pipe.queue_delay_ms = 100;
290 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000291 RunTest(foreman_cif);
292}
293
294TEST_F(FullStackTest, ForemanCif1000kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700295 VideoQualityTest::Params foreman_cif;
296 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000297 foreman_cif.video = {true, 352, 288, 30, 30000, 2000000, 2000000, false,
298 "VP8", 1, 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700299 foreman_cif.analyzer = {"foreman_cif_1000kbps_100ms_32pkts_queue", 0.0, 0.0,
300 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700301 foreman_cif.pipe.queue_length_packets = 32;
302 foreman_cif.pipe.queue_delay_ms = 100;
303 foreman_cif.pipe.link_capacity_kbps = 1000;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000304 RunTest(foreman_cif);
305}
sprang@webrtc.org131bea82015-02-18 12:46:06 +0000306
sprangff19d352017-09-06 07:14:02 -0700307// TODO(sprang): Remove this if we have the similar ModerateLimits below?
stefanb1797672016-08-11 07:00:57 -0700308TEST_F(FullStackTest, ConferenceMotionHd2000kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700309 VideoQualityTest::Params conf_motion_hd;
310 conf_motion_hd.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000311 conf_motion_hd.video = {
312 true, 1280, 720, 50, 30000,
313 3000000, 3000000, false, "VP8", 1,
314 0, 0, false, false, "ConferenceMotion_1280_720_50"};
minyue626bc952016-10-31 05:47:02 -0700315 conf_motion_hd.analyzer = {"conference_motion_hd_2000kbps_100ms_32pkts_queue",
316 0.0, 0.0, kFullStackTestDurationSecs};
stefanb1797672016-08-11 07:00:57 -0700317 conf_motion_hd.pipe.queue_length_packets = 32;
318 conf_motion_hd.pipe.queue_delay_ms = 100;
319 conf_motion_hd.pipe.link_capacity_kbps = 2000;
320 RunTest(conf_motion_hd);
321}
322
sprangff19d352017-09-06 07:14:02 -0700323TEST_F(FullStackTest, ConferenceMotionHd1TLModerateLimits) {
324 VideoQualityTest::Params conf_motion_hd;
325 conf_motion_hd.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000326 conf_motion_hd.video = {
327 true, 1280, 720, 50, 30000,
328 3000000, 3000000, false, "VP8", 1,
329 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700330 conf_motion_hd.analyzer = {"conference_motion_hd_1tl_moderate_limits", 0.0,
331 0.0, kFullStackTestDurationSecs};
332 conf_motion_hd.pipe.queue_length_packets = 50;
333 conf_motion_hd.pipe.loss_percent = 3;
334 conf_motion_hd.pipe.queue_delay_ms = 100;
335 conf_motion_hd.pipe.link_capacity_kbps = 2000;
336 RunTest(conf_motion_hd);
337}
338
339TEST_F(FullStackTest, ConferenceMotionHd2TLModerateLimits) {
340 VideoQualityTest::Params conf_motion_hd;
341 conf_motion_hd.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000342 conf_motion_hd.video = {
343 true, 1280, 720, 50, 30000,
344 3000000, 3000000, false, "VP8", 2,
345 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700346 conf_motion_hd.analyzer = {"conference_motion_hd_2tl_moderate_limits", 0.0,
347 0.0, kFullStackTestDurationSecs};
348 conf_motion_hd.pipe.queue_length_packets = 50;
349 conf_motion_hd.pipe.loss_percent = 3;
350 conf_motion_hd.pipe.queue_delay_ms = 100;
351 conf_motion_hd.pipe.link_capacity_kbps = 2000;
352 RunTest(conf_motion_hd);
353}
354
355TEST_F(FullStackTest, ConferenceMotionHd3TLModerateLimits) {
356 VideoQualityTest::Params conf_motion_hd;
357 conf_motion_hd.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000358 conf_motion_hd.video = {
359 true, 1280, 720, 50, 30000,
360 3000000, 3000000, false, "VP8", 3,
361 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700362 conf_motion_hd.analyzer = {"conference_motion_hd_3tl_moderate_limits", 0.0,
363 0.0, kFullStackTestDurationSecs};
364 conf_motion_hd.pipe.queue_length_packets = 50;
365 conf_motion_hd.pipe.loss_percent = 3;
366 conf_motion_hd.pipe.queue_delay_ms = 100;
367 conf_motion_hd.pipe.link_capacity_kbps = 2000;
368 RunTest(conf_motion_hd);
369}
370
371TEST_F(FullStackTest, ConferenceMotionHd4TLModerateLimits) {
372 VideoQualityTest::Params conf_motion_hd;
373 conf_motion_hd.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000374 conf_motion_hd.video = {
375 true, 1280, 720, 50, 30000,
376 3000000, 3000000, false, "VP8", 4,
377 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700378 conf_motion_hd.analyzer = {"conference_motion_hd_4tl_moderate_limits", 0.0,
379 0.0, kFullStackTestDurationSecs};
380 conf_motion_hd.pipe.queue_length_packets = 50;
381 conf_motion_hd.pipe.loss_percent = 3;
382 conf_motion_hd.pipe.queue_delay_ms = 100;
383 conf_motion_hd.pipe.link_capacity_kbps = 2000;
384 RunTest(conf_motion_hd);
385}
386
387TEST_F(FullStackTest, ConferenceMotionHd3TLModerateLimitsAltTLPattern) {
388 test::ScopedFieldTrials field_trial("WebRTC-UseShortVP8TL3Pattern/Enabled/");
389 VideoQualityTest::Params conf_motion_hd;
390 conf_motion_hd.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000391 conf_motion_hd.video = {
392 true, 1280, 720, 50, 30000,
393 3000000, 3000000, false, "VP8", 3,
394 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700395 conf_motion_hd.analyzer = {"conference_motion_hd_3tl_alt_moderate_limits",
396 0.0, 0.0, kFullStackTestDurationSecs};
397 conf_motion_hd.pipe.queue_length_packets = 50;
398 conf_motion_hd.pipe.loss_percent = 3;
399 conf_motion_hd.pipe.queue_delay_ms = 100;
400 conf_motion_hd.pipe.link_capacity_kbps = 2000;
401 RunTest(conf_motion_hd);
402}
403
jianj390e64d2017-02-03 09:51:23 -0800404#if !defined(RTC_DISABLE_VP9)
405TEST_F(FullStackTest, ConferenceMotionHd2000kbps100msLimitedQueueVP9) {
406 VideoQualityTest::Params conf_motion_hd;
407 conf_motion_hd.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000408 conf_motion_hd.video = {
409 true, 1280, 720, 50, 30000,
410 3000000, 3000000, false, "VP9", 1,
411 0, 0, false, false, "ConferenceMotion_1280_720_50"};
jianj390e64d2017-02-03 09:51:23 -0800412 conf_motion_hd.analyzer = {
413 "conference_motion_hd_2000kbps_100ms_32pkts_queue_vp9", 0.0, 0.0,
414 kFullStackTestDurationSecs};
415 conf_motion_hd.pipe.queue_length_packets = 32;
416 conf_motion_hd.pipe.queue_delay_ms = 100;
417 conf_motion_hd.pipe.link_capacity_kbps = 2000;
418 RunTest(conf_motion_hd);
419}
420#endif
421
ivica7bd242e2015-10-06 02:04:06 -0700422TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL) {
minyue626bc952016-10-31 05:47:02 -0700423 VideoQualityTest::Params screenshare;
424 screenshare.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000425 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
426 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700427 screenshare.screenshare = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700428 screenshare.analyzer = {"screenshare_slides", 0.0, 0.0,
429 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700430 RunTest(screenshare);
Erik SprĂ¥ng6ee69aa2015-09-03 15:58:05 +0200431}
432
ilnikcb8c1462017-03-09 09:23:30 -0800433TEST_F(FullStackTest, ScreenshareSlidesVP8_3TL_Simulcast) {
sprang89c4a7e2017-06-30 13:27:40 -0700434 test::ScopedFieldTrials field_trial(kScreenshareSimulcastExperiment);
ilnikcb8c1462017-03-09 09:23:30 -0800435 VideoQualityTest::Params screenshare;
436 screenshare.call.send_side_bwe = true;
erikvarga579de6f2017-08-29 09:12:57 -0700437 screenshare.screenshare = {true, false, 10};
Rasmus Brandt31027342017-09-29 13:48:12 +0000438 screenshare.video = {true, 1850, 1110, 5, 800000,
439 2500000, 2500000, false, "VP8", 3,
440 2, 400000, false, false, ""};
ilnikcb8c1462017-03-09 09:23:30 -0800441 screenshare.analyzer = {"screenshare_slides_simulcast", 0.0, 0.0,
442 kFullStackTestDurationSecs};
443 VideoQualityTest::Params screenshare_params_high;
Rasmus Brandt31027342017-09-29 13:48:12 +0000444 screenshare_params_high.video = {true, 1850, 1110, 5, 800000,
445 2500000, 2500000, false, "VP8", 3,
446 0, 400000, false, false, ""};
ilnikcb8c1462017-03-09 09:23:30 -0800447 VideoQualityTest::Params screenshare_params_low;
Rasmus Brandt31027342017-09-29 13:48:12 +0000448 screenshare_params_low.video = {true, 1850, 1110, 5, 50000,
449 200000, 2000000, false, "VP8", 2,
450 0, 400000, false, false, ""};
ilnikcb8c1462017-03-09 09:23:30 -0800451
452 std::vector<VideoStream> streams = {
453 DefaultVideoStream(screenshare_params_low),
454 DefaultVideoStream(screenshare_params_high)};
ilnik6b826ef2017-06-16 06:53:48 -0700455 screenshare.ss = {streams, 1, 1, 0, std::vector<SpatialLayer>(), false};
ilnikcb8c1462017-03-09 09:23:30 -0800456 RunTest(screenshare);
457}
458
ivica7bd242e2015-10-06 02:04:06 -0700459TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_Scroll) {
minyue626bc952016-10-31 05:47:02 -0700460 VideoQualityTest::Params config;
461 config.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000462 config.video = {true, 1850, 1110 / 2, 5, 50000, 200000, 2000000, false,
463 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700464 config.screenshare = {true, false, 10, 2};
minyue626bc952016-10-31 05:47:02 -0700465 config.analyzer = {"screenshare_slides_scrolling", 0.0, 0.0,
466 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700467 RunTest(config);
ivica028cf482015-07-30 02:15:56 -0700468}
469
sprangee37de32015-11-23 06:10:23 -0800470TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNet) {
minyue626bc952016-10-31 05:47:02 -0700471 VideoQualityTest::Params screenshare;
472 screenshare.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000473 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
474 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700475 screenshare.screenshare = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700476 screenshare.analyzer = {"screenshare_slides_lossy_net", 0.0, 0.0,
477 kFullStackTestDurationSecs};
sprangee37de32015-11-23 06:10:23 -0800478 screenshare.pipe.loss_percent = 5;
479 screenshare.pipe.queue_delay_ms = 200;
480 screenshare.pipe.link_capacity_kbps = 500;
481 RunTest(screenshare);
482}
483
484TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_VeryLossyNet) {
minyue626bc952016-10-31 05:47:02 -0700485 VideoQualityTest::Params screenshare;
486 screenshare.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000487 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
488 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700489 screenshare.screenshare = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700490 screenshare.analyzer = {"screenshare_slides_very_lossy", 0.0, 0.0,
491 kFullStackTestDurationSecs};
sprangee37de32015-11-23 06:10:23 -0800492 screenshare.pipe.loss_percent = 10;
493 screenshare.pipe.queue_delay_ms = 200;
494 screenshare.pipe.link_capacity_kbps = 500;
495 RunTest(screenshare);
496}
497
sprange566e172017-06-08 01:29:15 -0700498TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNetRestrictedQueue) {
499 VideoQualityTest::Params screenshare;
500 screenshare.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000501 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
502 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700503 screenshare.screenshare = {true, false, 10};
sprange566e172017-06-08 01:29:15 -0700504 screenshare.analyzer = {"screenshare_slides_lossy_limited", 0.0, 0.0,
505 kFullStackTestDurationSecs};
506 screenshare.pipe.loss_percent = 5;
507 screenshare.pipe.link_capacity_kbps = 200;
508 screenshare.pipe.queue_length_packets = 30;
509
510 RunTest(screenshare);
511}
512
sprang89c4a7e2017-06-30 13:27:40 -0700513TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ModeratelyRestricted) {
514 VideoQualityTest::Params screenshare;
515 screenshare.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000516 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
517 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700518 screenshare.screenshare = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700519 screenshare.analyzer = {"screenshare_slides_moderately_restricted", 0.0, 0.0,
520 kFullStackTestDurationSecs};
521 screenshare.pipe.loss_percent = 1;
522 screenshare.pipe.link_capacity_kbps = 1200;
523 screenshare.pipe.queue_length_packets = 30;
524
525 RunTest(screenshare);
526}
527
528// TODO(sprang): Retire these tests once experiment is removed.
529TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNetRestrictedQueue_ALR) {
530 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
531 VideoQualityTest::Params screenshare;
532 screenshare.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000533 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
534 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700535 screenshare.screenshare = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700536 screenshare.analyzer = {"screenshare_slides_lossy_limited_ALR", 0.0, 0.0,
537 kFullStackTestDurationSecs};
538 screenshare.pipe.loss_percent = 5;
539 screenshare.pipe.link_capacity_kbps = 200;
540 screenshare.pipe.queue_length_packets = 30;
541
542 RunTest(screenshare);
543}
544
545TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ALR) {
546 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
547 VideoQualityTest::Params screenshare;
548 screenshare.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000549 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
550 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700551 screenshare.screenshare = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700552 screenshare.analyzer = {"screenshare_slides_ALR", 0.0, 0.0,
553 kFullStackTestDurationSecs};
554 RunTest(screenshare);
555}
556
557TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ModeratelyRestricted_ALR) {
558 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
559 VideoQualityTest::Params screenshare;
560 screenshare.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000561 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
562 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700563 screenshare.screenshare = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700564 screenshare.analyzer = {"screenshare_slides_moderately_restricted_ALR", 0.0,
565 0.0, kFullStackTestDurationSecs};
566 screenshare.pipe.loss_percent = 1;
567 screenshare.pipe.link_capacity_kbps = 1200;
568 screenshare.pipe.queue_length_packets = 30;
569
570 RunTest(screenshare);
571}
572
573TEST_F(FullStackTest, ScreenshareSlidesVP8_3TL_Simulcast_ALR) {
574 test::ScopedFieldTrials field_trial(kScreenshareSimulcastExperiment +
575 kAlrProbingExperiment);
576 VideoQualityTest::Params screenshare;
577 screenshare.call.send_side_bwe = true;
erikvarga579de6f2017-08-29 09:12:57 -0700578 screenshare.screenshare = {true, false, 10};
Rasmus Brandt31027342017-09-29 13:48:12 +0000579 screenshare.video = {true, 1850, 1110, 5, 800000,
580 2500000, 2500000, false, "VP8", 3,
581 2, 400000, false, false, ""};
sprang89c4a7e2017-06-30 13:27:40 -0700582 screenshare.analyzer = {"screenshare_slides_simulcast_alr", 0.0, 0.0,
583 kFullStackTestDurationSecs};
584 VideoQualityTest::Params screenshare_params_high;
Rasmus Brandt31027342017-09-29 13:48:12 +0000585 screenshare_params_high.video = {true, 1850, 1110, 5, 800000,
586 2500000, 2500000, false, "VP8", 3,
587 0, 400000, false, false, ""};
sprang89c4a7e2017-06-30 13:27:40 -0700588 VideoQualityTest::Params screenshare_params_low;
Rasmus Brandt31027342017-09-29 13:48:12 +0000589 screenshare_params_low.video = {true, 1850, 1110, 5, 50000,
590 200000, 2000000, false, "VP8", 2,
591 0, 400000, false, false, ""};
sprang89c4a7e2017-06-30 13:27:40 -0700592
593 std::vector<VideoStream> streams = {
594 DefaultVideoStream(screenshare_params_low),
595 DefaultVideoStream(screenshare_params_high)};
596 screenshare.ss = {streams, 1, 1, 0, std::vector<SpatialLayer>(), false};
597 RunTest(screenshare);
598}
599
ilnik566c43b2017-03-07 04:42:54 -0800600const VideoQualityTest::Params::Video kSvcVp9Video = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000601 true, 1280, 720, 30, 800000,
602 2500000, 2500000, false, "VP9", 3,
603 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800604
605const VideoQualityTest::Params::Video kSimulcastVp8VideoHigh = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000606 true, 1280, 720, 30, 800000,
607 2500000, 2500000, false, "VP8", 3,
608 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800609
610const VideoQualityTest::Params::Video kSimulcastVp8VideoMedium = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000611 true, 640, 360, 30, 150000,
612 500000, 700000, false, "VP8", 3,
613 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800614
615const VideoQualityTest::Params::Video kSimulcastVp8VideoLow = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000616 true, 320, 180, 30, 30000,
617 150000, 200000, false, "VP8", 3,
618 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800619
Peter Boström12996152016-05-14 02:03:18 +0200620#if !defined(RTC_DISABLE_VP9)
marpan5f4aaeb2017-04-06 10:52:23 -0700621TEST_F(FullStackTest, ScreenshareSlidesVP9_2SL) {
minyue626bc952016-10-31 05:47:02 -0700622 VideoQualityTest::Params screenshare;
623 screenshare.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000624 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
625 "VP9", 1, 0, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700626 screenshare.screenshare = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700627 screenshare.analyzer = {"screenshare_slides_vp9_2sl", 0.0, 0.0,
628 kFullStackTestDurationSecs};
ilnik6b826ef2017-06-16 06:53:48 -0700629 screenshare.ss = {std::vector<VideoStream>(), 0, 2, 1,
630 std::vector<SpatialLayer>(), false};
ivica5d6a06c2015-09-17 05:30:24 -0700631 RunTest(screenshare);
sprang@webrtc.org131bea82015-02-18 12:46:06 +0000632}
ilnik2a8c2f52017-02-15 02:23:28 -0800633
634TEST_F(FullStackTest, VP9SVC_3SL_High) {
635 VideoQualityTest::Params simulcast;
636 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800637 simulcast.video = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800638 simulcast.analyzer = {"vp9svc_3sl_high", 0.0, 0.0,
639 kFullStackTestDurationSecs};
ilnik6b826ef2017-06-16 06:53:48 -0700640 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 2,
641 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800642 RunTest(simulcast);
643}
644
645TEST_F(FullStackTest, VP9SVC_3SL_Medium) {
646 VideoQualityTest::Params simulcast;
647 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800648 simulcast.video = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800649 simulcast.analyzer = {"vp9svc_3sl_medium", 0.0, 0.0,
650 kFullStackTestDurationSecs};
ilnik6b826ef2017-06-16 06:53:48 -0700651 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 1,
652 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800653 RunTest(simulcast);
654}
655
656TEST_F(FullStackTest, VP9SVC_3SL_Low) {
657 VideoQualityTest::Params simulcast;
658 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800659 simulcast.video = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800660 simulcast.analyzer = {"vp9svc_3sl_low", 0.0, 0.0, kFullStackTestDurationSecs};
ilnik6b826ef2017-06-16 06:53:48 -0700661 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 0,
662 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800663 RunTest(simulcast);
664}
Peter Boström12996152016-05-14 02:03:18 +0200665#endif // !defined(RTC_DISABLE_VP9)
brandtr93c5d032016-11-30 07:50:07 -0800666
ilnik6b826ef2017-06-16 06:53:48 -0700667// Android bots can't handle FullHD, so disable the test.
ilnik267041c2017-06-27 07:21:01 -0700668#if defined(WEBRTC_ANDROID)
ilnik6b826ef2017-06-16 06:53:48 -0700669#define MAYBE_SimulcastFullHdOveruse DISABLED_SimulcastFullHdOveruse
670#else
671#define MAYBE_SimulcastFullHdOveruse SimulcastFullHdOveruse
672#endif
673
674TEST_F(FullStackTest, MAYBE_SimulcastFullHdOveruse) {
675 VideoQualityTest::Params simulcast;
676 simulcast.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000677 simulcast.video = {true, 1920, 1080, 30, 800000,
678 2500000, 2500000, false, "VP8", 3,
679 2, 400000, false, false, "Generator"};
ilnik6b826ef2017-06-16 06:53:48 -0700680 simulcast.analyzer = {"simulcast_HD_high", 0.0, 0.0,
681 kFullStackTestDurationSecs};
682 simulcast.pipe.loss_percent = 0;
683 simulcast.pipe.queue_delay_ms = 100;
684 std::vector<VideoStream> streams = {DefaultVideoStream(simulcast),
685 DefaultVideoStream(simulcast),
686 DefaultVideoStream(simulcast)};
687 simulcast.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), true};
688 webrtc::test::ScopedFieldTrials override_trials(
689 "WebRTC-ForceSimulatedOveruseIntervalMs/1000-50000-300/");
690 RunTest(simulcast);
691}
692
ilnik3dd5ad92017-02-09 04:58:53 -0800693TEST_F(FullStackTest, SimulcastVP8_3SL_High) {
694 VideoQualityTest::Params simulcast;
695 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800696 simulcast.video = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800697 simulcast.analyzer = {"simulcast_vp8_3sl_high", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800698 kFullStackTestDurationSecs};
699 simulcast.pipe.loss_percent = 0;
700 simulcast.pipe.queue_delay_ms = 100;
701 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800702 video_params_high.video = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800703 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800704 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800705 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800706 video_params_low.video = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800707
708 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
709 DefaultVideoStream(video_params_medium),
710 DefaultVideoStream(video_params_high)};
ilnik6b826ef2017-06-16 06:53:48 -0700711 simulcast.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnik3dd5ad92017-02-09 04:58:53 -0800712 RunTest(simulcast);
713}
714
715TEST_F(FullStackTest, SimulcastVP8_3SL_Medium) {
716 VideoQualityTest::Params simulcast;
717 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800718 simulcast.video = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800719 simulcast.analyzer = {"simulcast_vp8_3sl_medium", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800720 kFullStackTestDurationSecs};
721 simulcast.pipe.loss_percent = 0;
722 simulcast.pipe.queue_delay_ms = 100;
723 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800724 video_params_high.video = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800725 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800726 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800727 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800728 video_params_low.video = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800729
730 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
731 DefaultVideoStream(video_params_medium),
732 DefaultVideoStream(video_params_high)};
ilnik6b826ef2017-06-16 06:53:48 -0700733 simulcast.ss = {streams, 1, 1, 0, std::vector<SpatialLayer>(), false};
ilnik3dd5ad92017-02-09 04:58:53 -0800734 RunTest(simulcast);
735}
736
737TEST_F(FullStackTest, SimulcastVP8_3SL_Low) {
738 VideoQualityTest::Params simulcast;
739 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800740 simulcast.video = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800741 simulcast.analyzer = {"simulcast_vp8_3sl_low", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800742 kFullStackTestDurationSecs};
743 simulcast.pipe.loss_percent = 0;
744 simulcast.pipe.queue_delay_ms = 100;
745 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800746 video_params_high.video = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800747 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800748 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800749 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800750 video_params_low.video = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800751
752 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
753 DefaultVideoStream(video_params_medium),
754 DefaultVideoStream(video_params_high)};
ilnik6b826ef2017-06-16 06:53:48 -0700755 simulcast.ss = {streams, 0, 1, 0, std::vector<SpatialLayer>(), false};
ilnik3dd5ad92017-02-09 04:58:53 -0800756 RunTest(simulcast);
757}
758
ilnika014cc52017-03-07 04:21:04 -0800759TEST_F(FullStackTest, LargeRoomVP8_5thumb) {
760 VideoQualityTest::Params large_room;
761 large_room.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800762 large_room.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800763 large_room.analyzer = {"largeroom_5thumb", 0.0, 0.0,
764 kFullStackTestDurationSecs};
765 large_room.pipe.loss_percent = 0;
766 large_room.pipe.queue_delay_ms = 100;
767 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800768 video_params_high.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800769 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800770 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800771 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800772 video_params_low.video = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800773
774 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
775 DefaultVideoStream(video_params_medium),
776 DefaultVideoStream(video_params_high)};
ilnik98436952017-07-13 00:47:03 -0700777 large_room.call.num_thumbnails = 5;
ilnik6b826ef2017-06-16 06:53:48 -0700778 large_room.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnika014cc52017-03-07 04:21:04 -0800779 RunTest(large_room);
780}
781
oprypin743117f2017-09-15 05:24:24 -0700782#if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS)
783// Fails on mobile devices:
ilnikf89a7382017-03-07 06:15:27 -0800784// https://bugs.chromium.org/p/webrtc/issues/detail?id=7301
785#define MAYBE_LargeRoomVP8_50thumb DISABLED_LargeRoomVP8_50thumb
ilnik3ae7c252017-03-08 01:17:35 -0800786#define MAYBE_LargeRoomVP8_15thumb DISABLED_LargeRoomVP8_15thumb
ilnikf89a7382017-03-07 06:15:27 -0800787#else
788#define MAYBE_LargeRoomVP8_50thumb LargeRoomVP8_50thumb
ilnik3ae7c252017-03-08 01:17:35 -0800789#define MAYBE_LargeRoomVP8_15thumb LargeRoomVP8_15thumb
ilnikf89a7382017-03-07 06:15:27 -0800790#endif
791
792TEST_F(FullStackTest, MAYBE_LargeRoomVP8_15thumb) {
ilnika014cc52017-03-07 04:21:04 -0800793 VideoQualityTest::Params large_room;
794 large_room.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800795 large_room.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800796 large_room.analyzer = {"largeroom_15thumb", 0.0, 0.0,
797 kFullStackTestDurationSecs};
798 large_room.pipe.loss_percent = 0;
799 large_room.pipe.queue_delay_ms = 100;
800 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800801 video_params_high.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800802 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800803 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800804 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800805 video_params_low.video = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800806
807 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
808 DefaultVideoStream(video_params_medium),
809 DefaultVideoStream(video_params_high)};
ilnik98436952017-07-13 00:47:03 -0700810 large_room.call.num_thumbnails = 15;
ilnik6b826ef2017-06-16 06:53:48 -0700811 large_room.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnika014cc52017-03-07 04:21:04 -0800812 RunTest(large_room);
813}
814
ilnika014cc52017-03-07 04:21:04 -0800815TEST_F(FullStackTest, MAYBE_LargeRoomVP8_50thumb) {
816 VideoQualityTest::Params large_room;
817 large_room.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800818 large_room.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800819 large_room.analyzer = {"largeroom_50thumb", 0.0, 0.0,
820 kFullStackTestDurationSecs};
821 large_room.pipe.loss_percent = 0;
822 large_room.pipe.queue_delay_ms = 100;
823 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800824 video_params_high.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800825 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800826 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800827 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800828 video_params_low.video = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800829
830 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
831 DefaultVideoStream(video_params_medium),
832 DefaultVideoStream(video_params_high)};
ilnik98436952017-07-13 00:47:03 -0700833 large_room.call.num_thumbnails = 50;
ilnik6b826ef2017-06-16 06:53:48 -0700834 large_room.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnika014cc52017-03-07 04:21:04 -0800835 RunTest(large_room);
836}
837
838
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +0000839} // namespace webrtc