Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1514)

Unified Diff: webrtc/call/call_perf_tests.cc

Issue 1419193002: Call OnSentPacket for all packets sent in the test framework. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Comments addresded. Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/call/call.cc ('k') | webrtc/modules/rtp_rtcp/source/rtp_sender.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/call/call_perf_tests.cc
diff --git a/webrtc/call/call_perf_tests.cc b/webrtc/call/call_perf_tests.cc
index cab39144503e36a098fe7610bbbf4fba9a831c13..d9edac802eb57bbc3e020ca6f863381d8cf8d62d 100644
--- a/webrtc/call/call_perf_tests.cc
+++ b/webrtc/call/call_perf_tests.cc
@@ -58,8 +58,7 @@ class CallPerfTest : public test::CallTest {
class SyncRtcpObserver : public test::RtpRtcpObserver {
public:
- explicit SyncRtcpObserver(const FakeNetworkPipe::Config& config)
- : test::RtpRtcpObserver(CallPerfTest::kLongTimeoutMs, config) {}
+ SyncRtcpObserver() : test::RtpRtcpObserver(CallPerfTest::kLongTimeoutMs) {}
Action OnSendRtcp(const uint8_t* packet, size_t length) override {
RTCPUtility::RTCPParserV2 parser(packet, length, true);
@@ -127,8 +126,7 @@ class VideoRtcpAndSyncObserver : public SyncRtcpObserver, public VideoRenderer {
int voe_channel,
VoEVideoSync* voe_sync,
SyncRtcpObserver* audio_observer)
- : SyncRtcpObserver(FakeNetworkPipe::Config()),
- clock_(clock),
+ : clock_(clock),
voe_channel_(voe_channel),
voe_sync_(voe_sync),
audio_observer_(audio_observer),
@@ -182,10 +180,10 @@ class VideoRtcpAndSyncObserver : public SyncRtcpObserver, public VideoRenderer {
private:
Clock* const clock_;
- int voe_channel_;
- VoEVideoSync* voe_sync_;
- SyncRtcpObserver* audio_observer_;
- int64_t creation_time_ms_;
+ const int voe_channel_;
+ VoEVideoSync* const voe_sync_;
+ SyncRtcpObserver* const audio_observer_;
+ const int64_t creation_time_ms_;
int64_t first_time_in_sync_;
};
@@ -232,14 +230,7 @@ void CallPerfTest::TestAudioVideoSync(bool fec, bool create_audio_first) {
EXPECT_EQ(0, voe_base->Init(&fake_audio_device, nullptr));
int channel = voe_base->CreateChannel();
- FakeNetworkPipe::Config net_config;
- net_config.queue_delay_ms = 500;
- net_config.loss_percent = 5;
- SyncRtcpObserver audio_observer(net_config);
- VideoRtcpAndSyncObserver observer(Clock::GetRealTimeClock(),
- channel,
- voe_sync,
- &audio_observer);
+ SyncRtcpObserver audio_observer;
Call::Config receiver_config;
receiver_config.voice_engine = voice_engine;
@@ -249,19 +240,38 @@ void CallPerfTest::TestAudioVideoSync(bool fec, bool create_audio_first) {
EXPECT_EQ(0, voe_codec->SetSendCodec(channel, isac));
AudioPacketReceiver voe_packet_receiver(channel, voe_network);
- audio_observer.SetReceivers(&voe_packet_receiver, &voe_packet_receiver);
- internal::TransportAdapter transport_adapter(audio_observer.SendTransport());
+ FakeNetworkPipe::Config net_config;
+ net_config.queue_delay_ms = 500;
+ net_config.loss_percent = 5;
+ test::PacketTransport audio_send_transport(
+ nullptr, &audio_observer, test::PacketTransport::kSender, net_config);
+ audio_send_transport.SetReceiver(&voe_packet_receiver);
+ test::PacketTransport audio_receive_transport(
+ nullptr, &audio_observer, test::PacketTransport::kReceiver, net_config);
+ audio_receive_transport.SetReceiver(&voe_packet_receiver);
+
+ internal::TransportAdapter transport_adapter(&audio_send_transport);
transport_adapter.Enable();
EXPECT_EQ(0,
voe_network->RegisterExternalTransport(channel, transport_adapter));
- observer.SetReceivers(receiver_call_->Receiver(), sender_call_->Receiver());
+ VideoRtcpAndSyncObserver observer(Clock::GetRealTimeClock(), channel,
+ voe_sync, &audio_observer);
+
+ test::PacketTransport sync_send_transport(sender_call_.get(), &observer,
+ test::PacketTransport::kSender,
+ FakeNetworkPipe::Config());
+ sync_send_transport.SetReceiver(receiver_call_->Receiver());
+ test::PacketTransport sync_receive_transport(receiver_call_.get(), &observer,
+ test::PacketTransport::kReceiver,
+ FakeNetworkPipe::Config());
+ sync_receive_transport.SetReceiver(sender_call_->Receiver());
test::FakeDecoder fake_decoder;
- CreateSendConfig(1, observer.SendTransport());
- CreateMatchingReceiveConfigs(observer.ReceiveTransport());
+ CreateSendConfig(1, &sync_send_transport);
+ CreateMatchingReceiveConfigs(&sync_receive_transport);
send_config_.rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
if (fec) {
@@ -308,8 +318,10 @@ void CallPerfTest::TestAudioVideoSync(bool fec, bool create_audio_first) {
fake_audio_device.Stop();
Stop();
- observer.StopSending();
- audio_observer.StopSending();
+ sync_send_transport.StopSending();
+ sync_receive_transport.StopSending();
+ audio_send_transport.StopSending();
+ audio_receive_transport.StopSending();
voe_base->DeleteChannel(channel);
voe_base->Release();
@@ -345,11 +357,8 @@ void CallPerfTest::TestCaptureNtpTime(const FakeNetworkPipe::Config& net_config,
class CaptureNtpTimeObserver : public test::EndToEndTest,
public VideoRenderer {
public:
- CaptureNtpTimeObserver(const FakeNetworkPipe::Config& config,
- int threshold_ms,
- int start_time_ms,
- int run_time_ms)
- : EndToEndTest(kLongTimeoutMs, config),
+ CaptureNtpTimeObserver(int threshold_ms, int start_time_ms, int run_time_ms)
+ : EndToEndTest(kLongTimeoutMs),
clock_(Clock::GetRealTimeClock()),
threshold_ms_(threshold_ms),
start_time_ms_(start_time_ms),
@@ -362,6 +371,7 @@ void CallPerfTest::TestCaptureNtpTime(const FakeNetworkPipe::Config& net_config,
private:
void RenderFrame(const VideoFrame& video_frame,
int time_to_render_ms) override {
+ rtc::CritScope lock(&crit_);
if (video_frame.ntp_time_ms() <= 0) {
// Haven't got enough RTCP SR in order to calculate the capture ntp
// time.
@@ -402,6 +412,7 @@ void CallPerfTest::TestCaptureNtpTime(const FakeNetworkPipe::Config& net_config,
bool IsTextureSupported() const override { return false; }
virtual Action OnSendRtp(const uint8_t* packet, size_t length) {
+ rtc::CritScope lock(&crit_);
RTPHeader header;
EXPECT_TRUE(parser_->Parse(packet, length, &header));
@@ -440,7 +451,8 @@ void CallPerfTest::TestCaptureNtpTime(const FakeNetworkPipe::Config& net_config,
"within bounds.";
}
- Clock* clock_;
+ rtc::CriticalSection crit_;
+ Clock* const clock_;
int threshold_ms_;
int start_time_ms_;
int run_time_ms_;
@@ -449,10 +461,10 @@ void CallPerfTest::TestCaptureNtpTime(const FakeNetworkPipe::Config& net_config,
bool rtp_start_timestamp_set_;
uint32_t rtp_start_timestamp_;
typedef std::map<uint32_t, uint32_t> FrameCaptureTimeList;
- FrameCaptureTimeList capture_time_list_;
- } test(net_config, threshold_ms, start_time_ms, run_time_ms);
+ FrameCaptureTimeList capture_time_list_ GUARDED_BY(&crit_);
+ } test(threshold_ms, start_time_ms, run_time_ms);
- RunBaseTest(&test);
+ RunBaseTest(&test, net_config);
}
TEST_F(CallPerfTest, CaptureNtpTimeWithNetworkDelay) {
@@ -508,7 +520,7 @@ void CallPerfTest::TestCpuOveruse(LoadObserver::Load tested_load,
test::DelayedEncoder encoder_;
} test(tested_load, encode_delay_ms);
- RunBaseTest(&test);
+ RunBaseTest(&test, FakeNetworkPipe::Config());
}
TEST_F(CallPerfTest, ReceivesCpuUnderuse) {
@@ -528,26 +540,17 @@ void CallPerfTest::TestMinTransmitBitrate(bool pad_to_min_bitrate) {
static const int kMaxAcceptableTransmitBitrate = 170;
static const int kNumBitrateObservationsInRange = 100;
static const int kAcceptableBitrateErrorMargin = 15; // +- 7
- class BitrateObserver : public test::EndToEndTest, public PacketReceiver {
+ class BitrateObserver : public test::EndToEndTest {
public:
explicit BitrateObserver(bool using_min_transmit_bitrate)
: EndToEndTest(kLongTimeoutMs),
send_stream_(nullptr),
- send_transport_receiver_(nullptr),
pad_to_min_bitrate_(using_min_transmit_bitrate),
num_bitrate_observations_in_range_(0) {}
private:
- void SetReceivers(PacketReceiver* send_transport_receiver,
- PacketReceiver* receive_transport_receiver) override {
- send_transport_receiver_ = send_transport_receiver;
- test::RtpRtcpObserver::SetReceivers(this, receive_transport_receiver);
- }
-
- DeliveryStatus DeliverPacket(MediaType media_type,
- const uint8_t* packet,
- size_t length,
- const PacketTime& packet_time) override {
+ // TODO(holmer): Run this with a timer instead of once per packet.
+ Action OnSendRtp(const uint8_t* packet, size_t length) override {
VideoSendStream::Stats stats = send_stream_->GetStats();
if (stats.substreams.size() > 0) {
RTC_DCHECK_EQ(1u, stats.substreams.size());
@@ -581,8 +584,7 @@ void CallPerfTest::TestMinTransmitBitrate(bool pad_to_min_bitrate) {
observation_complete_->Set();
}
}
- return send_transport_receiver_->DeliverPacket(media_type, packet, length,
- packet_time);
+ return SEND_PACKET;
}
void OnStreamsCreated(
@@ -607,13 +609,12 @@ void CallPerfTest::TestMinTransmitBitrate(bool pad_to_min_bitrate) {
}
VideoSendStream* send_stream_;
- PacketReceiver* send_transport_receiver_;
const bool pad_to_min_bitrate_;
int num_bitrate_observations_in_range_;
} test(pad_to_min_bitrate);
fake_encoder_.SetMaxBitrate(kMaxEncodeBitrateKbps);
- RunBaseTest(&test);
+ RunBaseTest(&test, FakeNetworkPipe::Config());
}
TEST_F(CallPerfTest, PadsToMinTransmitBitrate) { TestMinTransmitBitrate(true); }
@@ -708,7 +709,7 @@ TEST_F(CallPerfTest, KeepsHighBitrateWhenReconfiguringSender) {
VideoEncoderConfig encoder_config_;
} test;
- RunBaseTest(&test);
+ RunBaseTest(&test, FakeNetworkPipe::Config());
}
} // namespace webrtc
« no previous file with comments | « webrtc/call/call.cc ('k') | webrtc/modules/rtp_rtcp/source/rtp_sender.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698