| 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..835f48f43ca0db486f88187716135159068fa746 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(&forwarder_);
|
| vie_encoder_->SetStartBitrate(10000);
|
| vie_encoder_->ConfigureEncoder(video_encoder_config_, 1440);
|
| }
|
| @@ -164,6 +166,7 @@ class ViEEncoderTest : public ::testing::Test {
|
| TestEncoder fake_encoder_;
|
| SendStatisticsProxy stats_proxy_;
|
| TestSink sink_;
|
| + test::FrameForwarder forwarder_;
|
| std::unique_ptr<ViEEncoder> vie_encoder_;
|
| };
|
|
|
| @@ -171,7 +174,7 @@ 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));
|
| + forwarder_.IncomingCapturedFrame(CreateFrame(1, &frame_destroyed_event));
|
| sink_.WaitForEncodedFrame(1);
|
| frame_destroyed_event.Wait(kDefaultTimeoutMs);
|
| vie_encoder_->Stop();
|
| @@ -180,13 +183,13 @@ TEST_F(ViEEncoderTest, EncodeOneFrame) {
|
| 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));
|
| + forwarder_.IncomingCapturedFrame(CreateFrame(1, &frame_destroyed_event));
|
| frame_destroyed_event.Wait(kDefaultTimeoutMs);
|
|
|
| const int kTargetBitrateBps = 100000;
|
| vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(2, nullptr));
|
| + forwarder_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
| sink_.WaitForEncodedFrame(2);
|
| vie_encoder_->Stop();
|
| }
|
| @@ -194,15 +197,16 @@ TEST_F(ViEEncoderTest, DropsFramesBeforeFirstOnBitrateUpdated) {
|
| TEST_F(ViEEncoderTest, DropsFramesWhenRateSetToZero) {
|
| const int kTargetBitrateBps = 100000;
|
| vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| + forwarder_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| sink_.WaitForEncodedFrame(1);
|
|
|
| vie_encoder_->OnBitrateUpdated(0, 0, 0);
|
| // Dropped since bitrate is zero.
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(2, nullptr));
|
| + forwarder_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| + forwarder_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
|
|
| vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(3, nullptr));
|
| + forwarder_.IncomingCapturedFrame(CreateFrame(3, nullptr));
|
| sink_.WaitForEncodedFrame(3);
|
| vie_encoder_->Stop();
|
| }
|
| @@ -210,13 +214,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));
|
| + forwarder_.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));
|
| + forwarder_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
|
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(2, nullptr));
|
| + forwarder_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
| sink_.WaitForEncodedFrame(2);
|
| vie_encoder_->Stop();
|
| }
|
| @@ -225,13 +229,13 @@ TEST_F(ViEEncoderTest, DropsFrameAfterStop) {
|
| const int kTargetBitrateBps = 100000;
|
| vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| + forwarder_.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));
|
| + forwarder_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
| frame_destroyed_event.Wait(kDefaultTimeoutMs);
|
| }
|
|
|
| @@ -240,12 +244,12 @@ TEST_F(ViEEncoderTest, DropsPendingFramesOnSlowEncode) {
|
| vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| fake_encoder_.BlockNextEncode();
|
| - vie_encoder_->IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| + forwarder_.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));
|
| + forwarder_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
| + forwarder_.IncomingCapturedFrame(CreateFrame(3, nullptr));
|
| fake_encoder_.ContinueEncode();
|
| sink_.WaitForEncodedFrame(3);
|
|
|
|
|