| Index: webrtc/call/rampup_tests.cc
|
| diff --git a/webrtc/call/rampup_tests.cc b/webrtc/call/rampup_tests.cc
|
| index a3fcc302f3bdfb65b9428453e453d2bc2fd7fc00..81f1e81c685b45adf6515d4a56f3204b3734d5d1 100644
|
| --- a/webrtc/call/rampup_tests.cc
|
| +++ b/webrtc/call/rampup_tests.cc
|
| @@ -55,6 +55,7 @@ RampUpTester::RampUpTester(size_t num_video_streams,
|
| this,
|
| "BitrateStatsPollingThread"),
|
| sender_call_(nullptr) {
|
| + EXPECT_LE(num_audio_streams_, 1u);
|
| if (rtx_) {
|
| for (size_t i = 0; i < video_ssrcs_.size(); ++i)
|
| rtx_ssrc_map_[video_rtx_ssrcs_[i]] = video_ssrcs_[i];
|
| @@ -91,6 +92,10 @@ size_t RampUpTester::GetNumVideoStreams() const {
|
| return num_video_streams_;
|
| }
|
|
|
| +size_t RampUpTester::GetNumAudioStreams() const {
|
| + return num_audio_streams_;
|
| +}
|
| +
|
| void RampUpTester::ModifyVideoConfigs(
|
| VideoSendStream::Config* send_config,
|
| std::vector<VideoReceiveStream::Config>* receive_configs,
|
| @@ -171,6 +176,37 @@ void RampUpTester::ModifyVideoConfigs(
|
| }
|
| }
|
|
|
| +void RampUpTester::ModifyAudioConfigs(
|
| + AudioSendStream::Config* send_config,
|
| + std::vector<AudioReceiveStream::Config>* receive_configs) {
|
| + if (num_audio_streams_ == 0)
|
| + return;
|
| +
|
| + EXPECT_NE(RtpExtension::kTOffset, extension_type_)
|
| + << "Audio BWE not supported with toffset.";
|
| +
|
| + send_config->rtp.ssrc = audio_ssrcs_[0];
|
| + send_config->rtp.extensions.clear();
|
| +
|
| + bool transport_cc = false;
|
| + if (extension_type_ == RtpExtension::kAbsSendTime) {
|
| + transport_cc = false;
|
| + send_config->rtp.extensions.push_back(
|
| + RtpExtension(extension_type_.c_str(), kAbsSendTimeExtensionId));
|
| + } else if (extension_type_ == RtpExtension::kTransportSequenceNumber) {
|
| + transport_cc = true;
|
| + send_config->rtp.extensions.push_back(RtpExtension(
|
| + extension_type_.c_str(), kTransportSequenceNumberExtensionId));
|
| + }
|
| +
|
| + for (AudioReceiveStream::Config& recv_config : *receive_configs) {
|
| + recv_config.combined_audio_video_bwe = true;
|
| + recv_config.rtp.transport_cc = transport_cc;
|
| + recv_config.rtp.extensions = send_config->rtp.extensions;
|
| + recv_config.rtp.remote_ssrc = send_config->rtp.ssrc;
|
| + }
|
| +}
|
| +
|
| void RampUpTester::OnCallsCreated(Call* sender_call, Call* receiver_call) {
|
| sender_call_ = sender_call;
|
| }
|
| @@ -231,6 +267,7 @@ void RampUpTester::AccumulateStats(const VideoSendStream::StreamStats& stream,
|
| void RampUpTester::TriggerTestDone() {
|
| RTC_DCHECK_GE(test_start_ms_, 0);
|
|
|
| + // TODO(holmer): Add audio send stats here too when those APIs are available.
|
| VideoSendStream::Stats send_stats = send_stream_->GetStats();
|
|
|
| size_t total_packets_sent = 0;
|
| @@ -264,6 +301,8 @@ void RampUpTester::TriggerTestDone() {
|
| ReportResult("ramp-up-time", ramp_up_finished_ms_ - test_start_ms_,
|
| "milliseconds");
|
| }
|
| + ReportResult("ramp-up-average-network-latency",
|
| + send_transport_->GetAverageDelayMs(), "milliseconds");
|
| }
|
|
|
| void RampUpTester::PerformTest() {
|
| @@ -274,12 +313,18 @@ void RampUpTester::PerformTest() {
|
| poller_thread_.Stop();
|
| }
|
|
|
| -RampUpDownUpTester::RampUpDownUpTester(size_t num_streams,
|
| +RampUpDownUpTester::RampUpDownUpTester(size_t num_video_streams,
|
| + size_t num_audio_streams,
|
| unsigned int start_bitrate_bps,
|
| const std::string& extension_type,
|
| bool rtx,
|
| bool red)
|
| - : RampUpTester(num_streams, 0, start_bitrate_bps, extension_type, rtx, red),
|
| + : RampUpTester(num_video_streams,
|
| + num_audio_streams,
|
| + start_bitrate_bps,
|
| + extension_type,
|
| + rtx,
|
| + red),
|
| test_state_(kFirstRampup),
|
| state_start_ms_(clock_->TimeInMilliseconds()),
|
| interval_start_ms_(clock_->TimeInMilliseconds()),
|
| @@ -375,6 +420,8 @@ void RampUpDownUpTester::EvolveTestState(int bitrate_bps, bool suspended) {
|
| webrtc::test::PrintResult("ramp_up_down_up", GetModifierString(),
|
| "second_rampup", now - state_start_ms_, "ms",
|
| false);
|
| + ReportResult("ramp-up-down-up-average-network-latency",
|
| + send_transport_->GetAverageDelayMs(), "milliseconds");
|
| observation_complete_.Set();
|
| }
|
| break;
|
| @@ -421,35 +468,59 @@ TEST_F(RampUpTest, SingleStreamWithHighStartBitrate) {
|
| // Disabled on Mac due to flakiness, see
|
| // https://bugs.chromium.org/p/webrtc/issues/detail?id=5407
|
| #ifndef WEBRTC_MAC
|
| +
|
| +static const uint32_t kStartBitrateBps = 60000;
|
| +
|
| TEST_F(RampUpTest, UpDownUpOneStream) {
|
| - RampUpDownUpTester test(1, 60000, RtpExtension::kAbsSendTime, false, false);
|
| + RampUpDownUpTester test(1, 0, kStartBitrateBps, RtpExtension::kAbsSendTime,
|
| + false, false);
|
| RunBaseTest(&test);
|
| }
|
|
|
| TEST_F(RampUpTest, UpDownUpThreeStreams) {
|
| - RampUpDownUpTester test(3, 60000, RtpExtension::kAbsSendTime, false, false);
|
| + RampUpDownUpTester test(3, 0, kStartBitrateBps, RtpExtension::kAbsSendTime,
|
| + false, false);
|
| RunBaseTest(&test);
|
| }
|
|
|
| TEST_F(RampUpTest, UpDownUpOneStreamRtx) {
|
| - RampUpDownUpTester test(1, 60000, RtpExtension::kAbsSendTime, true, false);
|
| + RampUpDownUpTester test(1, 0, kStartBitrateBps, RtpExtension::kAbsSendTime,
|
| + true, false);
|
| RunBaseTest(&test);
|
| }
|
|
|
| TEST_F(RampUpTest, UpDownUpThreeStreamsRtx) {
|
| - RampUpDownUpTester test(3, 60000, RtpExtension::kAbsSendTime, true, false);
|
| + RampUpDownUpTester test(3, 0, kStartBitrateBps, RtpExtension::kAbsSendTime,
|
| + true, false);
|
| RunBaseTest(&test);
|
| }
|
|
|
| TEST_F(RampUpTest, UpDownUpOneStreamByRedRtx) {
|
| - RampUpDownUpTester test(1, 60000, RtpExtension::kAbsSendTime, true, true);
|
| + RampUpDownUpTester test(1, 0, kStartBitrateBps, RtpExtension::kAbsSendTime,
|
| + true, true);
|
| RunBaseTest(&test);
|
| }
|
|
|
| TEST_F(RampUpTest, UpDownUpThreeStreamsByRedRtx) {
|
| - RampUpDownUpTester test(3, 60000, RtpExtension::kAbsSendTime, true, true);
|
| + RampUpDownUpTester test(3, 0, kStartBitrateBps, RtpExtension::kAbsSendTime,
|
| + true, true);
|
| + RunBaseTest(&test);
|
| +}
|
| +
|
| +TEST_F(RampUpTest, SendSideVideoUpDownUpRtx) {
|
| + RampUpDownUpTester test(3, 0, kStartBitrateBps,
|
| + RtpExtension::kTransportSequenceNumber, true, false);
|
| RunBaseTest(&test);
|
| }
|
| +
|
| +// TODO(holmer): Enable when audio bitrates are included in the bitrate
|
| +// allocation.
|
| +TEST_F(RampUpTest, DISABLED_SendSideAudioVideoUpDownUpRtx) {
|
| + RampUpDownUpTester test(3, 1, kStartBitrateBps,
|
| + RtpExtension::kTransportSequenceNumber, true, false);
|
| + RunBaseTest(&test);
|
| +}
|
| +
|
| #endif
|
|
|
| TEST_F(RampUpTest, AbsSendTimeSingleStream) {
|
| @@ -496,6 +567,12 @@ TEST_F(RampUpTest, TransportSequenceNumberSimulcastWithRtx) {
|
| RunBaseTest(&test);
|
| }
|
|
|
| +TEST_F(RampUpTest, AudioVideoTransportSequenceNumberSimulcastWithRtx) {
|
| + RampUpTester test(3, 1, 0, RtpExtension::kTransportSequenceNumber, true,
|
| + false);
|
| + RunBaseTest(&test);
|
| +}
|
| +
|
| TEST_F(RampUpTest, TransportSequenceNumberSimulcastByRedWithRtx) {
|
| RampUpTester test(3, 0, 0, RtpExtension::kTransportSequenceNumber, true,
|
| true);
|
|
|