| Index: webrtc/video/rampup_tests.cc
|
| diff --git a/webrtc/video/rampup_tests.cc b/webrtc/video/rampup_tests.cc
|
| deleted file mode 100644
|
| index bc5daf522599ed1ee32bb5d6fa306b26c306e9d2..0000000000000000000000000000000000000000
|
| --- a/webrtc/video/rampup_tests.cc
|
| +++ /dev/null
|
| @@ -1,511 +0,0 @@
|
| -/*
|
| - * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license
|
| - * that can be found in the LICENSE file in the root of the source
|
| - * tree. An additional intellectual property rights grant can be found
|
| - * in the file PATENTS. All contributing project authors may
|
| - * be found in the AUTHORS file in the root of the source tree.
|
| - */
|
| -
|
| -#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> ssrcs;
|
| - for (size_t i = 0; i != num_streams; ++i)
|
| - ssrcs.push_back(static_cast<uint32_t>(ssrc_offset + i));
|
| - return ssrcs;
|
| -}
|
| -} // namespace
|
| -
|
| -RampUpTester::RampUpTester(size_t num_streams,
|
| - unsigned int start_bitrate_bps,
|
| - const std::string& extension_type,
|
| - bool rtx,
|
| - bool red)
|
| - : EndToEndTest(test::CallTest::kLongTimeoutMs),
|
| - event_(false, false),
|
| - clock_(Clock::GetRealTimeClock()),
|
| - num_streams_(num_streams),
|
| - rtx_(rtx),
|
| - red_(red),
|
| - send_stream_(nullptr),
|
| - start_bitrate_bps_(start_bitrate_bps),
|
| - start_bitrate_verified_(false),
|
| - expected_bitrate_bps_(0),
|
| - test_start_ms_(-1),
|
| - ramp_up_finished_ms_(-1),
|
| - extension_type_(extension_type),
|
| - ssrcs_(GenerateSsrcs(num_streams, 100)),
|
| - rtx_ssrcs_(GenerateSsrcs(num_streams, 200)),
|
| - 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];
|
| - }
|
| -}
|
| -
|
| -RampUpTester::~RampUpTester() {
|
| - event_.Set();
|
| -}
|
| -
|
| -Call::Config RampUpTester::GetSenderCallConfig() {
|
| - Call::Config call_config;
|
| - if (start_bitrate_bps_ != 0) {
|
| - call_config.bitrate_config.start_bitrate_bps = start_bitrate_bps_;
|
| - }
|
| - call_config.bitrate_config.min_bitrate_bps = 10000;
|
| - return call_config;
|
| -}
|
| -
|
| -void RampUpTester::OnStreamsCreated(
|
| - VideoSendStream* send_stream,
|
| - const std::vector<VideoReceiveStream*>& receive_streams) {
|
| - send_stream_ = send_stream;
|
| -}
|
| -
|
| -void RampUpTester::OnTransportsCreated(
|
| - test::PacketTransport* send_transport,
|
| - test::PacketTransport* receive_transport) {
|
| - send_transport_ = send_transport;
|
| - send_transport_->SetConfig(forward_transport_config_);
|
| -}
|
| -
|
| -size_t RampUpTester::GetNumStreams() const {
|
| - return num_streams_;
|
| -}
|
| -
|
| -void RampUpTester::ModifyConfigs(
|
| - VideoSendStream::Config* send_config,
|
| - std::vector<VideoReceiveStream::Config>* receive_configs,
|
| - VideoEncoderConfig* encoder_config) {
|
| - send_config->suspend_below_min_bitrate = true;
|
| -
|
| - if (num_streams_ == 1) {
|
| - encoder_config->streams[0].target_bitrate_bps =
|
| - encoder_config->streams[0].max_bitrate_bps = 2000000;
|
| - // For single stream rampup until 1mbps
|
| - expected_bitrate_bps_ = kSingleStreamTargetBps;
|
| - } else {
|
| - // For multi stream rampup until all streams are being sent. That means
|
| - // enough birate to send all the target streams plus the min bitrate of
|
| - // the last one.
|
| - expected_bitrate_bps_ = encoder_config->streams.back().min_bitrate_bps;
|
| - for (size_t i = 0; i < encoder_config->streams.size() - 1; ++i) {
|
| - expected_bitrate_bps_ += encoder_config->streams[i].target_bitrate_bps;
|
| - }
|
| - }
|
| -
|
| - send_config->rtp.extensions.clear();
|
| -
|
| - bool remb;
|
| - bool transport_cc;
|
| - if (extension_type_ == RtpExtension::kAbsSendTime) {
|
| - remb = true;
|
| - transport_cc = false;
|
| - send_config->rtp.extensions.push_back(
|
| - RtpExtension(extension_type_.c_str(), kAbsSendTimeExtensionId));
|
| - } else if (extension_type_ == RtpExtension::kTransportSequenceNumber) {
|
| - remb = false;
|
| - transport_cc = true;
|
| - send_config->rtp.extensions.push_back(RtpExtension(
|
| - extension_type_.c_str(), kTransportSequenceNumberExtensionId));
|
| - } else {
|
| - remb = true;
|
| - transport_cc = false;
|
| - send_config->rtp.extensions.push_back(RtpExtension(
|
| - extension_type_.c_str(), kTransmissionTimeOffsetExtensionId));
|
| - }
|
| -
|
| - send_config->rtp.nack.rtp_history_ms = test::CallTest::kNackRtpHistoryMs;
|
| - send_config->rtp.ssrcs = ssrcs_;
|
| - if (rtx_) {
|
| - send_config->rtp.rtx.payload_type = test::CallTest::kSendRtxPayloadType;
|
| - send_config->rtp.rtx.ssrcs = rtx_ssrcs_;
|
| - }
|
| - if (red_) {
|
| - send_config->rtp.fec.ulpfec_payload_type =
|
| - test::CallTest::kUlpfecPayloadType;
|
| - send_config->rtp.fec.red_payload_type = test::CallTest::kRedPayloadType;
|
| - }
|
| -
|
| - size_t i = 0;
|
| - for (VideoReceiveStream::Config& recv_config : *receive_configs) {
|
| - recv_config.rtp.remb = remb;
|
| - 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.nack.rtp_history_ms = send_config->rtp.nack.rtp_history_ms;
|
| -
|
| - if (red_) {
|
| - recv_config.rtp.fec.red_payload_type =
|
| - send_config->rtp.fec.red_payload_type;
|
| - recv_config.rtp.fec.ulpfec_payload_type =
|
| - send_config->rtp.fec.ulpfec_payload_type;
|
| - }
|
| -
|
| - if (rtx_) {
|
| - recv_config.rtp.rtx[send_config->encoder_settings.payload_type].ssrc =
|
| - rtx_ssrcs_[i];
|
| - recv_config.rtp.rtx[send_config->encoder_settings.payload_type]
|
| - .payload_type = send_config->rtp.rtx.payload_type;
|
| - }
|
| - ++i;
|
| - }
|
| -}
|
| -
|
| -void RampUpTester::OnCallsCreated(Call* sender_call, Call* receiver_call) {
|
| - sender_call_ = sender_call;
|
| -}
|
| -
|
| -bool RampUpTester::BitrateStatsPollingThread(void* obj) {
|
| - return static_cast<RampUpTester*>(obj)->PollStats();
|
| -}
|
| -
|
| -bool RampUpTester::PollStats() {
|
| - if (sender_call_) {
|
| - Call::Stats stats = sender_call_->GetStats();
|
| -
|
| - RTC_DCHECK_GT(expected_bitrate_bps_, 0);
|
| - if (!start_bitrate_verified_ && start_bitrate_bps_ != 0) {
|
| - // For tests with an explicitly set start bitrate, verify the first
|
| - // bitrate estimate is close to the start bitrate and lower than the
|
| - // test target bitrate. This is to verify a call respects the configured
|
| - // start bitrate, but due to the BWE implementation we can't guarantee the
|
| - // first estimate really is as high as the start bitrate.
|
| - EXPECT_GT(stats.send_bandwidth_bps, 0.9 * start_bitrate_bps_);
|
| - start_bitrate_verified_ = true;
|
| - }
|
| - if (stats.send_bandwidth_bps >= expected_bitrate_bps_) {
|
| - ramp_up_finished_ms_ = clock_->TimeInMilliseconds();
|
| - observation_complete_.Set();
|
| - }
|
| - }
|
| -
|
| - return !event_.Wait(kPollIntervalMs);
|
| -}
|
| -
|
| -void RampUpTester::ReportResult(const std::string& measurement,
|
| - size_t value,
|
| - const std::string& units) const {
|
| - webrtc::test::PrintResult(
|
| - measurement, "",
|
| - ::testing::UnitTest::GetInstance()->current_test_info()->name(),
|
| - value, units, false);
|
| -}
|
| -
|
| -void RampUpTester::AccumulateStats(const VideoSendStream::StreamStats& stream,
|
| - size_t* total_packets_sent,
|
| - size_t* total_sent,
|
| - size_t* padding_sent,
|
| - size_t* media_sent) const {
|
| - *total_packets_sent += stream.rtp_stats.transmitted.packets +
|
| - stream.rtp_stats.retransmitted.packets +
|
| - stream.rtp_stats.fec.packets;
|
| - *total_sent += stream.rtp_stats.transmitted.TotalBytes() +
|
| - stream.rtp_stats.retransmitted.TotalBytes() +
|
| - stream.rtp_stats.fec.TotalBytes();
|
| - *padding_sent += stream.rtp_stats.transmitted.padding_bytes +
|
| - stream.rtp_stats.retransmitted.padding_bytes +
|
| - stream.rtp_stats.fec.padding_bytes;
|
| - *media_sent += stream.rtp_stats.MediaPayloadBytes();
|
| -}
|
| -
|
| -void RampUpTester::TriggerTestDone() {
|
| - RTC_DCHECK_GE(test_start_ms_, 0);
|
| -
|
| - VideoSendStream::Stats send_stats = send_stream_->GetStats();
|
| -
|
| - size_t total_packets_sent = 0;
|
| - size_t total_sent = 0;
|
| - size_t padding_sent = 0;
|
| - size_t media_sent = 0;
|
| - for (uint32_t ssrc : ssrcs_) {
|
| - AccumulateStats(send_stats.substreams[ssrc], &total_packets_sent,
|
| - &total_sent, &padding_sent, &media_sent);
|
| - }
|
| -
|
| - size_t rtx_total_packets_sent = 0;
|
| - 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_) {
|
| - AccumulateStats(send_stats.substreams[rtx_ssrc], &rtx_total_packets_sent,
|
| - &rtx_total_sent, &rtx_padding_sent, &rtx_media_sent);
|
| - }
|
| -
|
| - ReportResult("ramp-up-total-packets-sent", total_packets_sent, "packets");
|
| - ReportResult("ramp-up-total-sent", total_sent, "bytes");
|
| - ReportResult("ramp-up-media-sent", media_sent, "bytes");
|
| - ReportResult("ramp-up-padding-sent", padding_sent, "bytes");
|
| - ReportResult("ramp-up-rtx-total-packets-sent", rtx_total_packets_sent,
|
| - "packets");
|
| - ReportResult("ramp-up-rtx-total-sent", rtx_total_sent, "bytes");
|
| - ReportResult("ramp-up-rtx-media-sent", rtx_media_sent, "bytes");
|
| - ReportResult("ramp-up-rtx-padding-sent", rtx_padding_sent, "bytes");
|
| - if (ramp_up_finished_ms_ >= 0) {
|
| - ReportResult("ramp-up-time", ramp_up_finished_ms_ - test_start_ms_,
|
| - "milliseconds");
|
| - }
|
| -}
|
| -
|
| -void RampUpTester::PerformTest() {
|
| - test_start_ms_ = clock_->TimeInMilliseconds();
|
| - poller_thread_.Start();
|
| - EXPECT_TRUE(Wait()) << "Timed out while waiting for ramp-up to complete.";
|
| - TriggerTestDone();
|
| - poller_thread_.Stop();
|
| -}
|
| -
|
| -RampUpDownUpTester::RampUpDownUpTester(size_t num_streams,
|
| - unsigned int start_bitrate_bps,
|
| - const std::string& extension_type,
|
| - bool rtx,
|
| - bool red)
|
| - : RampUpTester(num_streams, 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;
|
| -}
|
| -
|
| -RampUpDownUpTester::~RampUpDownUpTester() {}
|
| -
|
| -bool RampUpDownUpTester::PollStats() {
|
| - if (send_stream_) {
|
| - webrtc::VideoSendStream::Stats stats = send_stream_->GetStats();
|
| - int transmit_bitrate_bps = 0;
|
| - for (auto it : stats.substreams) {
|
| - transmit_bitrate_bps += it.second.total_bitrate_bps;
|
| - }
|
| -
|
| - EvolveTestState(transmit_bitrate_bps, stats.suspended);
|
| - }
|
| -
|
| - return !event_.Wait(kPollIntervalMs);
|
| -}
|
| -
|
| -Call::Config RampUpDownUpTester::GetReceiverCallConfig() {
|
| - Call::Config config;
|
| - config.bitrate_config.min_bitrate_bps = 10000;
|
| - return config;
|
| -}
|
| -
|
| -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 += "_";
|
| - str += (rtx_ ? "" : "no");
|
| - str += "rtx";
|
| - return str;
|
| -}
|
| -
|
| -void RampUpDownUpTester::EvolveTestState(int bitrate_bps, bool suspended) {
|
| - int64_t now = clock_->TimeInMilliseconds();
|
| - switch (test_state_) {
|
| - case kFirstRampup: {
|
| - EXPECT_FALSE(suspended);
|
| - if (bitrate_bps > kExpectedHighBitrateBps) {
|
| - // The first ramp-up has reached the target bitrate. Change the
|
| - // channel limit, and move to the next test state.
|
| - forward_transport_config_.link_capacity_kbps =
|
| - 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",
|
| - false);
|
| - state_start_ms_ = now;
|
| - interval_start_ms_ = now;
|
| - sent_bytes_ = 0;
|
| - }
|
| - break;
|
| - }
|
| - case kLowRate: {
|
| - if (bitrate_bps < kExpectedLowBitrateBps && suspended) {
|
| - // The ramp-down was successful. Change the channel limit back to a
|
| - // high value, and move to the next test state.
|
| - forward_transport_config_.link_capacity_kbps =
|
| - 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",
|
| - false);
|
| - state_start_ms_ = now;
|
| - interval_start_ms_ = now;
|
| - sent_bytes_ = 0;
|
| - }
|
| - break;
|
| - }
|
| - case kSecondRampup: {
|
| - if (bitrate_bps > kExpectedHighBitrateBps && !suspended) {
|
| - webrtc::test::PrintResult("ramp_up_down_up",
|
| - GetModifierString(),
|
| - "second_rampup",
|
| - now - state_start_ms_,
|
| - "ms",
|
| - false);
|
| - observation_complete_.Set();
|
| - }
|
| - break;
|
| - }
|
| - }
|
| -}
|
| -
|
| -class RampUpTest : public test::CallTest {
|
| - public:
|
| - RampUpTest() {}
|
| -
|
| - virtual ~RampUpTest() {
|
| - EXPECT_EQ(nullptr, send_stream_);
|
| - EXPECT_TRUE(receive_streams_.empty());
|
| - }
|
| -};
|
| -
|
| -TEST_F(RampUpTest, SingleStream) {
|
| - RampUpTester test(1, 0, RtpExtension::kTOffset, false, false);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, Simulcast) {
|
| - RampUpTester test(3, 0, RtpExtension::kTOffset, false, false);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, SimulcastWithRtx) {
|
| - RampUpTester test(3, 0, RtpExtension::kTOffset, true, false);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, SimulcastByRedWithRtx) {
|
| - RampUpTester test(3, 0, RtpExtension::kTOffset, true, true);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, SingleStreamWithHighStartBitrate) {
|
| - RampUpTester test(1, 0.9 * kSingleStreamTargetBps, RtpExtension::kTOffset,
|
| - false, false);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, UpDownUpOneStream) {
|
| - RampUpDownUpTester test(1, 60000, RtpExtension::kAbsSendTime, false, false);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, UpDownUpThreeStreams) {
|
| - RampUpDownUpTester test(3, 60000, RtpExtension::kAbsSendTime, false, false);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, UpDownUpOneStreamRtx) {
|
| - RampUpDownUpTester test(1, 60000, RtpExtension::kAbsSendTime, true, false);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, UpDownUpThreeStreamsRtx) {
|
| - RampUpDownUpTester test(3, 60000, RtpExtension::kAbsSendTime, true, false);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, UpDownUpOneStreamByRedRtx) {
|
| - RampUpDownUpTester test(1, 60000, RtpExtension::kAbsSendTime, true, true);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, UpDownUpThreeStreamsByRedRtx) {
|
| - RampUpDownUpTester test(3, 60000, RtpExtension::kAbsSendTime, true, true);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, AbsSendTimeSingleStream) {
|
| - RampUpTester test(1, 0, RtpExtension::kAbsSendTime, false, false);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, AbsSendTimeSimulcast) {
|
| - RampUpTester test(3, 0, RtpExtension::kAbsSendTime, false, false);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, AbsSendTimeSimulcastWithRtx) {
|
| - RampUpTester test(3, 0, RtpExtension::kAbsSendTime, true, false);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, AbsSendTimeSimulcastByRedWithRtx) {
|
| - RampUpTester test(3, 0, RtpExtension::kAbsSendTime, true, true);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, AbsSendTimeSingleStreamWithHighStartBitrate) {
|
| - RampUpTester test(1, 0.9 * kSingleStreamTargetBps, RtpExtension::kAbsSendTime,
|
| - false, false);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, TransportSequenceNumberSingleStream) {
|
| - RampUpTester test(1, 0, RtpExtension::kTransportSequenceNumber, false, false);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, TransportSequenceNumberSimulcast) {
|
| - RampUpTester test(3, 0, RtpExtension::kTransportSequenceNumber, false, false);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, TransportSequenceNumberSimulcastWithRtx) {
|
| - RampUpTester test(3, 0, RtpExtension::kTransportSequenceNumber, true, false);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, TransportSequenceNumberSimulcastByRedWithRtx) {
|
| - RampUpTester test(3, 0, RtpExtension::kTransportSequenceNumber, true, true);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -
|
| -TEST_F(RampUpTest, TransportSequenceNumberSingleStreamWithHighStartBitrate) {
|
| - RampUpTester test(1, 0.9 * kSingleStreamTargetBps,
|
| - RtpExtension::kTransportSequenceNumber, false, false);
|
| - RunBaseTest(&test, FakeNetworkPipe::Config());
|
| -}
|
| -} // namespace webrtc
|
|
|