| 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 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 374 bool rtx, | 374 bool rtx, |
| 375 bool red) { | 375 bool red) { |
| 376 std::vector<uint32_t> ssrcs(GenerateSsrcs(num_streams, 100)); | 376 std::vector<uint32_t> ssrcs(GenerateSsrcs(num_streams, 100)); |
| 377 std::vector<uint32_t> rtx_ssrcs(GenerateSsrcs(num_streams, 200)); | 377 std::vector<uint32_t> rtx_ssrcs(GenerateSsrcs(num_streams, 200)); |
| 378 StreamObserver::SsrcMap rtx_ssrc_map; | 378 StreamObserver::SsrcMap rtx_ssrc_map; |
| 379 if (rtx) { | 379 if (rtx) { |
| 380 for (size_t i = 0; i < ssrcs.size(); ++i) | 380 for (size_t i = 0; i < ssrcs.size(); ++i) |
| 381 rtx_ssrc_map[rtx_ssrcs[i]] = ssrcs[i]; | 381 rtx_ssrc_map[rtx_ssrcs[i]] = ssrcs[i]; |
| 382 } | 382 } |
| 383 | 383 |
| 384 CreateSendConfig(num_streams); | |
| 385 send_config_.rtp.extensions.clear(); | |
| 386 | |
| 387 test::DirectTransport receiver_transport; | 384 test::DirectTransport receiver_transport; |
| 388 StreamObserver stream_observer(rtx_ssrc_map, &receiver_transport, | 385 StreamObserver stream_observer(rtx_ssrc_map, &receiver_transport, |
| 389 Clock::GetRealTimeClock()); | 386 Clock::GetRealTimeClock()); |
| 390 | 387 |
| 388 CreateSendConfig(num_streams, &stream_observer); |
| 389 send_config_.rtp.extensions.clear(); |
| 390 |
| 391 if (extension_type == RtpExtension::kAbsSendTime) { | 391 if (extension_type == RtpExtension::kAbsSendTime) { |
| 392 stream_observer.SetRemoteBitrateEstimator( | 392 stream_observer.SetRemoteBitrateEstimator( |
| 393 new RemoteBitrateEstimatorAbsSendTime( | 393 new RemoteBitrateEstimatorAbsSendTime( |
| 394 &stream_observer, Clock::GetRealTimeClock(), | 394 &stream_observer, Clock::GetRealTimeClock(), |
| 395 kRemoteBitrateEstimatorMinBitrateBps)); | 395 kRemoteBitrateEstimatorMinBitrateBps)); |
| 396 send_config_.rtp.extensions.push_back(RtpExtension( | 396 send_config_.rtp.extensions.push_back(RtpExtension( |
| 397 extension_type.c_str(), kAbsSendTimeExtensionId)); | 397 extension_type.c_str(), kAbsSendTimeExtensionId)); |
| 398 } else { | 398 } else { |
| 399 stream_observer.SetRemoteBitrateEstimator( | 399 stream_observer.SetRemoteBitrateEstimator( |
| 400 new RemoteBitrateEstimatorSingleStream( | 400 new RemoteBitrateEstimatorSingleStream( |
| 401 &stream_observer, Clock::GetRealTimeClock(), | 401 &stream_observer, Clock::GetRealTimeClock(), |
| 402 kRemoteBitrateEstimatorMinBitrateBps)); | 402 kRemoteBitrateEstimatorMinBitrateBps)); |
| 403 send_config_.rtp.extensions.push_back(RtpExtension( | 403 send_config_.rtp.extensions.push_back(RtpExtension( |
| 404 extension_type.c_str(), kTransmissionTimeOffsetExtensionId)); | 404 extension_type.c_str(), kTransmissionTimeOffsetExtensionId)); |
| 405 } | 405 } |
| 406 | 406 |
| 407 Call::Config call_config(&stream_observer); | 407 Call::Config call_config; |
| 408 if (start_bitrate_bps != 0) { | 408 if (start_bitrate_bps != 0) { |
| 409 call_config.bitrate_config.start_bitrate_bps = start_bitrate_bps; | 409 call_config.bitrate_config.start_bitrate_bps = start_bitrate_bps; |
| 410 stream_observer.set_start_bitrate_bps(start_bitrate_bps); | 410 stream_observer.set_start_bitrate_bps(start_bitrate_bps); |
| 411 } | 411 } |
| 412 | |
| 413 CreateSenderCall(call_config); | 412 CreateSenderCall(call_config); |
| 414 | 413 |
| 415 receiver_transport.SetReceiver(sender_call_->Receiver()); | 414 receiver_transport.SetReceiver(sender_call_->Receiver()); |
| 416 | 415 |
| 417 if (num_streams == 1) { | 416 if (num_streams == 1) { |
| 418 encoder_config_.streams[0].target_bitrate_bps = 2000000; | 417 encoder_config_.streams[0].target_bitrate_bps = 2000000; |
| 419 encoder_config_.streams[0].max_bitrate_bps = 2000000; | 418 encoder_config_.streams[0].max_bitrate_bps = 2000000; |
| 420 } | 419 } |
| 421 | 420 |
| 422 send_config_.rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 421 send_config_.rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 455 DestroyStreams(); | 454 DestroyStreams(); |
| 456 } | 455 } |
| 457 | 456 |
| 458 void RampUpTest::RunRampUpDownUpTest(size_t number_of_streams, | 457 void RampUpTest::RunRampUpDownUpTest(size_t number_of_streams, |
| 459 bool rtx, | 458 bool rtx, |
| 460 bool red) { | 459 bool red) { |
| 461 test::DirectTransport receiver_transport; | 460 test::DirectTransport receiver_transport; |
| 462 LowRateStreamObserver stream_observer( | 461 LowRateStreamObserver stream_observer( |
| 463 &receiver_transport, Clock::GetRealTimeClock(), number_of_streams, rtx); | 462 &receiver_transport, Clock::GetRealTimeClock(), number_of_streams, rtx); |
| 464 | 463 |
| 465 Call::Config call_config(&stream_observer); | 464 Call::Config call_config; |
| 466 call_config.bitrate_config.start_bitrate_bps = 60000; | 465 call_config.bitrate_config.start_bitrate_bps = 60000; |
| 467 CreateSenderCall(call_config); | 466 CreateSenderCall(call_config); |
| 468 receiver_transport.SetReceiver(sender_call_->Receiver()); | 467 receiver_transport.SetReceiver(sender_call_->Receiver()); |
| 469 | 468 |
| 470 CreateSendConfig(number_of_streams); | 469 CreateSendConfig(number_of_streams, &stream_observer); |
| 471 | 470 |
| 472 send_config_.rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 471 send_config_.rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
| 473 send_config_.rtp.extensions.push_back(RtpExtension( | 472 send_config_.rtp.extensions.push_back(RtpExtension( |
| 474 RtpExtension::kAbsSendTime, kAbsSendTimeExtensionId)); | 473 RtpExtension::kAbsSendTime, kAbsSendTimeExtensionId)); |
| 475 send_config_.suspend_below_min_bitrate = true; | 474 send_config_.suspend_below_min_bitrate = true; |
| 476 | 475 |
| 477 if (rtx) { | 476 if (rtx) { |
| 478 send_config_.rtp.rtx.payload_type = kSendRtxPayloadType; | 477 send_config_.rtp.rtx.payload_type = kSendRtxPayloadType; |
| 479 send_config_.rtp.rtx.ssrcs = GenerateSsrcs(number_of_streams, 200); | 478 send_config_.rtp.rtx.ssrcs = GenerateSsrcs(number_of_streams, 200); |
| 480 } | 479 } |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 555 | 554 |
| 556 TEST_F(RampUpTest, AbsSendTimeSimulcastByRedWithRtx) { | 555 TEST_F(RampUpTest, AbsSendTimeSimulcastByRedWithRtx) { |
| 557 RunRampUpTest(3, 0, RtpExtension::kAbsSendTime, true, true); | 556 RunRampUpTest(3, 0, RtpExtension::kAbsSendTime, true, true); |
| 558 } | 557 } |
| 559 | 558 |
| 560 TEST_F(RampUpTest, AbsSendTimeSingleStreamWithHighStartBitrate) { | 559 TEST_F(RampUpTest, AbsSendTimeSingleStreamWithHighStartBitrate) { |
| 561 RunRampUpTest(1, 0.9 * kSingleStreamTargetBps, RtpExtension::kAbsSendTime, | 560 RunRampUpTest(1, 0.9 * kSingleStreamTargetBps, RtpExtension::kAbsSendTime, |
| 562 false, false); | 561 false, false); |
| 563 } | 562 } |
| 564 } // namespace webrtc | 563 } // namespace webrtc |
| OLD | NEW |