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

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: . 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
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..6c28b45cd00a63fe9d97eb43b4685baabe0ebdd1 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,7 +126,7 @@ class VideoRtcpAndSyncObserver : public SyncRtcpObserver, public VideoRenderer {
int voe_channel,
VoEVideoSync* voe_sync,
SyncRtcpObserver* audio_observer)
- : SyncRtcpObserver(FakeNetworkPipe::Config()),
+ : SyncRtcpObserver(),
pbos-webrtc 2015/10/27 14:06:29 Remove from ctor list
stefan-webrtc 2015/10/27 14:33:16 Done.
clock_(clock),
voe_channel_(voe_channel),
voe_sync_(voe_sync),
@@ -182,10 +181,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 +231,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 +241,41 @@ 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);
pbos-webrtc 2015/10/27 14:06:29 consider adding this to ctor if possible in a foll
stefan-webrtc 2015/10/27 14:33:16 TODO for now.
+ test::PacketTransport audio_receive_transport(
+ nullptr, &audio_observer, test::PacketTransport::kReceiver, net_config);
+ audio_receive_transport.SetReceiver(&voe_packet_receiver);
+ audio_observer.SetTransports(&audio_send_transport, &audio_receive_transport);
+
+ 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());
+
+ observer.SetTransports(&sync_send_transport, &sync_receive_transport);
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 +322,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 +361,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 +375,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 +416,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,6 +455,7 @@ void CallPerfTest::TestCaptureNtpTime(const FakeNetworkPipe::Config& net_config,
"within bounds.";
}
+ rtc::CriticalSection crit_;
Clock* clock_;
pbos-webrtc 2015/10/27 14:06:29 const
int threshold_ms_;
pbos-webrtc 2015/10/27 14:06:29 thread annotate what you need
stefan-webrtc 2015/10/27 14:33:16 Done.
int start_time_ms_;
@@ -450,9 +466,9 @@ void CallPerfTest::TestCaptureNtpTime(const FakeNetworkPipe::Config& net_config,
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);
+ } test(threshold_ms, start_time_ms, run_time_ms);
- RunBaseTest(&test);
+ RunBaseTest(&test, net_config);
}
TEST_F(CallPerfTest, CaptureNtpTimeWithNetworkDelay) {
@@ -508,7 +524,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) {
@@ -526,28 +542,18 @@ void CallPerfTest::TestMinTransmitBitrate(bool pad_to_min_bitrate) {
static const int kMinTransmitBitrateBps = 150000;
static const int kMinAcceptableTransmitBitrate = 130;
static const int kMaxAcceptableTransmitBitrate = 170;
- static const int kNumBitrateObservationsInRange = 100;
+ static const int kNumBitrateObservationsInRange = 10;
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 {
+ Action OnSendRtcp(const uint8_t* packet, size_t length) override {
pbos-webrtc 2015/10/27 14:06:29 Make a TODO to make this into something that runs
VideoSendStream::Stats stats = send_stream_->GetStats();
if (stats.substreams.size() > 0) {
RTC_DCHECK_EQ(1u, stats.substreams.size());
@@ -581,8 +587,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 +612,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 +712,7 @@ TEST_F(CallPerfTest, KeepsHighBitrateWhenReconfiguringSender) {
VideoEncoderConfig encoder_config_;
} test;
- RunBaseTest(&test);
+ RunBaseTest(&test, FakeNetworkPipe::Config());
}
} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698