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

Side by Side Diff: webrtc/call/call_perf_tests.cc

Issue 1689163002: removed five redundant avsync tests to make webrtc_perf_test faster (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: retyped comments Created 4 years, 10 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 #include <algorithm> 10 #include <algorithm>
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 #include "webrtc/voice_engine/include/voe_rtp_rtcp.h" 42 #include "webrtc/voice_engine/include/voe_rtp_rtcp.h"
43 #include "webrtc/voice_engine/include/voe_video_sync.h" 43 #include "webrtc/voice_engine/include/voe_video_sync.h"
44 44
45 using webrtc::test::DriftingClock; 45 using webrtc::test::DriftingClock;
46 using webrtc::test::FakeAudioDevice; 46 using webrtc::test::FakeAudioDevice;
47 47
48 namespace webrtc { 48 namespace webrtc {
49 49
50 class CallPerfTest : public test::CallTest { 50 class CallPerfTest : public test::CallTest {
51 protected: 51 protected:
52 void TestAudioVideoSync(bool fec, 52 enum class FecMode {
53 bool create_audio_first, 53 kOn, kOff
54 };
55 enum class CreateOrder {
56 kAudioFirst, kVideoFirst
57 };
58 void TestAudioVideoSync(FecMode fec,
59 CreateOrder create_first,
54 float video_ntp_speed, 60 float video_ntp_speed,
55 float video_rtp_speed, 61 float video_rtp_speed,
56 float audio_rtp_speed); 62 float audio_rtp_speed);
57 63
58 void TestCpuOveruse(LoadObserver::Load tested_load, int encode_delay_ms); 64 void TestCpuOveruse(LoadObserver::Load tested_load, int encode_delay_ms);
59 65
60 void TestMinTransmitBitrate(bool pad_to_min_bitrate); 66 void TestMinTransmitBitrate(bool pad_to_min_bitrate);
61 67
62 void TestCaptureNtpTime(const FakeNetworkPipe::Config& net_config, 68 void TestCaptureNtpTime(const FakeNetworkPipe::Config& net_config,
63 int threshold_ms, 69 int threshold_ms,
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 195
190 private: 196 private:
191 Clock* const clock_; 197 Clock* const clock_;
192 const int voe_channel_; 198 const int voe_channel_;
193 VoEVideoSync* const voe_sync_; 199 VoEVideoSync* const voe_sync_;
194 SyncRtcpObserver* const audio_observer_; 200 SyncRtcpObserver* const audio_observer_;
195 const int64_t creation_time_ms_; 201 const int64_t creation_time_ms_;
196 int64_t first_time_in_sync_; 202 int64_t first_time_in_sync_;
197 }; 203 };
198 204
199 void CallPerfTest::TestAudioVideoSync(bool fec, 205 void CallPerfTest::TestAudioVideoSync(FecMode fec,
200 bool create_audio_first, 206 CreateOrder create_first,
201 float video_ntp_speed, 207 float video_ntp_speed,
202 float video_rtp_speed, 208 float video_rtp_speed,
203 float audio_rtp_speed) { 209 float audio_rtp_speed) {
204 const char* kSyncGroup = "av_sync"; 210 const char* kSyncGroup = "av_sync";
205 const uint32_t kAudioSendSsrc = 1234; 211 const uint32_t kAudioSendSsrc = 1234;
206 const uint32_t kAudioRecvSsrc = 5678; 212 const uint32_t kAudioRecvSsrc = 5678;
207 class AudioPacketReceiver : public PacketReceiver { 213 class AudioPacketReceiver : public PacketReceiver {
208 public: 214 public:
209 AudioPacketReceiver(int channel, VoENetwork* voe_network) 215 AudioPacketReceiver(int channel, VoENetwork* voe_network)
210 : channel_(channel), 216 : channel_(channel),
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 AudioSendStream::Config audio_send_config(&audio_send_transport); 307 AudioSendStream::Config audio_send_config(&audio_send_transport);
302 audio_send_config.voe_channel_id = send_channel_id; 308 audio_send_config.voe_channel_id = send_channel_id;
303 audio_send_config.rtp.ssrc = kAudioSendSsrc; 309 audio_send_config.rtp.ssrc = kAudioSendSsrc;
304 AudioSendStream* audio_send_stream = 310 AudioSendStream* audio_send_stream =
305 sender_call_->CreateAudioSendStream(audio_send_config); 311 sender_call_->CreateAudioSendStream(audio_send_config);
306 312
307 CodecInst isac = {103, "ISAC", 16000, 480, 1, 32000}; 313 CodecInst isac = {103, "ISAC", 16000, 480, 1, 32000};
308 EXPECT_EQ(0, voe_codec->SetSendCodec(send_channel_id, isac)); 314 EXPECT_EQ(0, voe_codec->SetSendCodec(send_channel_id, isac));
309 315
310 video_send_config_.rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 316 video_send_config_.rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
311 if (fec) { 317 if (fec == FecMode::kOn) {
312 video_send_config_.rtp.fec.red_payload_type = kRedPayloadType; 318 video_send_config_.rtp.fec.red_payload_type = kRedPayloadType;
313 video_send_config_.rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; 319 video_send_config_.rtp.fec.ulpfec_payload_type = kUlpfecPayloadType;
314 video_receive_configs_[0].rtp.fec.red_payload_type = kRedPayloadType; 320 video_receive_configs_[0].rtp.fec.red_payload_type = kRedPayloadType;
315 video_receive_configs_[0].rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; 321 video_receive_configs_[0].rtp.fec.ulpfec_payload_type = kUlpfecPayloadType;
316 } 322 }
317 video_receive_configs_[0].rtp.nack.rtp_history_ms = 1000; 323 video_receive_configs_[0].rtp.nack.rtp_history_ms = 1000;
318 video_receive_configs_[0].renderer = &observer; 324 video_receive_configs_[0].renderer = &observer;
319 video_receive_configs_[0].sync_group = kSyncGroup; 325 video_receive_configs_[0].sync_group = kSyncGroup;
320 326
321 AudioReceiveStream::Config audio_recv_config; 327 AudioReceiveStream::Config audio_recv_config;
322 audio_recv_config.rtp.remote_ssrc = kAudioSendSsrc; 328 audio_recv_config.rtp.remote_ssrc = kAudioSendSsrc;
323 audio_recv_config.rtp.local_ssrc = kAudioRecvSsrc; 329 audio_recv_config.rtp.local_ssrc = kAudioRecvSsrc;
324 audio_recv_config.voe_channel_id = recv_channel_id; 330 audio_recv_config.voe_channel_id = recv_channel_id;
325 audio_recv_config.sync_group = kSyncGroup; 331 audio_recv_config.sync_group = kSyncGroup;
326 332
327 AudioReceiveStream* audio_receive_stream; 333 AudioReceiveStream* audio_receive_stream;
328 334
329 if (create_audio_first) { 335 if (create_first == CreateOrder::kAudioFirst) {
330 audio_receive_stream = 336 audio_receive_stream =
331 receiver_call_->CreateAudioReceiveStream(audio_recv_config); 337 receiver_call_->CreateAudioReceiveStream(audio_recv_config);
332 CreateVideoStreams(); 338 CreateVideoStreams();
333 } else { 339 } else {
334 CreateVideoStreams(); 340 CreateVideoStreams();
335 audio_receive_stream = 341 audio_receive_stream =
336 receiver_call_->CreateAudioReceiveStream(audio_recv_config); 342 receiver_call_->CreateAudioReceiveStream(audio_recv_config);
337 } 343 }
338 344
339 DriftingClock drifting_clock(clock_, video_ntp_speed); 345 DriftingClock drifting_clock(clock_, video_ntp_speed);
(...skipping 30 matching lines...) Expand all
370 voe_base->Release(); 376 voe_base->Release();
371 voe_codec->Release(); 377 voe_codec->Release();
372 voe_network->Release(); 378 voe_network->Release();
373 voe_sync->Release(); 379 voe_sync->Release();
374 380
375 DestroyCalls(); 381 DestroyCalls();
376 382
377 VoiceEngine::Delete(voice_engine); 383 VoiceEngine::Delete(voice_engine);
378 } 384 }
379 385
380 TEST_F(CallPerfTest, PlaysOutAudioAndVideoInSyncWithAudioCreatedFirst) {
381 TestAudioVideoSync(false, true, DriftingClock::kNoDrift,
382 DriftingClock::kNoDrift, DriftingClock::kNoDrift);
383 }
384
385 TEST_F(CallPerfTest, PlaysOutAudioAndVideoInSyncWithVideoCreatedFirst) {
386 TestAudioVideoSync(false, false, DriftingClock::kNoDrift,
387 DriftingClock::kNoDrift, DriftingClock::kNoDrift);
388 }
389
390 TEST_F(CallPerfTest, PlaysOutAudioAndVideoInSyncWithFec) {
391 TestAudioVideoSync(true, false, DriftingClock::kNoDrift,
392 DriftingClock::kNoDrift, DriftingClock::kNoDrift);
393 }
394
395 // TODO(danilchap): Reenable after adding support for frame capture clock 386 // TODO(danilchap): Reenable after adding support for frame capture clock
396 // that is not in sync with local TickTime clock. 387 // that is not in sync with local TickTime clock.
397 TEST_F(CallPerfTest, DISABLED_PlaysOutAudioAndVideoInSyncWithVideoNtpDrift) { 388 TEST_F(CallPerfTest, DISABLED_PlaysOutAudioAndVideoInSyncWithVideoNtpDrift) {
398 TestAudioVideoSync(false, true, DriftingClock::PercentsFaster(10.0f), 389 TestAudioVideoSync(FecMode::kOff, CreateOrder::kAudioFirst,
390 DriftingClock::PercentsFaster(10.0f),
399 DriftingClock::kNoDrift, DriftingClock::kNoDrift); 391 DriftingClock::kNoDrift, DriftingClock::kNoDrift);
400 } 392 }
401 393
402 TEST_F(CallPerfTest, PlaysOutAudioAndVideoInSyncWithAudioRtpDrift) { 394 TEST_F(CallPerfTest, PlaysOutAudioAndVideoInSyncWithAudioFasterThanVideoDrift) {
403 TestAudioVideoSync(false, true, DriftingClock::kNoDrift, 395 TestAudioVideoSync(FecMode::kOff, CreateOrder::kAudioFirst,
404 DriftingClock::kNoDrift, 396 DriftingClock::kNoDrift,
405 DriftingClock::PercentsFaster(30.0f));
406 }
407
408 TEST_F(CallPerfTest, PlaysOutAudioAndVideoInSyncWithVideoRtpDrift) {
409 TestAudioVideoSync(false, true, DriftingClock::kNoDrift,
410 DriftingClock::PercentsFaster(30.0f),
411 DriftingClock::kNoDrift);
412 }
413
414 TEST_F(CallPerfTest, PlaysOutAudioAndVideoInSyncWithAudioFasterThanVideoDrift) {
415 TestAudioVideoSync(false, true, DriftingClock::kNoDrift,
416 DriftingClock::PercentsSlower(30.0f), 397 DriftingClock::PercentsSlower(30.0f),
417 DriftingClock::PercentsFaster(30.0f)); 398 DriftingClock::PercentsFaster(30.0f));
418 } 399 }
419 400
420 TEST_F(CallPerfTest, PlaysOutAudioAndVideoInSyncWithVideoFasterThanAudioDrift) { 401 TEST_F(CallPerfTest, PlaysOutAudioAndVideoInSyncWithVideoFasterThanAudioDrift) {
421 TestAudioVideoSync(false, true, DriftingClock::kNoDrift, 402 TestAudioVideoSync(FecMode::kOn, CreateOrder::kVideoFirst,
403 DriftingClock::kNoDrift,
422 DriftingClock::PercentsFaster(30.0f), 404 DriftingClock::PercentsFaster(30.0f),
423 DriftingClock::PercentsSlower(30.0f)); 405 DriftingClock::PercentsSlower(30.0f));
424 } 406 }
425 407
426 void CallPerfTest::TestCaptureNtpTime(const FakeNetworkPipe::Config& net_config, 408 void CallPerfTest::TestCaptureNtpTime(const FakeNetworkPipe::Config& net_config,
427 int threshold_ms, 409 int threshold_ms,
428 int start_time_ms, 410 int start_time_ms,
429 int run_time_ms) { 411 int run_time_ms) {
430 class CaptureNtpTimeObserver : public test::EndToEndTest, 412 class CaptureNtpTimeObserver : public test::EndToEndTest,
431 public VideoRenderer { 413 public VideoRenderer {
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
796 int encoder_inits_; 778 int encoder_inits_;
797 uint32_t last_set_bitrate_; 779 uint32_t last_set_bitrate_;
798 VideoSendStream* send_stream_; 780 VideoSendStream* send_stream_;
799 VideoEncoderConfig encoder_config_; 781 VideoEncoderConfig encoder_config_;
800 } test; 782 } test;
801 783
802 RunBaseTest(&test); 784 RunBaseTest(&test);
803 } 785 }
804 786
805 } // namespace webrtc 787 } // namespace webrtc
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698