OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 delay.SetOneWayDelayMs(i); | 84 delay.SetOneWayDelayMs(i); |
85 RunFor(10 * 1000); | 85 RunFor(10 * 1000); |
86 } | 86 } |
87 RunFor(10 * 60 * 1000); | 87 RunFor(10 * 60 * 1000); |
88 } | 88 } |
89 | 89 |
90 TEST_P(DefaultBweTest, IncreasingDelay2) { | 90 TEST_P(DefaultBweTest, IncreasingDelay2) { |
91 VideoSource source(0, 30, 300, 0, 0); | 91 VideoSource source(0, 30, 300, 0, 0); |
92 VideoSender sender(&uplink_, &source, GetParam()); | 92 VideoSender sender(&uplink_, &source, GetParam()); |
93 DelayFilter delay(&uplink_, 0); | 93 DelayFilter delay(&uplink_, 0); |
94 RateCounterFilter counter(&uplink_, 0, ""); | 94 RateCounterFilter counter(&uplink_, 0, "", ""); |
95 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); | 95 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); |
96 RunFor(1 * 60 * 1000); | 96 RunFor(1 * 60 * 1000); |
97 for (int i = 1; i < 51; ++i) { | 97 for (int i = 1; i < 51; ++i) { |
98 delay.SetOneWayDelayMs(10.0f * i); | 98 delay.SetOneWayDelayMs(10.0f * i); |
99 RunFor(10 * 1000); | 99 RunFor(10 * 1000); |
100 } | 100 } |
101 delay.SetOneWayDelayMs(0.0f); | 101 delay.SetOneWayDelayMs(0.0f); |
102 RunFor(10 * 60 * 1000); | 102 RunFor(10 * 60 * 1000); |
103 } | 103 } |
104 | 104 |
(...skipping 10 matching lines...) Expand all Loading... |
115 RunFor(1000); | 115 RunFor(1000); |
116 } | 116 } |
117 delay.SetOneWayDelayMs(0.0f); | 117 delay.SetOneWayDelayMs(0.0f); |
118 RunFor(10 * 60 * 1000); | 118 RunFor(10 * 60 * 1000); |
119 } | 119 } |
120 | 120 |
121 TEST_P(DefaultBweTest, SteadyJitter) { | 121 TEST_P(DefaultBweTest, SteadyJitter) { |
122 VideoSource source(0, 30, 300, 0, 0); | 122 VideoSource source(0, 30, 300, 0, 0); |
123 VideoSender sender(&uplink_, &source, GetParam()); | 123 VideoSender sender(&uplink_, &source, GetParam()); |
124 JitterFilter jitter(&uplink_, 0); | 124 JitterFilter jitter(&uplink_, 0); |
125 RateCounterFilter counter(&uplink_, 0, ""); | 125 RateCounterFilter counter(&uplink_, 0, "", ""); |
126 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); | 126 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); |
127 jitter.SetMaxJitter(20); | 127 jitter.SetMaxJitter(20); |
128 RunFor(2 * 60 * 1000); | 128 RunFor(2 * 60 * 1000); |
129 } | 129 } |
130 | 130 |
131 TEST_P(DefaultBweTest, IncreasingJitter1) { | 131 TEST_P(DefaultBweTest, IncreasingJitter1) { |
132 VideoSource source(0, 30, 300, 0, 0); | 132 VideoSource source(0, 30, 300, 0, 0); |
133 VideoSender sender(&uplink_, &source, GetParam()); | 133 VideoSender sender(&uplink_, &source, GetParam()); |
134 JitterFilter jitter(&uplink_, 0); | 134 JitterFilter jitter(&uplink_, 0); |
135 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); | 135 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 choke.set_capacity_kbps(i); | 204 choke.set_capacity_kbps(i); |
205 RunFor(1000); | 205 RunFor(1000); |
206 } | 206 } |
207 } | 207 } |
208 | 208 |
209 TEST_P(DefaultBweTest, Multi1) { | 209 TEST_P(DefaultBweTest, Multi1) { |
210 VideoSource source(0, 30, 300, 0, 0); | 210 VideoSource source(0, 30, 300, 0, 0); |
211 VideoSender sender(&uplink_, &source, GetParam()); | 211 VideoSender sender(&uplink_, &source, GetParam()); |
212 DelayFilter delay(&uplink_, 0); | 212 DelayFilter delay(&uplink_, 0); |
213 ChokeFilter choke(&uplink_, 0); | 213 ChokeFilter choke(&uplink_, 0); |
214 RateCounterFilter counter(&uplink_, 0, ""); | 214 RateCounterFilter counter(&uplink_, 0, "", ""); |
215 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); | 215 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); |
216 choke.set_capacity_kbps(1000); | 216 choke.set_capacity_kbps(1000); |
217 RunFor(1 * 60 * 1000); | 217 RunFor(1 * 60 * 1000); |
218 for (int i = 1; i < 51; ++i) { | 218 for (int i = 1; i < 51; ++i) { |
219 delay.SetOneWayDelayMs(100.0f * i); | 219 delay.SetOneWayDelayMs(100.0f * i); |
220 RunFor(10 * 1000); | 220 RunFor(10 * 1000); |
221 } | 221 } |
222 RunFor(500 * 1000); | 222 RunFor(500 * 1000); |
223 delay.SetOneWayDelayMs(0.0f); | 223 delay.SetOneWayDelayMs(0.0f); |
224 RunFor(5 * 60 * 1000); | 224 RunFor(5 * 60 * 1000); |
225 } | 225 } |
226 | 226 |
227 TEST_P(DefaultBweTest, Multi2) { | 227 TEST_P(DefaultBweTest, Multi2) { |
228 VideoSource source(0, 30, 300, 0, 0); | 228 VideoSource source(0, 30, 300, 0, 0); |
229 VideoSender sender(&uplink_, &source, GetParam()); | 229 VideoSender sender(&uplink_, &source, GetParam()); |
230 ChokeFilter choke(&uplink_, 0); | 230 ChokeFilter choke(&uplink_, 0); |
231 JitterFilter jitter(&uplink_, 0); | 231 JitterFilter jitter(&uplink_, 0); |
232 RateCounterFilter counter(&uplink_, 0, ""); | 232 RateCounterFilter counter(&uplink_, 0, "", ""); |
233 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); | 233 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); |
234 choke.set_capacity_kbps(2000); | 234 choke.set_capacity_kbps(2000); |
235 jitter.SetMaxJitter(120); | 235 jitter.SetMaxJitter(120); |
236 RunFor(5 * 60 * 1000); | 236 RunFor(5 * 60 * 1000); |
237 } | 237 } |
238 | 238 |
239 // This test fixture is used to instantiate tests running with adaptive video | 239 // This test fixture is used to instantiate tests running with adaptive video |
240 // senders. | 240 // senders. |
241 class BweFeedbackTest | 241 class BweFeedbackTest |
242 : public BweTest, | 242 : public BweTest, |
(...skipping 18 matching lines...) Expand all Loading... |
261 | 261 |
262 INSTANTIATE_TEST_CASE_P(VideoSendersTest, | 262 INSTANTIATE_TEST_CASE_P(VideoSendersTest, |
263 BweFeedbackTest, | 263 BweFeedbackTest, |
264 ::testing::Values(kRembEstimator, | 264 ::testing::Values(kRembEstimator, |
265 kFullSendSideEstimator)); | 265 kFullSendSideEstimator)); |
266 | 266 |
267 TEST_P(BweFeedbackTest, ConstantCapacity) { | 267 TEST_P(BweFeedbackTest, ConstantCapacity) { |
268 AdaptiveVideoSource source(0, 30, 300, 0, 0); | 268 AdaptiveVideoSource source(0, 30, 300, 0, 0); |
269 PacedVideoSender sender(&uplink_, &source, GetParam()); | 269 PacedVideoSender sender(&uplink_, &source, GetParam()); |
270 ChokeFilter filter(&uplink_, 0); | 270 ChokeFilter filter(&uplink_, 0); |
271 RateCounterFilter counter(&uplink_, 0, "receiver_input"); | 271 RateCounterFilter counter(&uplink_, 0, "Receiver", bwe_names[GetParam()]); |
272 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); | 272 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); |
273 const int kCapacityKbps = 1000; | 273 const int kCapacityKbps = 1000; |
274 filter.set_capacity_kbps(kCapacityKbps); | 274 filter.set_capacity_kbps(kCapacityKbps); |
275 filter.set_max_delay_ms(500); | 275 filter.set_max_delay_ms(500); |
276 RunFor(180 * 1000); | 276 RunFor(180 * 1000); |
277 PrintResults(kCapacityKbps, counter.GetBitrateStats(), 0, | 277 PrintResults(kCapacityKbps, counter.GetBitrateStats(), 0, |
278 receiver.GetDelayStats(), counter.GetBitrateStats()); | 278 receiver.GetDelayStats(), counter.GetBitrateStats()); |
279 } | 279 } |
280 | 280 |
281 TEST_P(BweFeedbackTest, Choke1000kbps500kbps1000kbps) { | 281 TEST_P(BweFeedbackTest, Choke1000kbps500kbps1000kbps) { |
282 AdaptiveVideoSource source(0, 30, 300, 0, 0); | 282 AdaptiveVideoSource source(0, 30, 300, 0, 0); |
283 PacedVideoSender sender(&uplink_, &source, GetParam()); | 283 PacedVideoSender sender(&uplink_, &source, GetParam()); |
284 ChokeFilter filter(&uplink_, 0); | 284 ChokeFilter filter(&uplink_, 0); |
285 RateCounterFilter counter(&uplink_, 0, "receiver_input"); | 285 RateCounterFilter counter(&uplink_, 0, "Receiver", bwe_names[GetParam()]); |
286 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); | 286 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); |
287 const int kHighCapacityKbps = 1000; | 287 const int kHighCapacityKbps = 1000; |
288 const int kLowCapacityKbps = 500; | 288 const int kLowCapacityKbps = 500; |
289 filter.set_capacity_kbps(kHighCapacityKbps); | 289 filter.set_capacity_kbps(kHighCapacityKbps); |
290 filter.set_max_delay_ms(500); | 290 filter.set_max_delay_ms(500); |
291 RunFor(60 * 1000); | 291 RunFor(60 * 1000); |
292 filter.set_capacity_kbps(kLowCapacityKbps); | 292 filter.set_capacity_kbps(kLowCapacityKbps); |
293 RunFor(60 * 1000); | 293 RunFor(60 * 1000); |
294 filter.set_capacity_kbps(kHighCapacityKbps); | 294 filter.set_capacity_kbps(kHighCapacityKbps); |
295 RunFor(60 * 1000); | 295 RunFor(60 * 1000); |
296 PrintResults((2 * kHighCapacityKbps + kLowCapacityKbps) / 3.0, | 296 PrintResults((2 * kHighCapacityKbps + kLowCapacityKbps) / 3.0, |
297 counter.GetBitrateStats(), 0, receiver.GetDelayStats(), | 297 counter.GetBitrateStats(), 0, receiver.GetDelayStats(), |
298 counter.GetBitrateStats()); | 298 counter.GetBitrateStats()); |
299 } | 299 } |
300 | 300 |
301 TEST_P(BweFeedbackTest, Choke200kbps30kbps200kbps) { | 301 TEST_P(BweFeedbackTest, Choke200kbps30kbps200kbps) { |
302 AdaptiveVideoSource source(0, 30, 300, 0, 0); | 302 AdaptiveVideoSource source(0, 30, 300, 0, 0); |
303 PacedVideoSender sender(&uplink_, &source, GetParam()); | 303 PacedVideoSender sender(&uplink_, &source, GetParam()); |
304 ChokeFilter filter(&uplink_, 0); | 304 ChokeFilter filter(&uplink_, 0); |
305 RateCounterFilter counter(&uplink_, 0, "receiver_input"); | 305 RateCounterFilter counter(&uplink_, 0, "Receiver", bwe_names[GetParam()]); |
306 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); | 306 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); |
307 const int kHighCapacityKbps = 200; | 307 const int kHighCapacityKbps = 200; |
308 const int kLowCapacityKbps = 30; | 308 const int kLowCapacityKbps = 30; |
309 filter.set_capacity_kbps(kHighCapacityKbps); | 309 filter.set_capacity_kbps(kHighCapacityKbps); |
310 filter.set_max_delay_ms(500); | 310 filter.set_max_delay_ms(500); |
311 RunFor(60 * 1000); | 311 RunFor(60 * 1000); |
312 filter.set_capacity_kbps(kLowCapacityKbps); | 312 filter.set_capacity_kbps(kLowCapacityKbps); |
313 RunFor(60 * 1000); | 313 RunFor(60 * 1000); |
314 filter.set_capacity_kbps(kHighCapacityKbps); | 314 filter.set_capacity_kbps(kHighCapacityKbps); |
315 RunFor(60 * 1000); | 315 RunFor(60 * 1000); |
316 | 316 |
317 PrintResults((2 * kHighCapacityKbps + kLowCapacityKbps) / 3.0, | 317 PrintResults((2 * kHighCapacityKbps + kLowCapacityKbps) / 3.0, |
318 counter.GetBitrateStats(), 0, receiver.GetDelayStats(), | 318 counter.GetBitrateStats(), 0, receiver.GetDelayStats(), |
319 counter.GetBitrateStats()); | 319 counter.GetBitrateStats()); |
320 } | 320 } |
321 | 321 |
322 TEST_P(BweFeedbackTest, Verizon4gDownlinkTest) { | 322 TEST_P(BweFeedbackTest, Verizon4gDownlinkTest) { |
323 AdaptiveVideoSource source(0, 30, 300, 0, 0); | 323 AdaptiveVideoSource source(0, 30, 300, 0, 0); |
324 VideoSender sender(&uplink_, &source, GetParam()); | 324 VideoSender sender(&uplink_, &source, GetParam()); |
325 RateCounterFilter counter1(&uplink_, 0, "sender_output"); | 325 RateCounterFilter counter1(&uplink_, 0, "sender_output", |
| 326 bwe_names[GetParam()]); |
326 TraceBasedDeliveryFilter filter(&uplink_, 0, "link_capacity"); | 327 TraceBasedDeliveryFilter filter(&uplink_, 0, "link_capacity"); |
327 RateCounterFilter counter2(&uplink_, 0, "receiver_input"); | 328 RateCounterFilter counter2(&uplink_, 0, "Receiver", bwe_names[GetParam()]); |
328 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); | 329 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); |
329 ASSERT_TRUE(filter.Init(test::ResourcePath("verizon4g-downlink", "rx"))); | 330 ASSERT_TRUE(filter.Init(test::ResourcePath("verizon4g-downlink", "rx"))); |
330 RunFor(22 * 60 * 1000); | 331 RunFor(22 * 60 * 1000); |
331 PrintResults(filter.GetBitrateStats().GetMean(), counter2.GetBitrateStats(), | 332 PrintResults(filter.GetBitrateStats().GetMean(), counter2.GetBitrateStats(), |
332 0, receiver.GetDelayStats(), counter2.GetBitrateStats()); | 333 0, receiver.GetDelayStats(), counter2.GetBitrateStats()); |
333 } | 334 } |
334 | 335 |
335 // webrtc:3277 | 336 // webrtc:3277 |
336 TEST_P(BweFeedbackTest, GoogleWifiTrace3Mbps) { | 337 TEST_P(BweFeedbackTest, GoogleWifiTrace3Mbps) { |
337 AdaptiveVideoSource source(0, 30, 300, 0, 0); | 338 AdaptiveVideoSource source(0, 30, 300, 0, 0); |
338 VideoSender sender(&uplink_, &source, GetParam()); | 339 VideoSender sender(&uplink_, &source, GetParam()); |
339 RateCounterFilter counter1(&uplink_, 0, "sender_output"); | 340 RateCounterFilter counter1(&uplink_, 0, "sender_output", |
| 341 bwe_names[GetParam()]); |
340 TraceBasedDeliveryFilter filter(&uplink_, 0, "link_capacity"); | 342 TraceBasedDeliveryFilter filter(&uplink_, 0, "link_capacity"); |
341 filter.set_max_delay_ms(500); | 343 filter.set_max_delay_ms(500); |
342 RateCounterFilter counter2(&uplink_, 0, "receiver_input"); | 344 RateCounterFilter counter2(&uplink_, 0, "Receiver", bwe_names[GetParam()]); |
343 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); | 345 PacketReceiver receiver(&uplink_, 0, GetParam(), false, false); |
344 ASSERT_TRUE(filter.Init(test::ResourcePath("google-wifi-3mbps", "rx"))); | 346 ASSERT_TRUE(filter.Init(test::ResourcePath("google-wifi-3mbps", "rx"))); |
345 RunFor(300 * 1000); | 347 RunFor(300 * 1000); |
346 PrintResults(filter.GetBitrateStats().GetMean(), counter2.GetBitrateStats(), | 348 PrintResults(filter.GetBitrateStats().GetMean(), counter2.GetBitrateStats(), |
347 0, receiver.GetDelayStats(), counter2.GetBitrateStats()); | 349 0, receiver.GetDelayStats(), counter2.GetBitrateStats()); |
348 } | 350 } |
349 | 351 |
350 TEST_P(BweFeedbackTest, PacedSelfFairness50msTest) { | 352 TEST_P(BweFeedbackTest, PacedSelfFairness50msTest) { |
351 int64_t kRttMs = 100; | 353 int64_t kRttMs = 100; |
352 int64_t kMaxJitterMs = 15; | 354 int64_t kMaxJitterMs = 15; |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
423 for (int i = 0; i < 2; ++i) { | 425 for (int i = 0; i < 2; ++i) { |
424 offset_ms[i] = std::max(0, 5000 * i + rand() % 2001 - 1000); | 426 offset_ms[i] = std::max(0, 5000 * i + rand() % 2001 - 1000); |
425 } | 427 } |
426 | 428 |
427 RunFairnessTest(GetParam(), 1, 1, 300, 2000, 1000, kRttMs, kMaxJitterMs, | 429 RunFairnessTest(GetParam(), 1, 1, 300, 2000, 1000, kRttMs, kMaxJitterMs, |
428 offset_ms); | 430 offset_ms); |
429 } | 431 } |
430 } // namespace bwe | 432 } // namespace bwe |
431 } // namespace testing | 433 } // namespace testing |
432 } // namespace webrtc | 434 } // namespace webrtc |
OLD | NEW |