Chromium Code Reviews| 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 |
| 11 #include "webrtc/call/rampup_tests.h" | 11 #include "webrtc/call/rampup_tests.h" |
| 12 | 12 |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
| 14 #include "webrtc/base/checks.h" | 14 #include "webrtc/base/checks.h" |
| 15 #include "webrtc/base/platform_thread.h" | 15 #include "webrtc/base/platform_thread.h" |
| 16 #include "webrtc/test/testsupport/perf_test.h" | 16 #include "webrtc/test/testsupport/perf_test.h" |
| 17 | 17 |
| 18 namespace webrtc { | 18 namespace webrtc { |
| 19 namespace { | 19 namespace { |
| 20 | 20 |
| 21 static const uint32_t kStartBitrateBps = 60000; | |
| 21 static const int64_t kPollIntervalMs = 20; | 22 static const int64_t kPollIntervalMs = 20; |
| 22 | 23 |
| 23 std::vector<uint32_t> GenerateSsrcs(size_t num_streams, uint32_t ssrc_offset) { | 24 std::vector<uint32_t> GenerateSsrcs(size_t num_streams, uint32_t ssrc_offset) { |
| 24 std::vector<uint32_t> ssrcs; | 25 std::vector<uint32_t> ssrcs; |
| 25 for (size_t i = 0; i != num_streams; ++i) | 26 for (size_t i = 0; i != num_streams; ++i) |
| 26 ssrcs.push_back(static_cast<uint32_t>(ssrc_offset + i)); | 27 ssrcs.push_back(static_cast<uint32_t>(ssrc_offset + i)); |
| 27 return ssrcs; | 28 return ssrcs; |
| 28 } | 29 } |
| 29 } // namespace | 30 } // namespace |
| 30 | 31 |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 48 test_start_ms_(-1), | 49 test_start_ms_(-1), |
| 49 ramp_up_finished_ms_(-1), | 50 ramp_up_finished_ms_(-1), |
| 50 extension_type_(extension_type), | 51 extension_type_(extension_type), |
| 51 video_ssrcs_(GenerateSsrcs(num_video_streams_, 100)), | 52 video_ssrcs_(GenerateSsrcs(num_video_streams_, 100)), |
| 52 video_rtx_ssrcs_(GenerateSsrcs(num_video_streams_, 200)), | 53 video_rtx_ssrcs_(GenerateSsrcs(num_video_streams_, 200)), |
| 53 audio_ssrcs_(GenerateSsrcs(num_audio_streams_, 300)), | 54 audio_ssrcs_(GenerateSsrcs(num_audio_streams_, 300)), |
| 54 poller_thread_(&BitrateStatsPollingThread, | 55 poller_thread_(&BitrateStatsPollingThread, |
| 55 this, | 56 this, |
| 56 "BitrateStatsPollingThread"), | 57 "BitrateStatsPollingThread"), |
| 57 sender_call_(nullptr) { | 58 sender_call_(nullptr) { |
| 59 EXPECT_LE(num_audio_streams_, 1u); | |
| 58 if (rtx_) { | 60 if (rtx_) { |
| 59 for (size_t i = 0; i < video_ssrcs_.size(); ++i) | 61 for (size_t i = 0; i < video_ssrcs_.size(); ++i) |
| 60 rtx_ssrc_map_[video_rtx_ssrcs_[i]] = video_ssrcs_[i]; | 62 rtx_ssrc_map_[video_rtx_ssrcs_[i]] = video_ssrcs_[i]; |
| 61 } | 63 } |
| 62 } | 64 } |
| 63 | 65 |
| 64 RampUpTester::~RampUpTester() { | 66 RampUpTester::~RampUpTester() { |
| 65 event_.Set(); | 67 event_.Set(); |
| 66 } | 68 } |
| 67 | 69 |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 84 send_transport_ = new test::PacketTransport(sender_call, this, | 86 send_transport_ = new test::PacketTransport(sender_call, this, |
| 85 test::PacketTransport::kSender, | 87 test::PacketTransport::kSender, |
| 86 forward_transport_config_); | 88 forward_transport_config_); |
| 87 return send_transport_; | 89 return send_transport_; |
| 88 } | 90 } |
| 89 | 91 |
| 90 size_t RampUpTester::GetNumVideoStreams() const { | 92 size_t RampUpTester::GetNumVideoStreams() const { |
| 91 return num_video_streams_; | 93 return num_video_streams_; |
| 92 } | 94 } |
| 93 | 95 |
| 96 size_t RampUpTester::GetNumAudioStreams() const { | |
| 97 return num_audio_streams_; | |
| 98 } | |
| 99 | |
| 94 void RampUpTester::ModifyVideoConfigs( | 100 void RampUpTester::ModifyVideoConfigs( |
| 95 VideoSendStream::Config* send_config, | 101 VideoSendStream::Config* send_config, |
| 96 std::vector<VideoReceiveStream::Config>* receive_configs, | 102 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 97 VideoEncoderConfig* encoder_config) { | 103 VideoEncoderConfig* encoder_config) { |
| 98 send_config->suspend_below_min_bitrate = true; | 104 send_config->suspend_below_min_bitrate = true; |
| 99 | 105 |
| 100 if (num_video_streams_ == 1) { | 106 if (num_video_streams_ == 1) { |
| 101 encoder_config->streams[0].target_bitrate_bps = | 107 encoder_config->streams[0].target_bitrate_bps = |
| 102 encoder_config->streams[0].max_bitrate_bps = 2000000; | 108 encoder_config->streams[0].max_bitrate_bps = 2000000; |
| 103 // For single stream rampup until 1mbps | 109 // For single stream rampup until 1mbps |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 164 if (rtx_) { | 170 if (rtx_) { |
| 165 recv_config.rtp.rtx[send_config->encoder_settings.payload_type].ssrc = | 171 recv_config.rtp.rtx[send_config->encoder_settings.payload_type].ssrc = |
| 166 video_rtx_ssrcs_[i]; | 172 video_rtx_ssrcs_[i]; |
| 167 recv_config.rtp.rtx[send_config->encoder_settings.payload_type] | 173 recv_config.rtp.rtx[send_config->encoder_settings.payload_type] |
| 168 .payload_type = send_config->rtp.rtx.payload_type; | 174 .payload_type = send_config->rtp.rtx.payload_type; |
| 169 } | 175 } |
| 170 ++i; | 176 ++i; |
| 171 } | 177 } |
| 172 } | 178 } |
| 173 | 179 |
| 180 void RampUpTester::ModifyAudioConfigs( | |
| 181 AudioSendStream::Config* send_config, | |
| 182 std::vector<AudioReceiveStream::Config>* receive_configs) { | |
| 183 if (num_audio_streams_ == 0) | |
| 184 return; | |
| 185 | |
| 186 EXPECT_NE(RtpExtension::kTOffset, extension_type_) | |
| 187 << "Audio BWE not supported with toffset."; | |
| 188 | |
| 189 send_config->rtp.ssrc = audio_ssrcs_[0]; | |
| 190 send_config->rtp.extensions.clear(); | |
| 191 | |
| 192 bool transport_cc; | |
| 193 if (extension_type_ == RtpExtension::kAbsSendTime) { | |
| 194 transport_cc = false; | |
| 195 send_config->rtp.extensions.push_back( | |
| 196 RtpExtension(extension_type_.c_str(), kAbsSendTimeExtensionId)); | |
| 197 } else if (extension_type_ == RtpExtension::kTransportSequenceNumber) { | |
| 198 transport_cc = true; | |
| 199 send_config->rtp.extensions.push_back(RtpExtension( | |
| 200 extension_type_.c_str(), kTransportSequenceNumberExtensionId)); | |
| 201 } | |
| 202 | |
| 203 size_t i = 0; | |
|
mflodman
2016/01/13 15:12:45
Not used for real.
stefan-webrtc
2016/01/13 16:23:25
Done.
| |
| 204 for (AudioReceiveStream::Config& recv_config : *receive_configs) { | |
| 205 recv_config.combined_audio_video_bwe = true; | |
| 206 recv_config.rtp.transport_cc = transport_cc; | |
| 207 recv_config.rtp.extensions = send_config->rtp.extensions; | |
| 208 recv_config.rtp.remote_ssrc = send_config->rtp.ssrc; | |
| 209 ++i; | |
| 210 } | |
| 211 } | |
| 212 | |
| 174 void RampUpTester::OnCallsCreated(Call* sender_call, Call* receiver_call) { | 213 void RampUpTester::OnCallsCreated(Call* sender_call, Call* receiver_call) { |
| 175 sender_call_ = sender_call; | 214 sender_call_ = sender_call; |
| 176 } | 215 } |
| 177 | 216 |
| 178 bool RampUpTester::BitrateStatsPollingThread(void* obj) { | 217 bool RampUpTester::BitrateStatsPollingThread(void* obj) { |
| 179 return static_cast<RampUpTester*>(obj)->PollStats(); | 218 return static_cast<RampUpTester*>(obj)->PollStats(); |
| 180 } | 219 } |
| 181 | 220 |
| 182 bool RampUpTester::PollStats() { | 221 bool RampUpTester::PollStats() { |
| 183 if (sender_call_) { | 222 if (sender_call_) { |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 224 stream.rtp_stats.fec.TotalBytes(); | 263 stream.rtp_stats.fec.TotalBytes(); |
| 225 *padding_sent += stream.rtp_stats.transmitted.padding_bytes + | 264 *padding_sent += stream.rtp_stats.transmitted.padding_bytes + |
| 226 stream.rtp_stats.retransmitted.padding_bytes + | 265 stream.rtp_stats.retransmitted.padding_bytes + |
| 227 stream.rtp_stats.fec.padding_bytes; | 266 stream.rtp_stats.fec.padding_bytes; |
| 228 *media_sent += stream.rtp_stats.MediaPayloadBytes(); | 267 *media_sent += stream.rtp_stats.MediaPayloadBytes(); |
| 229 } | 268 } |
| 230 | 269 |
| 231 void RampUpTester::TriggerTestDone() { | 270 void RampUpTester::TriggerTestDone() { |
| 232 RTC_DCHECK_GE(test_start_ms_, 0); | 271 RTC_DCHECK_GE(test_start_ms_, 0); |
| 233 | 272 |
| 273 // TODO(holmer): Add audio send stats here too when those APIs are available. | |
| 234 VideoSendStream::Stats send_stats = send_stream_->GetStats(); | 274 VideoSendStream::Stats send_stats = send_stream_->GetStats(); |
| 235 | 275 |
| 236 size_t total_packets_sent = 0; | 276 size_t total_packets_sent = 0; |
| 237 size_t total_sent = 0; | 277 size_t total_sent = 0; |
| 238 size_t padding_sent = 0; | 278 size_t padding_sent = 0; |
| 239 size_t media_sent = 0; | 279 size_t media_sent = 0; |
| 240 for (uint32_t ssrc : video_ssrcs_) { | 280 for (uint32_t ssrc : video_ssrcs_) { |
| 241 AccumulateStats(send_stats.substreams[ssrc], &total_packets_sent, | 281 AccumulateStats(send_stats.substreams[ssrc], &total_packets_sent, |
| 242 &total_sent, &padding_sent, &media_sent); | 282 &total_sent, &padding_sent, &media_sent); |
| 243 } | 283 } |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 257 ReportResult("ramp-up-padding-sent", padding_sent, "bytes"); | 297 ReportResult("ramp-up-padding-sent", padding_sent, "bytes"); |
| 258 ReportResult("ramp-up-rtx-total-packets-sent", rtx_total_packets_sent, | 298 ReportResult("ramp-up-rtx-total-packets-sent", rtx_total_packets_sent, |
| 259 "packets"); | 299 "packets"); |
| 260 ReportResult("ramp-up-rtx-total-sent", rtx_total_sent, "bytes"); | 300 ReportResult("ramp-up-rtx-total-sent", rtx_total_sent, "bytes"); |
| 261 ReportResult("ramp-up-rtx-media-sent", rtx_media_sent, "bytes"); | 301 ReportResult("ramp-up-rtx-media-sent", rtx_media_sent, "bytes"); |
| 262 ReportResult("ramp-up-rtx-padding-sent", rtx_padding_sent, "bytes"); | 302 ReportResult("ramp-up-rtx-padding-sent", rtx_padding_sent, "bytes"); |
| 263 if (ramp_up_finished_ms_ >= 0) { | 303 if (ramp_up_finished_ms_ >= 0) { |
| 264 ReportResult("ramp-up-time", ramp_up_finished_ms_ - test_start_ms_, | 304 ReportResult("ramp-up-time", ramp_up_finished_ms_ - test_start_ms_, |
| 265 "milliseconds"); | 305 "milliseconds"); |
| 266 } | 306 } |
| 307 ReportResult("ramp-up-average-network-latency", | |
| 308 send_transport_->GetAverageDelayMs(), "milliseconds"); | |
| 267 } | 309 } |
| 268 | 310 |
| 269 void RampUpTester::PerformTest() { | 311 void RampUpTester::PerformTest() { |
| 270 test_start_ms_ = clock_->TimeInMilliseconds(); | 312 test_start_ms_ = clock_->TimeInMilliseconds(); |
| 271 poller_thread_.Start(); | 313 poller_thread_.Start(); |
| 272 EXPECT_TRUE(Wait()) << "Timed out while waiting for ramp-up to complete."; | 314 EXPECT_TRUE(Wait()) << "Timed out while waiting for ramp-up to complete."; |
| 273 TriggerTestDone(); | 315 TriggerTestDone(); |
| 274 poller_thread_.Stop(); | 316 poller_thread_.Stop(); |
| 275 } | 317 } |
| 276 | 318 |
| 277 RampUpDownUpTester::RampUpDownUpTester(size_t num_streams, | 319 RampUpDownUpTester::RampUpDownUpTester(size_t num_video_streams, |
| 320 size_t num_audio_streams, | |
| 278 unsigned int start_bitrate_bps, | 321 unsigned int start_bitrate_bps, |
| 279 const std::string& extension_type, | 322 const std::string& extension_type, |
| 280 bool rtx, | 323 bool rtx, |
| 281 bool red) | 324 bool red) |
| 282 : RampUpTester(num_streams, 0, start_bitrate_bps, extension_type, rtx, red), | 325 : RampUpTester(num_video_streams, |
| 326 num_audio_streams, | |
| 327 start_bitrate_bps, | |
| 328 extension_type, | |
| 329 rtx, | |
| 330 red), | |
| 283 test_state_(kFirstRampup), | 331 test_state_(kFirstRampup), |
| 284 state_start_ms_(clock_->TimeInMilliseconds()), | 332 state_start_ms_(clock_->TimeInMilliseconds()), |
| 285 interval_start_ms_(clock_->TimeInMilliseconds()), | 333 interval_start_ms_(clock_->TimeInMilliseconds()), |
| 286 sent_bytes_(0) { | 334 sent_bytes_(0) { |
| 287 forward_transport_config_.link_capacity_kbps = kHighBandwidthLimitBps / 1000; | 335 forward_transport_config_.link_capacity_kbps = kHighBandwidthLimitBps / 1000; |
| 288 } | 336 } |
| 289 | 337 |
| 290 RampUpDownUpTester::~RampUpDownUpTester() {} | 338 RampUpDownUpTester::~RampUpDownUpTester() {} |
| 291 | 339 |
| 292 bool RampUpDownUpTester::PollStats() { | 340 bool RampUpDownUpTester::PollStats() { |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 368 interval_start_ms_ = now; | 416 interval_start_ms_ = now; |
| 369 sent_bytes_ = 0; | 417 sent_bytes_ = 0; |
| 370 } | 418 } |
| 371 break; | 419 break; |
| 372 } | 420 } |
| 373 case kSecondRampup: { | 421 case kSecondRampup: { |
| 374 if (bitrate_bps > kExpectedHighBitrateBps && !suspended) { | 422 if (bitrate_bps > kExpectedHighBitrateBps && !suspended) { |
| 375 webrtc::test::PrintResult("ramp_up_down_up", GetModifierString(), | 423 webrtc::test::PrintResult("ramp_up_down_up", GetModifierString(), |
| 376 "second_rampup", now - state_start_ms_, "ms", | 424 "second_rampup", now - state_start_ms_, "ms", |
| 377 false); | 425 false); |
| 426 ReportResult("ramp-up-down-up-average-network-latency", | |
| 427 send_transport_->GetAverageDelayMs(), "milliseconds"); | |
| 378 observation_complete_.Set(); | 428 observation_complete_.Set(); |
| 379 } | 429 } |
| 380 break; | 430 break; |
| 381 } | 431 } |
| 382 } | 432 } |
| 383 } | 433 } |
| 384 | 434 |
| 385 class RampUpTest : public test::CallTest { | 435 class RampUpTest : public test::CallTest { |
| 386 public: | 436 public: |
| 387 RampUpTest() {} | 437 RampUpTest() {} |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 415 TEST_F(RampUpTest, SingleStreamWithHighStartBitrate) { | 465 TEST_F(RampUpTest, SingleStreamWithHighStartBitrate) { |
| 416 RampUpTester test(1, 0, 0.9 * kSingleStreamTargetBps, RtpExtension::kTOffset, | 466 RampUpTester test(1, 0, 0.9 * kSingleStreamTargetBps, RtpExtension::kTOffset, |
| 417 false, false); | 467 false, false); |
| 418 RunBaseTest(&test); | 468 RunBaseTest(&test); |
| 419 } | 469 } |
| 420 | 470 |
| 421 // Disabled on Mac due to flakiness, see | 471 // Disabled on Mac due to flakiness, see |
| 422 // https://bugs.chromium.org/p/webrtc/issues/detail?id=5407 | 472 // https://bugs.chromium.org/p/webrtc/issues/detail?id=5407 |
| 423 #ifndef WEBRTC_MAC | 473 #ifndef WEBRTC_MAC |
| 424 TEST_F(RampUpTest, UpDownUpOneStream) { | 474 TEST_F(RampUpTest, UpDownUpOneStream) { |
| 425 RampUpDownUpTester test(1, 60000, RtpExtension::kAbsSendTime, false, false); | 475 RampUpDownUpTester test(1, 0, kStartBitrateBps, RtpExtension::kAbsSendTime, |
| 476 false, false); | |
| 426 RunBaseTest(&test); | 477 RunBaseTest(&test); |
| 427 } | 478 } |
| 428 | 479 |
| 429 TEST_F(RampUpTest, UpDownUpThreeStreams) { | 480 TEST_F(RampUpTest, UpDownUpThreeStreams) { |
| 430 RampUpDownUpTester test(3, 60000, RtpExtension::kAbsSendTime, false, false); | 481 RampUpDownUpTester test(3, 0, kStartBitrateBps, RtpExtension::kAbsSendTime, |
| 482 false, false); | |
| 431 RunBaseTest(&test); | 483 RunBaseTest(&test); |
| 432 } | 484 } |
| 433 | 485 |
| 434 TEST_F(RampUpTest, UpDownUpOneStreamRtx) { | 486 TEST_F(RampUpTest, UpDownUpOneStreamRtx) { |
| 435 RampUpDownUpTester test(1, 60000, RtpExtension::kAbsSendTime, true, false); | 487 RampUpDownUpTester test(1, 0, kStartBitrateBps, RtpExtension::kAbsSendTime, |
| 488 true, false); | |
| 436 RunBaseTest(&test); | 489 RunBaseTest(&test); |
| 437 } | 490 } |
| 438 | 491 |
| 439 TEST_F(RampUpTest, UpDownUpThreeStreamsRtx) { | 492 TEST_F(RampUpTest, UpDownUpThreeStreamsRtx) { |
| 440 RampUpDownUpTester test(3, 60000, RtpExtension::kAbsSendTime, true, false); | 493 RampUpDownUpTester test(3, 0, kStartBitrateBps, RtpExtension::kAbsSendTime, |
| 494 true, false); | |
| 441 RunBaseTest(&test); | 495 RunBaseTest(&test); |
| 442 } | 496 } |
| 443 | 497 |
| 444 TEST_F(RampUpTest, UpDownUpOneStreamByRedRtx) { | 498 TEST_F(RampUpTest, UpDownUpOneStreamByRedRtx) { |
| 445 RampUpDownUpTester test(1, 60000, RtpExtension::kAbsSendTime, true, true); | 499 RampUpDownUpTester test(1, 0, kStartBitrateBps, RtpExtension::kAbsSendTime, |
| 500 true, true); | |
| 446 RunBaseTest(&test); | 501 RunBaseTest(&test); |
| 447 } | 502 } |
| 448 | 503 |
| 449 TEST_F(RampUpTest, UpDownUpThreeStreamsByRedRtx) { | 504 TEST_F(RampUpTest, UpDownUpThreeStreamsByRedRtx) { |
| 450 RampUpDownUpTester test(3, 60000, RtpExtension::kAbsSendTime, true, true); | 505 RampUpDownUpTester test(3, 0, kStartBitrateBps, RtpExtension::kAbsSendTime, |
| 506 true, true); | |
| 451 RunBaseTest(&test); | 507 RunBaseTest(&test); |
| 452 } | 508 } |
| 509 | |
| 510 TEST_F(RampUpTest, SendSideVideoUpDownUpRtx) { | |
| 511 RampUpDownUpTester test(3, 0, kStartBitrateBps, | |
| 512 RtpExtension::kTransportSequenceNumber, true, false); | |
| 513 RunBaseTest(&test); | |
| 514 } | |
| 515 | |
| 516 // TODO(holmer): Enable when audio bitrates are included in the bitrate | |
| 517 // allocation. | |
| 518 TEST_F(RampUpTest, DISABLED_SendSideAudioVideoUpDownUpRtx) { | |
| 519 RampUpDownUpTester test(3, 1, kStartBitrateBps, | |
| 520 RtpExtension::kTransportSequenceNumber, true, false); | |
| 521 RunBaseTest(&test); | |
| 522 } | |
| 523 | |
| 453 #endif | 524 #endif |
| 454 | 525 |
| 455 TEST_F(RampUpTest, AbsSendTimeSingleStream) { | 526 TEST_F(RampUpTest, AbsSendTimeSingleStream) { |
| 456 RampUpTester test(1, 0, 0, RtpExtension::kAbsSendTime, false, false); | 527 RampUpTester test(1, 0, 0, RtpExtension::kAbsSendTime, false, false); |
| 457 RunBaseTest(&test); | 528 RunBaseTest(&test); |
| 458 } | 529 } |
| 459 | 530 |
| 460 TEST_F(RampUpTest, AbsSendTimeSimulcast) { | 531 TEST_F(RampUpTest, AbsSendTimeSimulcast) { |
| 461 RampUpTester test(3, 0, 0, RtpExtension::kAbsSendTime, false, false); | 532 RampUpTester test(3, 0, 0, RtpExtension::kAbsSendTime, false, false); |
| 462 RunBaseTest(&test); | 533 RunBaseTest(&test); |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 489 false); | 560 false); |
| 490 RunBaseTest(&test); | 561 RunBaseTest(&test); |
| 491 } | 562 } |
| 492 | 563 |
| 493 TEST_F(RampUpTest, TransportSequenceNumberSimulcastWithRtx) { | 564 TEST_F(RampUpTest, TransportSequenceNumberSimulcastWithRtx) { |
| 494 RampUpTester test(3, 0, 0, RtpExtension::kTransportSequenceNumber, true, | 565 RampUpTester test(3, 0, 0, RtpExtension::kTransportSequenceNumber, true, |
| 495 false); | 566 false); |
| 496 RunBaseTest(&test); | 567 RunBaseTest(&test); |
| 497 } | 568 } |
| 498 | 569 |
| 570 TEST_F(RampUpTest, AudioVideoTransportSequenceNumberSimulcastWithRtx) { | |
| 571 RampUpTester test(3, 1, 0, RtpExtension::kTransportSequenceNumber, true, | |
| 572 false); | |
| 573 RunBaseTest(&test); | |
| 574 } | |
| 575 | |
| 499 TEST_F(RampUpTest, TransportSequenceNumberSimulcastByRedWithRtx) { | 576 TEST_F(RampUpTest, TransportSequenceNumberSimulcastByRedWithRtx) { |
| 500 RampUpTester test(3, 0, 0, RtpExtension::kTransportSequenceNumber, true, | 577 RampUpTester test(3, 0, 0, RtpExtension::kTransportSequenceNumber, true, |
| 501 true); | 578 true); |
| 502 RunBaseTest(&test); | 579 RunBaseTest(&test); |
| 503 } | 580 } |
| 504 | 581 |
| 505 TEST_F(RampUpTest, TransportSequenceNumberSingleStreamWithHighStartBitrate) { | 582 TEST_F(RampUpTest, TransportSequenceNumberSingleStreamWithHighStartBitrate) { |
| 506 RampUpTester test(1, 0, 0.9 * kSingleStreamTargetBps, | 583 RampUpTester test(1, 0, 0.9 * kSingleStreamTargetBps, |
| 507 RtpExtension::kTransportSequenceNumber, false, false); | 584 RtpExtension::kTransportSequenceNumber, false, false); |
| 508 RunBaseTest(&test); | 585 RunBaseTest(&test); |
| 509 } | 586 } |
| 510 } // namespace webrtc | 587 } // namespace webrtc |
| OLD | NEW |