| Index: webrtc/video/vie_encoder_unittest.cc
|
| diff --git a/webrtc/video/vie_encoder_unittest.cc b/webrtc/video/vie_encoder_unittest.cc
|
| index 698dd3a54088b8873a2473ca69707adf1664c632..ba25a1da4d07b2dd1e497da7ab3674bbcd711be9 100644
|
| --- a/webrtc/video/vie_encoder_unittest.cc
|
| +++ b/webrtc/video/vie_encoder_unittest.cc
|
| @@ -12,6 +12,7 @@
|
| #include "webrtc/base/logging.h"
|
| #include "webrtc/test/encoder_settings.h"
|
| #include "webrtc/test/fake_encoder.h"
|
| +#include "webrtc/test/frame_generator.h"
|
| #include "webrtc/video/send_statistics_proxy.h"
|
| #include "webrtc/video/vie_encoder.h"
|
|
|
| @@ -42,6 +43,7 @@ class ViEEncoderTest : public ::testing::Test {
|
| video_send_config_.encoder_settings, nullptr /* pre_encode_callback */,
|
| nullptr /* overuse_callback */, nullptr /* encoder_timing */));
|
| vie_encoder_->SetSink(&sink_);
|
| + vie_encoder_->SetSource(&video_source_);
|
| vie_encoder_->SetStartBitrate(10000);
|
| vie_encoder_->ConfigureEncoder(video_encoder_config_, 1440);
|
| }
|
| @@ -95,7 +97,7 @@ class ViEEncoderTest : public ::testing::Test {
|
| int32_t result =
|
| FakeEncoder::Encode(input_image, codec_specific_info, frame_types);
|
| if (block_encode)
|
| - continue_encode_event_.Wait(kDefaultTimeoutMs);
|
| + EXPECT_TRUE(continue_encode_event_.Wait(kDefaultTimeoutMs));
|
| return result;
|
| }
|
|
|
| @@ -138,7 +140,7 @@ class ViEEncoderTest : public ::testing::Test {
|
|
|
| void WaitForEncodedFrame(int64_t expected_ntp_time) {
|
| uint32_t timestamp = 0;
|
| - encoded_frame_event_.Wait(kDefaultTimeoutMs);
|
| + EXPECT_TRUE(encoded_frame_event_.Wait(kDefaultTimeoutMs));
|
| {
|
| rtc::CritScope lock(&crit_);
|
| timestamp = timestamp_;
|
| @@ -164,6 +166,7 @@ class ViEEncoderTest : public ::testing::Test {
|
| TestEncoder fake_encoder_;
|
| SendStatisticsProxy stats_proxy_;
|
| TestSink sink_;
|
| + test::FrameForwarder video_source_;
|
| std::unique_ptr<ViEEncoder> vie_encoder_;
|
| };
|
|
|
| @@ -171,22 +174,22 @@ TEST_F(ViEEncoderTest, EncodeOneFrame) {
|
| const int kTargetBitrateBps = 100000;
|
| vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| rtc::Event frame_destroyed_event(false, false);
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(1, &frame_destroyed_event));
|
| + video_source_.IncomingCapturedFrame(CreateFrame(1, &frame_destroyed_event));
|
| sink_.WaitForEncodedFrame(1);
|
| - frame_destroyed_event.Wait(kDefaultTimeoutMs);
|
| + EXPECT_TRUE(frame_destroyed_event.Wait(kDefaultTimeoutMs));
|
| vie_encoder_->Stop();
|
| }
|
|
|
| TEST_F(ViEEncoderTest, DropsFramesBeforeFirstOnBitrateUpdated) {
|
| // Dropped since no target bitrate has been set.
|
| rtc::Event frame_destroyed_event(false, false);
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(1, &frame_destroyed_event));
|
| - frame_destroyed_event.Wait(kDefaultTimeoutMs);
|
| + video_source_.IncomingCapturedFrame(CreateFrame(1, &frame_destroyed_event));
|
| + EXPECT_TRUE(frame_destroyed_event.Wait(kDefaultTimeoutMs));
|
|
|
| const int kTargetBitrateBps = 100000;
|
| vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(2, nullptr));
|
| + video_source_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
| sink_.WaitForEncodedFrame(2);
|
| vie_encoder_->Stop();
|
| }
|
| @@ -194,15 +197,15 @@ TEST_F(ViEEncoderTest, DropsFramesBeforeFirstOnBitrateUpdated) {
|
| TEST_F(ViEEncoderTest, DropsFramesWhenRateSetToZero) {
|
| const int kTargetBitrateBps = 100000;
|
| vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| + video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| sink_.WaitForEncodedFrame(1);
|
|
|
| vie_encoder_->OnBitrateUpdated(0, 0, 0);
|
| // Dropped since bitrate is zero.
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(2, nullptr));
|
| + video_source_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
|
|
| vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(3, nullptr));
|
| + video_source_.IncomingCapturedFrame(CreateFrame(3, nullptr));
|
| sink_.WaitForEncodedFrame(3);
|
| vie_encoder_->Stop();
|
| }
|
| @@ -210,13 +213,13 @@ TEST_F(ViEEncoderTest, DropsFramesWhenRateSetToZero) {
|
| TEST_F(ViEEncoderTest, DropsFramesWithSameOrOldNtpTimestamp) {
|
| const int kTargetBitrateBps = 100000;
|
| vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| + video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| sink_.WaitForEncodedFrame(1);
|
|
|
| // This frame will be dropped since it has the same ntp timestamp.
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| + video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
|
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(2, nullptr));
|
| + video_source_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
| sink_.WaitForEncodedFrame(2);
|
| vie_encoder_->Stop();
|
| }
|
| @@ -225,14 +228,14 @@ TEST_F(ViEEncoderTest, DropsFrameAfterStop) {
|
| const int kTargetBitrateBps = 100000;
|
| vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| + video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| sink_.WaitForEncodedFrame(1);
|
|
|
| vie_encoder_->Stop();
|
| sink_.SetExpectNoFrames();
|
| rtc::Event frame_destroyed_event(false, false);
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(2, &frame_destroyed_event));
|
| - frame_destroyed_event.Wait(kDefaultTimeoutMs);
|
| + video_source_.IncomingCapturedFrame(CreateFrame(2, &frame_destroyed_event));
|
| + EXPECT_TRUE(frame_destroyed_event.Wait(kDefaultTimeoutMs));
|
| }
|
|
|
| TEST_F(ViEEncoderTest, DropsPendingFramesOnSlowEncode) {
|
| @@ -240,12 +243,12 @@ TEST_F(ViEEncoderTest, DropsPendingFramesOnSlowEncode) {
|
| vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| fake_encoder_.BlockNextEncode();
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| + video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| sink_.WaitForEncodedFrame(1);
|
| // Here, the encoder thread will be blocked in the TestEncoder waiting for a
|
| // call to ContinueEncode.
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(2, nullptr));
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(3, nullptr));
|
| + video_source_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
| + video_source_.IncomingCapturedFrame(CreateFrame(3, nullptr));
|
| fake_encoder_.ContinueEncode();
|
| sink_.WaitForEncodedFrame(3);
|
|
|
|
|