| OLD | NEW |
| 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 | 10 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 }; | 55 }; |
| 56 enum class CreateOrder { | 56 enum class CreateOrder { |
| 57 kAudioFirst, kVideoFirst | 57 kAudioFirst, kVideoFirst |
| 58 }; | 58 }; |
| 59 void TestAudioVideoSync(FecMode fec, | 59 void TestAudioVideoSync(FecMode fec, |
| 60 CreateOrder create_first, | 60 CreateOrder create_first, |
| 61 float video_ntp_speed, | 61 float video_ntp_speed, |
| 62 float video_rtp_speed, | 62 float video_rtp_speed, |
| 63 float audio_rtp_speed); | 63 float audio_rtp_speed); |
| 64 | 64 |
| 65 void TestCpuOveruse(LoadObserver::Load tested_load, int encode_delay_ms); | 65 void TestCpuOveruse(bool expect_lower_resolution_wants, int encode_delay_ms); |
| 66 | 66 |
| 67 void TestMinTransmitBitrate(bool pad_to_min_bitrate); | 67 void TestMinTransmitBitrate(bool pad_to_min_bitrate); |
| 68 | 68 |
| 69 void TestCaptureNtpTime(const FakeNetworkPipe::Config& net_config, | 69 void TestCaptureNtpTime(const FakeNetworkPipe::Config& net_config, |
| 70 int threshold_ms, | 70 int threshold_ms, |
| 71 int start_time_ms, | 71 int start_time_ms, |
| 72 int run_time_ms); | 72 int run_time_ms); |
| 73 }; | 73 }; |
| 74 | 74 |
| 75 class VideoRtcpAndSyncObserver : public test::RtpRtcpObserver, | 75 class VideoRtcpAndSyncObserver : public test::RtpRtcpObserver, |
| (...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 net_config.queue_delay_ms = 100; | 472 net_config.queue_delay_ms = 100; |
| 473 net_config.delay_standard_deviation_ms = 10; | 473 net_config.delay_standard_deviation_ms = 10; |
| 474 // TODO(wu): lower the threshold as the calculation/estimatation becomes more | 474 // TODO(wu): lower the threshold as the calculation/estimatation becomes more |
| 475 // accurate. | 475 // accurate. |
| 476 const int kThresholdMs = 100; | 476 const int kThresholdMs = 100; |
| 477 const int kStartTimeMs = 10000; | 477 const int kStartTimeMs = 10000; |
| 478 const int kRunTimeMs = 20000; | 478 const int kRunTimeMs = 20000; |
| 479 TestCaptureNtpTime(net_config, kThresholdMs, kStartTimeMs, kRunTimeMs); | 479 TestCaptureNtpTime(net_config, kThresholdMs, kStartTimeMs, kRunTimeMs); |
| 480 } | 480 } |
| 481 | 481 |
| 482 void CallPerfTest::TestCpuOveruse(LoadObserver::Load tested_load, | 482 void CallPerfTest::TestCpuOveruse(bool expect_lower_resolution_wants, |
| 483 int encode_delay_ms) { | 483 int encode_delay_ms) { |
| 484 class LoadObserver : public test::SendTest, public webrtc::LoadObserver { | 484 class LoadObserver : public test::SendTest, |
| 485 public test::FrameGeneratorCapturer::SinkWantsObserver { |
| 485 public: | 486 public: |
| 486 LoadObserver(LoadObserver::Load tested_load, int encode_delay_ms) | 487 LoadObserver(bool expect_lower_resolution_wants, int encode_delay_ms) |
| 487 : SendTest(kLongTimeoutMs), | 488 : SendTest(kLongTimeoutMs), |
| 488 tested_load_(tested_load), | 489 expect_lower_resolution_wants_(expect_lower_resolution_wants), |
| 489 encoder_(Clock::GetRealTimeClock(), encode_delay_ms) {} | 490 encoder_(Clock::GetRealTimeClock(), encode_delay_ms) {} |
| 490 | 491 |
| 491 void OnLoadUpdate(Load load) override { | 492 void OnFrameGeneratorCapturerCreated( |
| 492 if (load == tested_load_) | 493 test::FrameGeneratorCapturer* frame_generator_capturer) override { |
| 493 observation_complete_.Set(); | 494 frame_generator_capturer->SetSinkWantsObserver(this); |
| 495 } |
| 496 |
| 497 // OnSinkWantsChanged is called when FrameGeneratorCapturer::AddOrUpdateSink |
| 498 // is called. |
| 499 void OnSinkWantsChanged(rtc::VideoSinkInterface<VideoFrame>* sink, |
| 500 const rtc::VideoSinkWants& wants) override { |
| 501 if (expect_lower_resolution_wants_) { |
| 502 if (wants.max_pixel_count) { |
| 503 observation_complete_.Set(); |
| 504 } |
| 505 } else { |
| 506 if (wants.max_pixel_count_step_up) { |
| 507 observation_complete_.Set(); |
| 508 } |
| 509 } |
| 494 } | 510 } |
| 495 | 511 |
| 496 void ModifyVideoConfigs( | 512 void ModifyVideoConfigs( |
| 497 VideoSendStream::Config* send_config, | 513 VideoSendStream::Config* send_config, |
| 498 std::vector<VideoReceiveStream::Config>* receive_configs, | 514 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 499 VideoEncoderConfig* encoder_config) override { | 515 VideoEncoderConfig* encoder_config) override { |
| 500 send_config->overuse_callback = this; | |
| 501 send_config->encoder_settings.encoder = &encoder_; | 516 send_config->encoder_settings.encoder = &encoder_; |
| 502 } | 517 } |
| 503 | 518 |
| 504 void PerformTest() override { | 519 void PerformTest() override { |
| 505 EXPECT_TRUE(Wait()) << "Timed out before receiving an overuse callback."; | 520 EXPECT_TRUE(Wait()) << "Timed out before receiving an overuse callback."; |
| 506 } | 521 } |
| 507 | 522 |
| 508 LoadObserver::Load tested_load_; | 523 bool expect_lower_resolution_wants_; |
| 509 test::DelayedEncoder encoder_; | 524 test::DelayedEncoder encoder_; |
| 510 } test(tested_load, encode_delay_ms); | 525 } test(expect_lower_resolution_wants, encode_delay_ms); |
| 511 | 526 |
| 512 RunBaseTest(&test); | 527 RunBaseTest(&test); |
| 513 } | 528 } |
| 514 | 529 |
| 515 TEST_F(CallPerfTest, ReceivesCpuUnderuse) { | 530 TEST_F(CallPerfTest, ReceivesCpuUnderuse) { |
| 516 const int kEncodeDelayMs = 2; | 531 const int kEncodeDelayMs = 2; |
| 517 TestCpuOveruse(LoadObserver::kUnderuse, kEncodeDelayMs); | 532 TestCpuOveruse(false, kEncodeDelayMs); |
| 518 } | 533 } |
| 519 | 534 |
| 520 TEST_F(CallPerfTest, ReceivesCpuOveruse) { | 535 TEST_F(CallPerfTest, ReceivesCpuOveruse) { |
| 521 const int kEncodeDelayMs = 35; | 536 const int kEncodeDelayMs = 35; |
| 522 TestCpuOveruse(LoadObserver::kOveruse, kEncodeDelayMs); | 537 TestCpuOveruse(true, kEncodeDelayMs); |
| 523 } | 538 } |
| 524 | 539 |
| 525 void CallPerfTest::TestMinTransmitBitrate(bool pad_to_min_bitrate) { | 540 void CallPerfTest::TestMinTransmitBitrate(bool pad_to_min_bitrate) { |
| 526 static const int kMaxEncodeBitrateKbps = 30; | 541 static const int kMaxEncodeBitrateKbps = 30; |
| 527 static const int kMinTransmitBitrateBps = 150000; | 542 static const int kMinTransmitBitrateBps = 150000; |
| 528 static const int kMinAcceptableTransmitBitrate = 130; | 543 static const int kMinAcceptableTransmitBitrate = 130; |
| 529 static const int kMaxAcceptableTransmitBitrate = 170; | 544 static const int kMaxAcceptableTransmitBitrate = 170; |
| 530 static const int kNumBitrateObservationsInRange = 100; | 545 static const int kNumBitrateObservationsInRange = 100; |
| 531 static const int kAcceptableBitrateErrorMargin = 15; // +- 7 | 546 static const int kAcceptableBitrateErrorMargin = 15; // +- 7 |
| 532 class BitrateObserver : public test::EndToEndTest { | 547 class BitrateObserver : public test::EndToEndTest { |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 726 uint32_t last_set_bitrate_; | 741 uint32_t last_set_bitrate_; |
| 727 VideoSendStream* send_stream_; | 742 VideoSendStream* send_stream_; |
| 728 test::FrameGeneratorCapturer* frame_generator_; | 743 test::FrameGeneratorCapturer* frame_generator_; |
| 729 VideoEncoderConfig encoder_config_; | 744 VideoEncoderConfig encoder_config_; |
| 730 } test; | 745 } test; |
| 731 | 746 |
| 732 RunBaseTest(&test); | 747 RunBaseTest(&test); |
| 733 } | 748 } |
| 734 | 749 |
| 735 } // namespace webrtc | 750 } // namespace webrtc |
| OLD | NEW |