blob: c3dfb798e633b051bb9f315ae470b6cb4360377d [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 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264", 0.0, 0.0,
194 kFullStackTestDurationSecs};
195 foreman_cif.pipe.loss_percent = 5;
196 foreman_cif.pipe.queue_delay_ms = 50;
197 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800198}
199
Rasmus Brandt88f080a2017-11-02 14:28:06 +0100200TEST_F(FullStackTest, ForemanCifPlr5H264SpsPpsIdrIsKeyframe) {
201 test::ScopedFieldTrials override_field_trials(
202 "WebRTC-SpsPpsIdrIsH264Keyframe/Enabled/");
203
204 VideoQualityTest::Params foreman_cif;
205 foreman_cif.call.send_side_bwe = true;
206 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
207 "H264", 1, 0, 0, false, false, "foreman_cif"};
208 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264_sps_pps_idr", 0.0,
209 0.0, kFullStackTestDurationSecs};
210 foreman_cif.pipe.loss_percent = 5;
211 foreman_cif.pipe.queue_delay_ms = 50;
212 RunTest(foreman_cif);
213}
214
brandtrdd369c62016-11-16 23:56:57 -0800215// Verify that this is worth the bot time, before enabling.
216TEST_F(FullStackTest, ForemanCifPlr5H264Flexfec) {
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, false, true, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800221 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264_flexfec", 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
228// Ulpfec with H264 is an unsupported combination, so this test is only useful
229// for debugging. It is therefore disabled by default.
230TEST_F(FullStackTest, DISABLED_ForemanCifPlr5H264Ulpfec) {
brandtr93c5d032016-11-30 07:50:07 -0800231 VideoQualityTest::Params foreman_cif;
232 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000233 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
234 "H264", 1, 0, 0, true, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800235 foreman_cif.analyzer = {"foreman_cif_delay_50_0_plr_5_H264_ulpfec", 0.0, 0.0,
236 kFullStackTestDurationSecs};
237 foreman_cif.pipe.loss_percent = 5;
238 foreman_cif.pipe.queue_delay_ms = 50;
239 RunTest(foreman_cif);
brandtrdd369c62016-11-16 23:56:57 -0800240}
241#endif // defined(WEBRTC_USE_H264)
242
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000243TEST_F(FullStackTest, ForemanCif500kbps) {
minyue626bc952016-10-31 05:47:02 -0700244 VideoQualityTest::Params foreman_cif;
245 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000246 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
247 "VP8", 1, 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700248 foreman_cif.analyzer = {"foreman_cif_500kbps", 0.0, 0.0,
249 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700250 foreman_cif.pipe.queue_length_packets = 0;
251 foreman_cif.pipe.queue_delay_ms = 0;
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, ForemanCif500kbpsLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700257 VideoQualityTest::Params foreman_cif;
258 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000259 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
260 "VP8", 1, 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700261 foreman_cif.analyzer = {"foreman_cif_500kbps_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 = 0;
265 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000266 RunTest(foreman_cif);
267}
268
269TEST_F(FullStackTest, ForemanCif500kbps100ms) {
minyue626bc952016-10-31 05:47:02 -0700270 VideoQualityTest::Params foreman_cif;
271 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000272 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
273 "VP8", 1, 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700274 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms", 0.0, 0.0,
275 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700276 foreman_cif.pipe.queue_length_packets = 0;
277 foreman_cif.pipe.queue_delay_ms = 100;
278 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000279 RunTest(foreman_cif);
280}
281
282TEST_F(FullStackTest, ForemanCif500kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700283 VideoQualityTest::Params foreman_cif;
284 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000285 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
286 "VP8", 1, 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700287 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms_32pkts_queue", 0.0, 0.0,
288 kFullStackTestDurationSecs};
stefanb1797672016-08-11 07:00:57 -0700289 foreman_cif.pipe.queue_length_packets = 32;
290 foreman_cif.pipe.queue_delay_ms = 100;
291 foreman_cif.pipe.link_capacity_kbps = 500;
292 RunTest(foreman_cif);
293}
294
295TEST_F(FullStackTest, ForemanCif500kbps100msLimitedQueueRecvBwe) {
minyue626bc952016-10-31 05:47:02 -0700296 VideoQualityTest::Params foreman_cif;
brandtr93c5d032016-11-30 07:50:07 -0800297 foreman_cif.call.send_side_bwe = false;
Rasmus Brandt31027342017-09-29 13:48:12 +0000298 foreman_cif.video = {true, 352, 288, 30, 30000, 500000, 2000000, false,
299 "VP8", 1, 0, 0, false, false, "foreman_cif"};
brandtr93c5d032016-11-30 07:50:07 -0800300 foreman_cif.analyzer = {"foreman_cif_500kbps_100ms_32pkts_queue_recv_bwe",
301 0.0, 0.0, kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700302 foreman_cif.pipe.queue_length_packets = 32;
303 foreman_cif.pipe.queue_delay_ms = 100;
304 foreman_cif.pipe.link_capacity_kbps = 500;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000305 RunTest(foreman_cif);
306}
307
308TEST_F(FullStackTest, ForemanCif1000kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700309 VideoQualityTest::Params foreman_cif;
310 foreman_cif.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000311 foreman_cif.video = {true, 352, 288, 30, 30000, 2000000, 2000000, false,
312 "VP8", 1, 0, 0, false, false, "foreman_cif"};
minyue626bc952016-10-31 05:47:02 -0700313 foreman_cif.analyzer = {"foreman_cif_1000kbps_100ms_32pkts_queue", 0.0, 0.0,
314 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700315 foreman_cif.pipe.queue_length_packets = 32;
316 foreman_cif.pipe.queue_delay_ms = 100;
317 foreman_cif.pipe.link_capacity_kbps = 1000;
stefan@webrtc.orgb8e9e442014-07-09 11:29:06 +0000318 RunTest(foreman_cif);
319}
sprang@webrtc.org131bea82015-02-18 12:46:06 +0000320
sprangff19d352017-09-06 07:14:02 -0700321// TODO(sprang): Remove this if we have the similar ModerateLimits below?
stefanb1797672016-08-11 07:00:57 -0700322TEST_F(FullStackTest, ConferenceMotionHd2000kbps100msLimitedQueue) {
minyue626bc952016-10-31 05:47:02 -0700323 VideoQualityTest::Params conf_motion_hd;
324 conf_motion_hd.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000325 conf_motion_hd.video = {
326 true, 1280, 720, 50, 30000,
327 3000000, 3000000, false, "VP8", 1,
328 0, 0, false, false, "ConferenceMotion_1280_720_50"};
minyue626bc952016-10-31 05:47:02 -0700329 conf_motion_hd.analyzer = {"conference_motion_hd_2000kbps_100ms_32pkts_queue",
330 0.0, 0.0, kFullStackTestDurationSecs};
stefanb1797672016-08-11 07:00:57 -0700331 conf_motion_hd.pipe.queue_length_packets = 32;
332 conf_motion_hd.pipe.queue_delay_ms = 100;
333 conf_motion_hd.pipe.link_capacity_kbps = 2000;
334 RunTest(conf_motion_hd);
335}
336
sprangff19d352017-09-06 07:14:02 -0700337TEST_F(FullStackTest, ConferenceMotionHd1TLModerateLimits) {
338 VideoQualityTest::Params conf_motion_hd;
339 conf_motion_hd.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000340 conf_motion_hd.video = {
341 true, 1280, 720, 50, 30000,
342 3000000, 3000000, false, "VP8", 1,
343 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700344 conf_motion_hd.analyzer = {"conference_motion_hd_1tl_moderate_limits", 0.0,
345 0.0, kFullStackTestDurationSecs};
346 conf_motion_hd.pipe.queue_length_packets = 50;
347 conf_motion_hd.pipe.loss_percent = 3;
348 conf_motion_hd.pipe.queue_delay_ms = 100;
349 conf_motion_hd.pipe.link_capacity_kbps = 2000;
350 RunTest(conf_motion_hd);
351}
352
353TEST_F(FullStackTest, ConferenceMotionHd2TLModerateLimits) {
354 VideoQualityTest::Params conf_motion_hd;
355 conf_motion_hd.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000356 conf_motion_hd.video = {
357 true, 1280, 720, 50, 30000,
358 3000000, 3000000, false, "VP8", 2,
359 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700360 conf_motion_hd.analyzer = {"conference_motion_hd_2tl_moderate_limits", 0.0,
361 0.0, kFullStackTestDurationSecs};
362 conf_motion_hd.pipe.queue_length_packets = 50;
363 conf_motion_hd.pipe.loss_percent = 3;
364 conf_motion_hd.pipe.queue_delay_ms = 100;
365 conf_motion_hd.pipe.link_capacity_kbps = 2000;
366 RunTest(conf_motion_hd);
367}
368
369TEST_F(FullStackTest, ConferenceMotionHd3TLModerateLimits) {
370 VideoQualityTest::Params conf_motion_hd;
371 conf_motion_hd.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000372 conf_motion_hd.video = {
373 true, 1280, 720, 50, 30000,
374 3000000, 3000000, false, "VP8", 3,
375 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700376 conf_motion_hd.analyzer = {"conference_motion_hd_3tl_moderate_limits", 0.0,
377 0.0, kFullStackTestDurationSecs};
378 conf_motion_hd.pipe.queue_length_packets = 50;
379 conf_motion_hd.pipe.loss_percent = 3;
380 conf_motion_hd.pipe.queue_delay_ms = 100;
381 conf_motion_hd.pipe.link_capacity_kbps = 2000;
382 RunTest(conf_motion_hd);
383}
384
385TEST_F(FullStackTest, ConferenceMotionHd4TLModerateLimits) {
386 VideoQualityTest::Params conf_motion_hd;
387 conf_motion_hd.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000388 conf_motion_hd.video = {
389 true, 1280, 720, 50, 30000,
390 3000000, 3000000, false, "VP8", 4,
391 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700392 conf_motion_hd.analyzer = {"conference_motion_hd_4tl_moderate_limits", 0.0,
393 0.0, kFullStackTestDurationSecs};
394 conf_motion_hd.pipe.queue_length_packets = 50;
395 conf_motion_hd.pipe.loss_percent = 3;
396 conf_motion_hd.pipe.queue_delay_ms = 100;
397 conf_motion_hd.pipe.link_capacity_kbps = 2000;
398 RunTest(conf_motion_hd);
399}
400
401TEST_F(FullStackTest, ConferenceMotionHd3TLModerateLimitsAltTLPattern) {
402 test::ScopedFieldTrials field_trial("WebRTC-UseShortVP8TL3Pattern/Enabled/");
403 VideoQualityTest::Params conf_motion_hd;
404 conf_motion_hd.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000405 conf_motion_hd.video = {
406 true, 1280, 720, 50, 30000,
407 3000000, 3000000, false, "VP8", 3,
408 -1, 0, false, false, "ConferenceMotion_1280_720_50"};
sprangff19d352017-09-06 07:14:02 -0700409 conf_motion_hd.analyzer = {"conference_motion_hd_3tl_alt_moderate_limits",
410 0.0, 0.0, kFullStackTestDurationSecs};
411 conf_motion_hd.pipe.queue_length_packets = 50;
412 conf_motion_hd.pipe.loss_percent = 3;
413 conf_motion_hd.pipe.queue_delay_ms = 100;
414 conf_motion_hd.pipe.link_capacity_kbps = 2000;
415 RunTest(conf_motion_hd);
416}
417
jianj390e64d2017-02-03 09:51:23 -0800418#if !defined(RTC_DISABLE_VP9)
419TEST_F(FullStackTest, ConferenceMotionHd2000kbps100msLimitedQueueVP9) {
420 VideoQualityTest::Params conf_motion_hd;
421 conf_motion_hd.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000422 conf_motion_hd.video = {
423 true, 1280, 720, 50, 30000,
424 3000000, 3000000, false, "VP9", 1,
425 0, 0, false, false, "ConferenceMotion_1280_720_50"};
jianj390e64d2017-02-03 09:51:23 -0800426 conf_motion_hd.analyzer = {
427 "conference_motion_hd_2000kbps_100ms_32pkts_queue_vp9", 0.0, 0.0,
428 kFullStackTestDurationSecs};
429 conf_motion_hd.pipe.queue_length_packets = 32;
430 conf_motion_hd.pipe.queue_delay_ms = 100;
431 conf_motion_hd.pipe.link_capacity_kbps = 2000;
432 RunTest(conf_motion_hd);
433}
434#endif
435
ivica7bd242e2015-10-06 02:04:06 -0700436TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL) {
minyue626bc952016-10-31 05:47:02 -0700437 VideoQualityTest::Params screenshare;
438 screenshare.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000439 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
440 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700441 screenshare.screenshare = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700442 screenshare.analyzer = {"screenshare_slides", 0.0, 0.0,
443 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700444 RunTest(screenshare);
Erik SprĂ¥ng6ee69aa2015-09-03 15:58:05 +0200445}
446
ilnikcb8c1462017-03-09 09:23:30 -0800447TEST_F(FullStackTest, ScreenshareSlidesVP8_3TL_Simulcast) {
sprang89c4a7e2017-06-30 13:27:40 -0700448 test::ScopedFieldTrials field_trial(kScreenshareSimulcastExperiment);
ilnikcb8c1462017-03-09 09:23:30 -0800449 VideoQualityTest::Params screenshare;
450 screenshare.call.send_side_bwe = true;
erikvarga579de6f2017-08-29 09:12:57 -0700451 screenshare.screenshare = {true, false, 10};
Rasmus Brandt31027342017-09-29 13:48:12 +0000452 screenshare.video = {true, 1850, 1110, 5, 800000,
453 2500000, 2500000, false, "VP8", 3,
454 2, 400000, false, false, ""};
ilnikcb8c1462017-03-09 09:23:30 -0800455 screenshare.analyzer = {"screenshare_slides_simulcast", 0.0, 0.0,
456 kFullStackTestDurationSecs};
457 VideoQualityTest::Params screenshare_params_high;
Rasmus Brandt31027342017-09-29 13:48:12 +0000458 screenshare_params_high.video = {true, 1850, 1110, 5, 800000,
459 2500000, 2500000, false, "VP8", 3,
460 0, 400000, false, false, ""};
ilnikcb8c1462017-03-09 09:23:30 -0800461 VideoQualityTest::Params screenshare_params_low;
Rasmus Brandt31027342017-09-29 13:48:12 +0000462 screenshare_params_low.video = {true, 1850, 1110, 5, 50000,
463 200000, 2000000, false, "VP8", 2,
464 0, 400000, false, false, ""};
ilnikcb8c1462017-03-09 09:23:30 -0800465
466 std::vector<VideoStream> streams = {
467 DefaultVideoStream(screenshare_params_low),
468 DefaultVideoStream(screenshare_params_high)};
ilnik6b826ef2017-06-16 06:53:48 -0700469 screenshare.ss = {streams, 1, 1, 0, std::vector<SpatialLayer>(), false};
ilnikcb8c1462017-03-09 09:23:30 -0800470 RunTest(screenshare);
471}
472
ivica7bd242e2015-10-06 02:04:06 -0700473TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_Scroll) {
minyue626bc952016-10-31 05:47:02 -0700474 VideoQualityTest::Params config;
475 config.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000476 config.video = {true, 1850, 1110 / 2, 5, 50000, 200000, 2000000, false,
477 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700478 config.screenshare = {true, false, 10, 2};
minyue626bc952016-10-31 05:47:02 -0700479 config.analyzer = {"screenshare_slides_scrolling", 0.0, 0.0,
480 kFullStackTestDurationSecs};
ivica5d6a06c2015-09-17 05:30:24 -0700481 RunTest(config);
ivica028cf482015-07-30 02:15:56 -0700482}
483
sprangee37de32015-11-23 06:10:23 -0800484TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNet) {
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_lossy_net", 0.0, 0.0,
491 kFullStackTestDurationSecs};
sprangee37de32015-11-23 06:10:23 -0800492 screenshare.pipe.loss_percent = 5;
493 screenshare.pipe.queue_delay_ms = 200;
494 screenshare.pipe.link_capacity_kbps = 500;
495 RunTest(screenshare);
496}
497
498TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_VeryLossyNet) {
minyue626bc952016-10-31 05:47:02 -0700499 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};
minyue626bc952016-10-31 05:47:02 -0700504 screenshare.analyzer = {"screenshare_slides_very_lossy", 0.0, 0.0,
505 kFullStackTestDurationSecs};
sprangee37de32015-11-23 06:10:23 -0800506 screenshare.pipe.loss_percent = 10;
507 screenshare.pipe.queue_delay_ms = 200;
508 screenshare.pipe.link_capacity_kbps = 500;
509 RunTest(screenshare);
510}
511
sprange566e172017-06-08 01:29:15 -0700512TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNetRestrictedQueue) {
513 VideoQualityTest::Params screenshare;
514 screenshare.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000515 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
516 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700517 screenshare.screenshare = {true, false, 10};
sprange566e172017-06-08 01:29:15 -0700518 screenshare.analyzer = {"screenshare_slides_lossy_limited", 0.0, 0.0,
519 kFullStackTestDurationSecs};
520 screenshare.pipe.loss_percent = 5;
521 screenshare.pipe.link_capacity_kbps = 200;
522 screenshare.pipe.queue_length_packets = 30;
523
524 RunTest(screenshare);
525}
526
sprang89c4a7e2017-06-30 13:27:40 -0700527TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ModeratelyRestricted) {
528 VideoQualityTest::Params screenshare;
529 screenshare.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000530 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
531 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700532 screenshare.screenshare = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700533 screenshare.analyzer = {"screenshare_slides_moderately_restricted", 0.0, 0.0,
534 kFullStackTestDurationSecs};
535 screenshare.pipe.loss_percent = 1;
536 screenshare.pipe.link_capacity_kbps = 1200;
537 screenshare.pipe.queue_length_packets = 30;
538
539 RunTest(screenshare);
540}
541
542// TODO(sprang): Retire these tests once experiment is removed.
543TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_LossyNetRestrictedQueue_ALR) {
544 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
545 VideoQualityTest::Params screenshare;
546 screenshare.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000547 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
548 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700549 screenshare.screenshare = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700550 screenshare.analyzer = {"screenshare_slides_lossy_limited_ALR", 0.0, 0.0,
551 kFullStackTestDurationSecs};
552 screenshare.pipe.loss_percent = 5;
553 screenshare.pipe.link_capacity_kbps = 200;
554 screenshare.pipe.queue_length_packets = 30;
555
556 RunTest(screenshare);
557}
558
559TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ALR) {
560 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
561 VideoQualityTest::Params screenshare;
562 screenshare.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000563 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
564 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700565 screenshare.screenshare = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700566 screenshare.analyzer = {"screenshare_slides_ALR", 0.0, 0.0,
567 kFullStackTestDurationSecs};
568 RunTest(screenshare);
569}
570
571TEST_F(FullStackTest, ScreenshareSlidesVP8_2TL_ModeratelyRestricted_ALR) {
572 test::ScopedFieldTrials field_trial(kAlrProbingExperiment);
573 VideoQualityTest::Params screenshare;
574 screenshare.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000575 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
576 "VP8", 2, 1, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700577 screenshare.screenshare = {true, false, 10};
sprang89c4a7e2017-06-30 13:27:40 -0700578 screenshare.analyzer = {"screenshare_slides_moderately_restricted_ALR", 0.0,
579 0.0, kFullStackTestDurationSecs};
580 screenshare.pipe.loss_percent = 1;
581 screenshare.pipe.link_capacity_kbps = 1200;
582 screenshare.pipe.queue_length_packets = 30;
583
584 RunTest(screenshare);
585}
586
587TEST_F(FullStackTest, ScreenshareSlidesVP8_3TL_Simulcast_ALR) {
588 test::ScopedFieldTrials field_trial(kScreenshareSimulcastExperiment +
589 kAlrProbingExperiment);
590 VideoQualityTest::Params screenshare;
591 screenshare.call.send_side_bwe = true;
erikvarga579de6f2017-08-29 09:12:57 -0700592 screenshare.screenshare = {true, false, 10};
Rasmus Brandt31027342017-09-29 13:48:12 +0000593 screenshare.video = {true, 1850, 1110, 5, 800000,
594 2500000, 2500000, false, "VP8", 3,
595 2, 400000, false, false, ""};
sprang89c4a7e2017-06-30 13:27:40 -0700596 screenshare.analyzer = {"screenshare_slides_simulcast_alr", 0.0, 0.0,
597 kFullStackTestDurationSecs};
598 VideoQualityTest::Params screenshare_params_high;
Rasmus Brandt31027342017-09-29 13:48:12 +0000599 screenshare_params_high.video = {true, 1850, 1110, 5, 800000,
600 2500000, 2500000, false, "VP8", 3,
601 0, 400000, false, false, ""};
sprang89c4a7e2017-06-30 13:27:40 -0700602 VideoQualityTest::Params screenshare_params_low;
Rasmus Brandt31027342017-09-29 13:48:12 +0000603 screenshare_params_low.video = {true, 1850, 1110, 5, 50000,
604 200000, 2000000, false, "VP8", 2,
605 0, 400000, false, false, ""};
sprang89c4a7e2017-06-30 13:27:40 -0700606
607 std::vector<VideoStream> streams = {
608 DefaultVideoStream(screenshare_params_low),
609 DefaultVideoStream(screenshare_params_high)};
610 screenshare.ss = {streams, 1, 1, 0, std::vector<SpatialLayer>(), false};
611 RunTest(screenshare);
612}
613
ilnik566c43b2017-03-07 04:42:54 -0800614const VideoQualityTest::Params::Video kSvcVp9Video = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000615 true, 1280, 720, 30, 800000,
616 2500000, 2500000, false, "VP9", 3,
617 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800618
619const VideoQualityTest::Params::Video kSimulcastVp8VideoHigh = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000620 true, 1280, 720, 30, 800000,
621 2500000, 2500000, false, "VP8", 3,
622 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800623
624const VideoQualityTest::Params::Video kSimulcastVp8VideoMedium = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000625 true, 640, 360, 30, 150000,
626 500000, 700000, false, "VP8", 3,
627 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800628
629const VideoQualityTest::Params::Video kSimulcastVp8VideoLow = {
Rasmus Brandt31027342017-09-29 13:48:12 +0000630 true, 320, 180, 30, 30000,
631 150000, 200000, false, "VP8", 3,
632 2, 400000, false, false, "ConferenceMotion_1280_720_50"};
ilnik566c43b2017-03-07 04:42:54 -0800633
Peter Boström12996152016-05-14 02:03:18 +0200634#if !defined(RTC_DISABLE_VP9)
marpan5f4aaeb2017-04-06 10:52:23 -0700635TEST_F(FullStackTest, ScreenshareSlidesVP9_2SL) {
minyue626bc952016-10-31 05:47:02 -0700636 VideoQualityTest::Params screenshare;
637 screenshare.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000638 screenshare.video = {true, 1850, 1110, 5, 50000, 200000, 2000000, false,
639 "VP9", 1, 0, 400000, false, false, ""};
erikvarga579de6f2017-08-29 09:12:57 -0700640 screenshare.screenshare = {true, false, 10};
minyue626bc952016-10-31 05:47:02 -0700641 screenshare.analyzer = {"screenshare_slides_vp9_2sl", 0.0, 0.0,
642 kFullStackTestDurationSecs};
ilnik6b826ef2017-06-16 06:53:48 -0700643 screenshare.ss = {std::vector<VideoStream>(), 0, 2, 1,
644 std::vector<SpatialLayer>(), false};
ivica5d6a06c2015-09-17 05:30:24 -0700645 RunTest(screenshare);
sprang@webrtc.org131bea82015-02-18 12:46:06 +0000646}
ilnik2a8c2f52017-02-15 02:23:28 -0800647
648TEST_F(FullStackTest, VP9SVC_3SL_High) {
649 VideoQualityTest::Params simulcast;
650 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800651 simulcast.video = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800652 simulcast.analyzer = {"vp9svc_3sl_high", 0.0, 0.0,
653 kFullStackTestDurationSecs};
ilnik6b826ef2017-06-16 06:53:48 -0700654 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 2,
655 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800656 RunTest(simulcast);
657}
658
659TEST_F(FullStackTest, VP9SVC_3SL_Medium) {
660 VideoQualityTest::Params simulcast;
661 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800662 simulcast.video = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800663 simulcast.analyzer = {"vp9svc_3sl_medium", 0.0, 0.0,
664 kFullStackTestDurationSecs};
ilnik6b826ef2017-06-16 06:53:48 -0700665 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 1,
666 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800667 RunTest(simulcast);
668}
669
670TEST_F(FullStackTest, VP9SVC_3SL_Low) {
671 VideoQualityTest::Params simulcast;
672 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800673 simulcast.video = kSvcVp9Video;
ilnik2a8c2f52017-02-15 02:23:28 -0800674 simulcast.analyzer = {"vp9svc_3sl_low", 0.0, 0.0, kFullStackTestDurationSecs};
ilnik6b826ef2017-06-16 06:53:48 -0700675 simulcast.ss = {std::vector<VideoStream>(), 0, 3, 0,
676 std::vector<SpatialLayer>(), false};
ilnik2a8c2f52017-02-15 02:23:28 -0800677 RunTest(simulcast);
678}
Peter Boström12996152016-05-14 02:03:18 +0200679#endif // !defined(RTC_DISABLE_VP9)
brandtr93c5d032016-11-30 07:50:07 -0800680
ilnik6b826ef2017-06-16 06:53:48 -0700681// Android bots can't handle FullHD, so disable the test.
ilnik267041c2017-06-27 07:21:01 -0700682#if defined(WEBRTC_ANDROID)
ilnik6b826ef2017-06-16 06:53:48 -0700683#define MAYBE_SimulcastFullHdOveruse DISABLED_SimulcastFullHdOveruse
684#else
685#define MAYBE_SimulcastFullHdOveruse SimulcastFullHdOveruse
686#endif
687
688TEST_F(FullStackTest, MAYBE_SimulcastFullHdOveruse) {
689 VideoQualityTest::Params simulcast;
690 simulcast.call.send_side_bwe = true;
Rasmus Brandt31027342017-09-29 13:48:12 +0000691 simulcast.video = {true, 1920, 1080, 30, 800000,
692 2500000, 2500000, false, "VP8", 3,
693 2, 400000, false, false, "Generator"};
ilnik6b826ef2017-06-16 06:53:48 -0700694 simulcast.analyzer = {"simulcast_HD_high", 0.0, 0.0,
695 kFullStackTestDurationSecs};
696 simulcast.pipe.loss_percent = 0;
697 simulcast.pipe.queue_delay_ms = 100;
698 std::vector<VideoStream> streams = {DefaultVideoStream(simulcast),
699 DefaultVideoStream(simulcast),
700 DefaultVideoStream(simulcast)};
701 simulcast.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), true};
702 webrtc::test::ScopedFieldTrials override_trials(
703 "WebRTC-ForceSimulatedOveruseIntervalMs/1000-50000-300/");
704 RunTest(simulcast);
705}
706
ilnik3dd5ad92017-02-09 04:58:53 -0800707TEST_F(FullStackTest, SimulcastVP8_3SL_High) {
708 VideoQualityTest::Params simulcast;
709 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800710 simulcast.video = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800711 simulcast.analyzer = {"simulcast_vp8_3sl_high", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800712 kFullStackTestDurationSecs};
713 simulcast.pipe.loss_percent = 0;
714 simulcast.pipe.queue_delay_ms = 100;
715 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800716 video_params_high.video = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800717 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800718 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800719 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800720 video_params_low.video = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800721
722 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
723 DefaultVideoStream(video_params_medium),
724 DefaultVideoStream(video_params_high)};
ilnik6b826ef2017-06-16 06:53:48 -0700725 simulcast.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnik3dd5ad92017-02-09 04:58:53 -0800726 RunTest(simulcast);
727}
728
729TEST_F(FullStackTest, SimulcastVP8_3SL_Medium) {
730 VideoQualityTest::Params simulcast;
731 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800732 simulcast.video = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800733 simulcast.analyzer = {"simulcast_vp8_3sl_medium", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800734 kFullStackTestDurationSecs};
735 simulcast.pipe.loss_percent = 0;
736 simulcast.pipe.queue_delay_ms = 100;
737 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800738 video_params_high.video = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800739 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800740 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800741 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800742 video_params_low.video = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800743
744 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
745 DefaultVideoStream(video_params_medium),
746 DefaultVideoStream(video_params_high)};
ilnik6b826ef2017-06-16 06:53:48 -0700747 simulcast.ss = {streams, 1, 1, 0, std::vector<SpatialLayer>(), false};
ilnik3dd5ad92017-02-09 04:58:53 -0800748 RunTest(simulcast);
749}
750
751TEST_F(FullStackTest, SimulcastVP8_3SL_Low) {
752 VideoQualityTest::Params simulcast;
753 simulcast.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800754 simulcast.video = kSimulcastVp8VideoHigh;
ilnik2a8c2f52017-02-15 02:23:28 -0800755 simulcast.analyzer = {"simulcast_vp8_3sl_low", 0.0, 0.0,
ilnik3dd5ad92017-02-09 04:58:53 -0800756 kFullStackTestDurationSecs};
757 simulcast.pipe.loss_percent = 0;
758 simulcast.pipe.queue_delay_ms = 100;
759 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800760 video_params_high.video = kSimulcastVp8VideoHigh;
ilnik3dd5ad92017-02-09 04:58:53 -0800761 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800762 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnik3dd5ad92017-02-09 04:58:53 -0800763 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800764 video_params_low.video = kSimulcastVp8VideoLow;
ilnik3dd5ad92017-02-09 04:58:53 -0800765
766 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
767 DefaultVideoStream(video_params_medium),
768 DefaultVideoStream(video_params_high)};
ilnik6b826ef2017-06-16 06:53:48 -0700769 simulcast.ss = {streams, 0, 1, 0, std::vector<SpatialLayer>(), false};
ilnik3dd5ad92017-02-09 04:58:53 -0800770 RunTest(simulcast);
771}
772
ilnika014cc52017-03-07 04:21:04 -0800773TEST_F(FullStackTest, LargeRoomVP8_5thumb) {
774 VideoQualityTest::Params large_room;
775 large_room.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800776 large_room.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800777 large_room.analyzer = {"largeroom_5thumb", 0.0, 0.0,
778 kFullStackTestDurationSecs};
779 large_room.pipe.loss_percent = 0;
780 large_room.pipe.queue_delay_ms = 100;
781 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800782 video_params_high.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800783 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800784 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800785 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800786 video_params_low.video = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800787
788 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
789 DefaultVideoStream(video_params_medium),
790 DefaultVideoStream(video_params_high)};
ilnik98436952017-07-13 00:47:03 -0700791 large_room.call.num_thumbnails = 5;
ilnik6b826ef2017-06-16 06:53:48 -0700792 large_room.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnika014cc52017-03-07 04:21:04 -0800793 RunTest(large_room);
794}
795
oprypin743117f2017-09-15 05:24:24 -0700796#if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS)
797// Fails on mobile devices:
ilnikf89a7382017-03-07 06:15:27 -0800798// https://bugs.chromium.org/p/webrtc/issues/detail?id=7301
799#define MAYBE_LargeRoomVP8_50thumb DISABLED_LargeRoomVP8_50thumb
ilnik3ae7c252017-03-08 01:17:35 -0800800#define MAYBE_LargeRoomVP8_15thumb DISABLED_LargeRoomVP8_15thumb
ilnikf89a7382017-03-07 06:15:27 -0800801#else
802#define MAYBE_LargeRoomVP8_50thumb LargeRoomVP8_50thumb
ilnik3ae7c252017-03-08 01:17:35 -0800803#define MAYBE_LargeRoomVP8_15thumb LargeRoomVP8_15thumb
ilnikf89a7382017-03-07 06:15:27 -0800804#endif
805
806TEST_F(FullStackTest, MAYBE_LargeRoomVP8_15thumb) {
ilnika014cc52017-03-07 04:21:04 -0800807 VideoQualityTest::Params large_room;
808 large_room.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800809 large_room.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800810 large_room.analyzer = {"largeroom_15thumb", 0.0, 0.0,
811 kFullStackTestDurationSecs};
812 large_room.pipe.loss_percent = 0;
813 large_room.pipe.queue_delay_ms = 100;
814 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800815 video_params_high.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800816 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800817 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800818 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800819 video_params_low.video = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800820
821 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
822 DefaultVideoStream(video_params_medium),
823 DefaultVideoStream(video_params_high)};
ilnik98436952017-07-13 00:47:03 -0700824 large_room.call.num_thumbnails = 15;
ilnik6b826ef2017-06-16 06:53:48 -0700825 large_room.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnika014cc52017-03-07 04:21:04 -0800826 RunTest(large_room);
827}
828
ilnika014cc52017-03-07 04:21:04 -0800829TEST_F(FullStackTest, MAYBE_LargeRoomVP8_50thumb) {
830 VideoQualityTest::Params large_room;
831 large_room.call.send_side_bwe = true;
ilnik566c43b2017-03-07 04:42:54 -0800832 large_room.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800833 large_room.analyzer = {"largeroom_50thumb", 0.0, 0.0,
834 kFullStackTestDurationSecs};
835 large_room.pipe.loss_percent = 0;
836 large_room.pipe.queue_delay_ms = 100;
837 VideoQualityTest::Params video_params_high;
ilnik566c43b2017-03-07 04:42:54 -0800838 video_params_high.video = kSimulcastVp8VideoHigh;
ilnika014cc52017-03-07 04:21:04 -0800839 VideoQualityTest::Params video_params_medium;
ilnik566c43b2017-03-07 04:42:54 -0800840 video_params_medium.video = kSimulcastVp8VideoMedium;
ilnika014cc52017-03-07 04:21:04 -0800841 VideoQualityTest::Params video_params_low;
ilnik566c43b2017-03-07 04:42:54 -0800842 video_params_low.video = kSimulcastVp8VideoLow;
ilnika014cc52017-03-07 04:21:04 -0800843
844 std::vector<VideoStream> streams = {DefaultVideoStream(video_params_low),
845 DefaultVideoStream(video_params_medium),
846 DefaultVideoStream(video_params_high)};
ilnik98436952017-07-13 00:47:03 -0700847 large_room.call.num_thumbnails = 50;
ilnik6b826ef2017-06-16 06:53:48 -0700848 large_room.ss = {streams, 2, 1, 0, std::vector<SpatialLayer>(), false};
ilnika014cc52017-03-07 04:21:04 -0800849 RunTest(large_room);
850}
851
852
pbos@webrtc.orgaf8d5af2013-07-09 08:02:33 +0000853} // namespace webrtc