Refactor WebRtcVideoEngine tests to not use cricket::VideoCapturer, part 1.
Replaced with a combination of cricket::FakeFrameSource and
webrtc::test::FrameForwarder. This cl converts the first three
affected tests, the rest will follow.
Bug: webrtc:6353
Change-Id: I556f6b58f4ca81234ffae3dc6e1319f9c60a76ae
Reviewed-on: https://webrtc-review.googlesource.com/c/117260
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26239}
diff --git a/media/engine/webrtc_video_engine_unittest.cc b/media/engine/webrtc_video_engine_unittest.cc
index 9b5abd6..7ba9ae8 100644
--- a/media/engine/webrtc_video_engine_unittest.cc
+++ b/media/engine/webrtc_video_engine_unittest.cc
@@ -49,7 +49,9 @@
#include "rtc_base/fake_clock.h"
#include "rtc_base/gunit.h"
#include "rtc_base/numerics/safe_conversions.h"
+#include "rtc_base/timeutils.h"
#include "test/field_trial.h"
+#include "test/frame_generator.h"
#include "test/gmock.h"
using cricket::FakeVideoCapturerWithTaskQueue;
@@ -480,11 +482,11 @@
channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
EXPECT_EQ(0, encoder_factory_->GetNumCreatedEncoders());
EXPECT_TRUE(channel->SetSend(true));
- FakeVideoCapturerWithTaskQueue capturer;
- EXPECT_TRUE(channel->SetVideoSend(kSsrc, nullptr, &capturer));
- EXPECT_EQ(cricket::CS_RUNNING,
- capturer.Start(capturer.GetSupportedFormats()->front()));
- EXPECT_TRUE(capturer.CaptureFrame());
+ webrtc::test::FrameForwarder frame_forwarder;
+ cricket::FakeFrameSource frame_source(1280, 720,
+ rtc::kNumMicrosecsPerSec / 30);
+ EXPECT_TRUE(channel->SetVideoSend(kSsrc, nullptr, &frame_forwarder));
+ frame_forwarder.IncomingCapturedFrame(frame_source.GetFrame());
// Sending one frame will have allocate the encoder.
ASSERT_TRUE(encoder_factory_->WaitForCreatedVideoEncoders(1));
EXPECT_TRUE_WAIT(encoder_factory_->encoders()[0]->GetNumEncodedFrames() > 0,
@@ -567,19 +569,18 @@
EXPECT_TRUE(
channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
- FakeVideoCapturerWithTaskQueue capturer;
- EXPECT_TRUE(channel->SetVideoSend(kSsrc, nullptr, &capturer));
- capturer.Start(cricket::VideoFormat(1280, 720,
- cricket::VideoFormat::FpsToInterval(60),
- cricket::FOURCC_I420));
+ webrtc::test::FrameForwarder frame_forwarder;
+ cricket::FakeFrameSource frame_source(1280, 720,
+ rtc::kNumMicrosecsPerSec / 60);
+ EXPECT_TRUE(channel->SetVideoSend(kSsrc, nullptr, &frame_forwarder));
channel->SetSend(true);
FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0];
- EXPECT_TRUE(capturer.CaptureFrame());
+ frame_forwarder.IncomingCapturedFrame(frame_source.GetFrame());
int64_t last_timestamp = stream->GetLastTimestamp();
for (int i = 0; i < 10; i++) {
- EXPECT_TRUE(capturer.CaptureFrame());
+ frame_forwarder.IncomingCapturedFrame(frame_source.GetFrame());
int64_t timestamp = stream->GetLastTimestamp();
int64_t interval = timestamp - last_timestamp;
@@ -590,14 +591,14 @@
last_timestamp = timestamp;
}
- capturer.Start(cricket::VideoFormat(1280, 720,
- cricket::VideoFormat::FpsToInterval(30),
- cricket::FOURCC_I420));
-
- EXPECT_TRUE(capturer.CaptureFrame());
+ frame_forwarder.IncomingCapturedFrame(
+ frame_source.GetFrame(1280, 720, webrtc::VideoRotation::kVideoRotation_0,
+ rtc::kNumMicrosecsPerSec / 30));
last_timestamp = stream->GetLastTimestamp();
for (int i = 0; i < 10; i++) {
- EXPECT_TRUE(capturer.CaptureFrame());
+ frame_forwarder.IncomingCapturedFrame(frame_source.GetFrame(
+ 1280, 720, webrtc::VideoRotation::kVideoRotation_0,
+ rtc::kNumMicrosecsPerSec / 30));
int64_t timestamp = stream->GetLastTimestamp();
int64_t interval = timestamp - last_timestamp;
@@ -742,10 +743,10 @@
encoder_factory_->AddSupportedVideoCodecType("VP8");
encoder_factory_->AddSupportedVideoCodecType("H264");
- // Set capturer.
- FakeVideoCapturerWithTaskQueue capturer;
- EXPECT_EQ(cricket::CS_RUNNING,
- capturer.Start(capturer.GetSupportedFormats()->front()));
+ // Frame source.
+ webrtc::test::FrameForwarder frame_forwarder;
+ cricket::FakeFrameSource frame_source(1280, 720,
+ rtc::kNumMicrosecsPerSec / 30);
std::unique_ptr<VideoMediaChannel> channel(engine_.CreateMediaChannel(
call_.get(), GetMediaConfig(), VideoOptions(), webrtc::CryptoOptions()));
@@ -755,9 +756,9 @@
EXPECT_TRUE(
channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
- EXPECT_TRUE(channel->SetVideoSend(kSsrc, nullptr, &capturer));
+ EXPECT_TRUE(channel->SetVideoSend(kSsrc, nullptr, &frame_forwarder));
// Sending one frame will have allocate the encoder.
- EXPECT_TRUE(capturer.CaptureFrame());
+ frame_forwarder.IncomingCapturedFrame(frame_source.GetFrame());
ASSERT_EQ_WAIT(1u, encoder_factory_->encoders().size(), kTimeout);
@@ -766,7 +767,7 @@
EXPECT_TRUE(channel->SetSendParameters(new_parameters));
// Sending one frame will switch encoder.
- EXPECT_TRUE(capturer.CaptureFrame());
+ frame_forwarder.IncomingCapturedFrame(frame_source.GetFrame());
EXPECT_EQ_WAIT(1u, encoder_factory_->encoders().size(), kTimeout);
}