| Index: webrtc/call/rampup_tests.cc
|
| diff --git a/webrtc/video/rampup_tests.cc b/webrtc/call/rampup_tests.cc
|
| similarity index 79%
|
| rename from webrtc/video/rampup_tests.cc
|
| rename to webrtc/call/rampup_tests.cc
|
| index bc5daf522599ed1ee32bb5d6fa306b26c306e9d2..ace90f45e83469beb3e92a88530dd58fb945733a 100644
|
| --- a/webrtc/video/rampup_tests.cc
|
| +++ b/webrtc/call/rampup_tests.cc
|
| @@ -8,31 +8,19 @@
|
| * be found in the AUTHORS file in the root of the source tree.
|
| */
|
|
|
| +#include "webrtc/call/rampup_tests.h"
|
| +
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "webrtc/base/checks.h"
|
| -#include "webrtc/base/common.h"
|
| -#include "webrtc/base/event.h"
|
| #include "webrtc/base/platform_thread.h"
|
| -#include "webrtc/modules/pacing/packet_router.h"
|
| -#include "webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.h"
|
| -#include "webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.h"
|
| -#include "webrtc/modules/remote_bitrate_estimator/remote_estimator_proxy.h"
|
| -#include "webrtc/modules/rtp_rtcp/include/receive_statistics.h"
|
| -#include "webrtc/modules/rtp_rtcp/include/rtp_header_parser.h"
|
| -#include "webrtc/modules/rtp_rtcp/include/rtp_payload_registry.h"
|
| -#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h"
|
| -#include "webrtc/modules/rtp_rtcp/source/rtcp_utility.h"
|
| -#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
|
| #include "webrtc/test/testsupport/perf_test.h"
|
| -#include "webrtc/video/rampup_tests.h"
|
|
|
| namespace webrtc {
|
| namespace {
|
|
|
| static const int64_t kPollIntervalMs = 20;
|
|
|
| -std::vector<uint32_t> GenerateSsrcs(size_t num_streams,
|
| - uint32_t ssrc_offset) {
|
| +std::vector<uint32_t> GenerateSsrcs(size_t num_streams, uint32_t ssrc_offset) {
|
| std::vector<uint32_t> ssrcs;
|
| for (size_t i = 0; i != num_streams; ++i)
|
| ssrcs.push_back(static_cast<uint32_t>(ssrc_offset + i));
|
| @@ -40,7 +28,8 @@ std::vector<uint32_t> GenerateSsrcs(size_t num_streams,
|
| }
|
| } // namespace
|
|
|
| -RampUpTester::RampUpTester(size_t num_streams,
|
| +RampUpTester::RampUpTester(size_t num_video_streams,
|
| + size_t num_audio_streams,
|
| unsigned int start_bitrate_bps,
|
| const std::string& extension_type,
|
| bool rtx,
|
| @@ -48,7 +37,8 @@ RampUpTester::RampUpTester(size_t num_streams,
|
| : EndToEndTest(test::CallTest::kLongTimeoutMs),
|
| event_(false, false),
|
| clock_(Clock::GetRealTimeClock()),
|
| - num_streams_(num_streams),
|
| + num_video_streams_(num_video_streams),
|
| + num_audio_streams_(num_audio_streams),
|
| rtx_(rtx),
|
| red_(red),
|
| send_stream_(nullptr),
|
| @@ -58,15 +48,16 @@ RampUpTester::RampUpTester(size_t num_streams,
|
| test_start_ms_(-1),
|
| ramp_up_finished_ms_(-1),
|
| extension_type_(extension_type),
|
| - ssrcs_(GenerateSsrcs(num_streams, 100)),
|
| - rtx_ssrcs_(GenerateSsrcs(num_streams, 200)),
|
| + video_ssrcs_(GenerateSsrcs(num_video_streams_, 100)),
|
| + video_rtx_ssrcs_(GenerateSsrcs(num_video_streams_, 200)),
|
| + audio_ssrcs_(GenerateSsrcs(num_audio_streams_, 300)),
|
| poller_thread_(&BitrateStatsPollingThread,
|
| this,
|
| "BitrateStatsPollingThread"),
|
| sender_call_(nullptr) {
|
| if (rtx_) {
|
| - for (size_t i = 0; i < ssrcs_.size(); ++i)
|
| - rtx_ssrc_map_[rtx_ssrcs_[i]] = ssrcs_[i];
|
| + for (size_t i = 0; i < video_ssrcs_.size(); ++i)
|
| + rtx_ssrc_map_[video_rtx_ssrcs_[i]] = video_ssrcs_[i];
|
| }
|
| }
|
|
|
| @@ -83,7 +74,7 @@ Call::Config RampUpTester::GetSenderCallConfig() {
|
| return call_config;
|
| }
|
|
|
| -void RampUpTester::OnStreamsCreated(
|
| +void RampUpTester::OnVideoStreamsCreated(
|
| VideoSendStream* send_stream,
|
| const std::vector<VideoReceiveStream*>& receive_streams) {
|
| send_stream_ = send_stream;
|
| @@ -96,17 +87,13 @@ void RampUpTester::OnTransportsCreated(
|
| send_transport_->SetConfig(forward_transport_config_);
|
| }
|
|
|
| -size_t RampUpTester::GetNumStreams() const {
|
| - return num_streams_;
|
| -}
|
| -
|
| -void RampUpTester::ModifyConfigs(
|
| +void RampUpTester::ModifyVideoConfigs(
|
| VideoSendStream::Config* send_config,
|
| std::vector<VideoReceiveStream::Config>* receive_configs,
|
| VideoEncoderConfig* encoder_config) {
|
| send_config->suspend_below_min_bitrate = true;
|
|
|
| - if (num_streams_ == 1) {
|
| + if (num_video_streams_ == 1) {
|
| encoder_config->streams[0].target_bitrate_bps =
|
| encoder_config->streams[0].max_bitrate_bps = 2000000;
|
| // For single stream rampup until 1mbps
|
| @@ -143,10 +130,10 @@ void RampUpTester::ModifyConfigs(
|
| }
|
|
|
| send_config->rtp.nack.rtp_history_ms = test::CallTest::kNackRtpHistoryMs;
|
| - send_config->rtp.ssrcs = ssrcs_;
|
| + send_config->rtp.ssrcs = video_ssrcs_;
|
| if (rtx_) {
|
| send_config->rtp.rtx.payload_type = test::CallTest::kSendRtxPayloadType;
|
| - send_config->rtp.rtx.ssrcs = rtx_ssrcs_;
|
| + send_config->rtp.rtx.ssrcs = video_rtx_ssrcs_;
|
| }
|
| if (red_) {
|
| send_config->rtp.fec.ulpfec_payload_type =
|
| @@ -160,7 +147,7 @@ void RampUpTester::ModifyConfigs(
|
| recv_config.rtp.transport_cc = transport_cc;
|
| recv_config.rtp.extensions = send_config->rtp.extensions;
|
|
|
| - recv_config.rtp.remote_ssrc = ssrcs_[i];
|
| + recv_config.rtp.remote_ssrc = video_ssrcs_[i];
|
| recv_config.rtp.nack.rtp_history_ms = send_config->rtp.nack.rtp_history_ms;
|
|
|
| if (red_) {
|
| @@ -172,7 +159,7 @@ void RampUpTester::ModifyConfigs(
|
|
|
| if (rtx_) {
|
| recv_config.rtp.rtx[send_config->encoder_settings.payload_type].ssrc =
|
| - rtx_ssrcs_[i];
|
| + video_rtx_ssrcs_[i];
|
| recv_config.rtp.rtx[send_config->encoder_settings.payload_type]
|
| .payload_type = send_config->rtp.rtx.payload_type;
|
| }
|
| @@ -216,8 +203,8 @@ void RampUpTester::ReportResult(const std::string& measurement,
|
| const std::string& units) const {
|
| webrtc::test::PrintResult(
|
| measurement, "",
|
| - ::testing::UnitTest::GetInstance()->current_test_info()->name(),
|
| - value, units, false);
|
| + ::testing::UnitTest::GetInstance()->current_test_info()->name(), value,
|
| + units, false);
|
| }
|
|
|
| void RampUpTester::AccumulateStats(const VideoSendStream::StreamStats& stream,
|
| @@ -246,7 +233,7 @@ void RampUpTester::TriggerTestDone() {
|
| size_t total_sent = 0;
|
| size_t padding_sent = 0;
|
| size_t media_sent = 0;
|
| - for (uint32_t ssrc : ssrcs_) {
|
| + for (uint32_t ssrc : video_ssrcs_) {
|
| AccumulateStats(send_stats.substreams[ssrc], &total_packets_sent,
|
| &total_sent, &padding_sent, &media_sent);
|
| }
|
| @@ -255,7 +242,7 @@ void RampUpTester::TriggerTestDone() {
|
| size_t rtx_total_sent = 0;
|
| size_t rtx_padding_sent = 0;
|
| size_t rtx_media_sent = 0;
|
| - for (uint32_t rtx_ssrc : rtx_ssrcs_) {
|
| + for (uint32_t rtx_ssrc : video_rtx_ssrcs_) {
|
| AccumulateStats(send_stats.substreams[rtx_ssrc], &rtx_total_packets_sent,
|
| &rtx_total_sent, &rtx_padding_sent, &rtx_media_sent);
|
| }
|
| @@ -288,13 +275,12 @@ RampUpDownUpTester::RampUpDownUpTester(size_t num_streams,
|
| const std::string& extension_type,
|
| bool rtx,
|
| bool red)
|
| - : RampUpTester(num_streams, start_bitrate_bps, extension_type, rtx, red),
|
| + : RampUpTester(num_streams, 0, start_bitrate_bps, extension_type, rtx, red),
|
| test_state_(kFirstRampup),
|
| state_start_ms_(clock_->TimeInMilliseconds()),
|
| interval_start_ms_(clock_->TimeInMilliseconds()),
|
| sent_bytes_(0) {
|
| - forward_transport_config_.link_capacity_kbps =
|
| - kHighBandwidthLimitBps / 1000;
|
| + forward_transport_config_.link_capacity_kbps = kHighBandwidthLimitBps / 1000;
|
| }
|
|
|
| RampUpDownUpTester::~RampUpDownUpTester() {}
|
| @@ -321,12 +307,22 @@ Call::Config RampUpDownUpTester::GetReceiverCallConfig() {
|
|
|
| std::string RampUpDownUpTester::GetModifierString() const {
|
| std::string str("_");
|
| - std::ostringstream s;
|
| - s << num_streams_;
|
| - str += s.str();
|
| - str += "stream";
|
| - str += (num_streams_ > 1 ? "s" : "");
|
| - str += "_";
|
| + if (num_video_streams_ > 0) {
|
| + std::ostringstream s;
|
| + s << num_video_streams_;
|
| + str += s.str();
|
| + str += "stream";
|
| + str += (num_video_streams_ > 1 ? "s" : "");
|
| + str += "_";
|
| + }
|
| + if (num_audio_streams_ > 0) {
|
| + std::ostringstream s;
|
| + s << num_audio_streams_;
|
| + str += s.str();
|
| + str += "stream";
|
| + str += (num_audio_streams_ > 1 ? "s" : "");
|
| + str += "_";
|
| + }
|
| str += (rtx_ ? "" : "no");
|
| str += "rtx";
|
| return str;
|
| @@ -344,11 +340,8 @@ void RampUpDownUpTester::EvolveTestState(int bitrate_bps, bool suspended) {
|
| kLowBandwidthLimitBps / 1000;
|
| send_transport_->SetConfig(forward_transport_config_);
|
| test_state_ = kLowRate;
|
| - webrtc::test::PrintResult("ramp_up_down_up",
|
| - GetModifierString(),
|
| - "first_rampup",
|
| - now - state_start_ms_,
|
| - "ms",
|
| + webrtc::test::PrintResult("ramp_up_down_up", GetModifierString(),
|
| + "first_rampup", now - state_start_ms_, "ms",
|
| false);
|
| state_start_ms_ = now;
|
| interval_start_ms_ = now;
|
| @@ -364,11 +357,8 @@ void RampUpDownUpTester::EvolveTestState(int bitrate_bps, bool suspended) {
|
| kHighBandwidthLimitBps / 1000;
|
| send_transport_->SetConfig(forward_transport_config_);
|
| test_state_ = kSecondRampup;
|
| - webrtc::test::PrintResult("ramp_up_down_up",
|
| - GetModifierString(),
|
| - "rampdown",
|
| - now - state_start_ms_,
|
| - "ms",
|
| + webrtc::test::PrintResult("ramp_up_down_up", GetModifierString(),
|
| + "rampdown", now - state_start_ms_, "ms",
|
| false);
|
| state_start_ms_ = now;
|
| interval_start_ms_ = now;
|
| @@ -378,11 +368,8 @@ void RampUpDownUpTester::EvolveTestState(int bitrate_bps, bool suspended) {
|
| }
|
| case kSecondRampup: {
|
| if (bitrate_bps > kExpectedHighBitrateBps && !suspended) {
|
| - webrtc::test::PrintResult("ramp_up_down_up",
|
| - GetModifierString(),
|
| - "second_rampup",
|
| - now - state_start_ms_,
|
| - "ms",
|
| + webrtc::test::PrintResult("ramp_up_down_up", GetModifierString(),
|
| + "second_rampup", now - state_start_ms_, "ms",
|
| false);
|
| observation_complete_.Set();
|
| }
|
| @@ -396,33 +383,33 @@ class RampUpTest : public test::CallTest {
|
| RampUpTest() {}
|
|
|
| virtual ~RampUpTest() {
|
| - EXPECT_EQ(nullptr, send_stream_);
|
| - EXPECT_TRUE(receive_streams_.empty());
|
| + EXPECT_EQ(nullptr, video_send_stream_);
|
| + EXPECT_TRUE(video_receive_streams_.empty());
|
| }
|
| };
|
|
|
| TEST_F(RampUpTest, SingleStream) {
|
| - RampUpTester test(1, 0, RtpExtension::kTOffset, false, false);
|
| + RampUpTester test(1, 0, 0, RtpExtension::kTOffset, false, false);
|
| RunBaseTest(&test, FakeNetworkPipe::Config());
|
| }
|
|
|
| TEST_F(RampUpTest, Simulcast) {
|
| - RampUpTester test(3, 0, RtpExtension::kTOffset, false, false);
|
| + RampUpTester test(3, 0, 0, RtpExtension::kTOffset, false, false);
|
| RunBaseTest(&test, FakeNetworkPipe::Config());
|
| }
|
|
|
| TEST_F(RampUpTest, SimulcastWithRtx) {
|
| - RampUpTester test(3, 0, RtpExtension::kTOffset, true, false);
|
| + RampUpTester test(3, 0, 0, RtpExtension::kTOffset, true, false);
|
| RunBaseTest(&test, FakeNetworkPipe::Config());
|
| }
|
|
|
| TEST_F(RampUpTest, SimulcastByRedWithRtx) {
|
| - RampUpTester test(3, 0, RtpExtension::kTOffset, true, true);
|
| + RampUpTester test(3, 0, 0, RtpExtension::kTOffset, true, true);
|
| RunBaseTest(&test, FakeNetworkPipe::Config());
|
| }
|
|
|
| TEST_F(RampUpTest, SingleStreamWithHighStartBitrate) {
|
| - RampUpTester test(1, 0.9 * kSingleStreamTargetBps, RtpExtension::kTOffset,
|
| + RampUpTester test(1, 0, 0.9 * kSingleStreamTargetBps, RtpExtension::kTOffset,
|
| false, false);
|
| RunBaseTest(&test, FakeNetworkPipe::Config());
|
| }
|
| @@ -458,53 +445,57 @@ TEST_F(RampUpTest, UpDownUpThreeStreamsByRedRtx) {
|
| }
|
|
|
| TEST_F(RampUpTest, AbsSendTimeSingleStream) {
|
| - RampUpTester test(1, 0, RtpExtension::kAbsSendTime, false, false);
|
| + RampUpTester test(1, 0, 0, RtpExtension::kAbsSendTime, false, false);
|
| RunBaseTest(&test, FakeNetworkPipe::Config());
|
| }
|
|
|
| TEST_F(RampUpTest, AbsSendTimeSimulcast) {
|
| - RampUpTester test(3, 0, RtpExtension::kAbsSendTime, false, false);
|
| + RampUpTester test(3, 0, 0, RtpExtension::kAbsSendTime, false, false);
|
| RunBaseTest(&test, FakeNetworkPipe::Config());
|
| }
|
|
|
| TEST_F(RampUpTest, AbsSendTimeSimulcastWithRtx) {
|
| - RampUpTester test(3, 0, RtpExtension::kAbsSendTime, true, false);
|
| + RampUpTester test(3, 0, 0, RtpExtension::kAbsSendTime, true, false);
|
| RunBaseTest(&test, FakeNetworkPipe::Config());
|
| }
|
|
|
| TEST_F(RampUpTest, AbsSendTimeSimulcastByRedWithRtx) {
|
| - RampUpTester test(3, 0, RtpExtension::kAbsSendTime, true, true);
|
| + RampUpTester test(3, 0, 0, RtpExtension::kAbsSendTime, true, true);
|
| RunBaseTest(&test, FakeNetworkPipe::Config());
|
| }
|
|
|
| TEST_F(RampUpTest, AbsSendTimeSingleStreamWithHighStartBitrate) {
|
| - RampUpTester test(1, 0.9 * kSingleStreamTargetBps, RtpExtension::kAbsSendTime,
|
| - false, false);
|
| + RampUpTester test(1, 0, 0.9 * kSingleStreamTargetBps,
|
| + RtpExtension::kAbsSendTime, false, false);
|
| RunBaseTest(&test, FakeNetworkPipe::Config());
|
| }
|
|
|
| TEST_F(RampUpTest, TransportSequenceNumberSingleStream) {
|
| - RampUpTester test(1, 0, RtpExtension::kTransportSequenceNumber, false, false);
|
| + RampUpTester test(1, 0, 0, RtpExtension::kTransportSequenceNumber, false,
|
| + false);
|
| RunBaseTest(&test, FakeNetworkPipe::Config());
|
| }
|
|
|
| TEST_F(RampUpTest, TransportSequenceNumberSimulcast) {
|
| - RampUpTester test(3, 0, RtpExtension::kTransportSequenceNumber, false, false);
|
| + RampUpTester test(3, 0, 0, RtpExtension::kTransportSequenceNumber, false,
|
| + false);
|
| RunBaseTest(&test, FakeNetworkPipe::Config());
|
| }
|
|
|
| TEST_F(RampUpTest, TransportSequenceNumberSimulcastWithRtx) {
|
| - RampUpTester test(3, 0, RtpExtension::kTransportSequenceNumber, true, false);
|
| + RampUpTester test(3, 0, 0, RtpExtension::kTransportSequenceNumber, true,
|
| + false);
|
| RunBaseTest(&test, FakeNetworkPipe::Config());
|
| }
|
|
|
| TEST_F(RampUpTest, TransportSequenceNumberSimulcastByRedWithRtx) {
|
| - RampUpTester test(3, 0, RtpExtension::kTransportSequenceNumber, true, true);
|
| + RampUpTester test(3, 0, 0, RtpExtension::kTransportSequenceNumber, true,
|
| + true);
|
| RunBaseTest(&test, FakeNetworkPipe::Config());
|
| }
|
|
|
| TEST_F(RampUpTest, TransportSequenceNumberSingleStreamWithHighStartBitrate) {
|
| - RampUpTester test(1, 0.9 * kSingleStreamTargetBps,
|
| + RampUpTester test(1, 0, 0.9 * kSingleStreamTargetBps,
|
| RtpExtension::kTransportSequenceNumber, false, false);
|
| RunBaseTest(&test, FakeNetworkPipe::Config());
|
| }
|
|
|