Index: media/cast/sender/h264_vt_encoder_unittest.cc |
diff --git a/media/cast/sender/h264_vt_encoder_unittest.cc b/media/cast/sender/h264_vt_encoder_unittest.cc |
index 04f3d629da95b23a9d9f8786347b5eb691ddacfd..58c5435ab1d387b4cf11e85ebd0256d20bfcf21c 100644 |
--- a/media/cast/sender/h264_vt_encoder_unittest.cc |
+++ b/media/cast/sender/h264_vt_encoder_unittest.cc |
@@ -192,8 +192,7 @@ void CreateFrameAndMemsetPlane(VideoFrameFactory* const video_frame_factory) { |
class H264VideoToolboxEncoderTest : public ::testing::Test { |
protected: |
- H264VideoToolboxEncoderTest() |
- : operational_status_(STATUS_UNINITIALIZED) { |
+ H264VideoToolboxEncoderTest() : operational_status_(STATUS_UNINITIALIZED) { |
frame_->set_timestamp(base::TimeDelta()); |
} |
@@ -206,10 +205,7 @@ class H264VideoToolboxEncoderTest : public ::testing::Test { |
message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(), |
message_loop_.message_loop_proxy()); |
encoder_.reset(new H264VideoToolboxEncoder( |
- cast_environment_, |
- video_sender_config_, |
- gfx::Size(kVideoWidth, kVideoHeight), |
- 0u, |
+ cast_environment_, video_sender_config_, |
base::Bind(&SaveOperationalStatus, &operational_status_))); |
message_loop_.RunUntilIdle(); |
EXPECT_EQ(STATUS_INITIALIZED, operational_status_); |
@@ -260,6 +256,12 @@ TEST_F(H264VideoToolboxEncoderTest, CheckFrameMetadataSequence) { |
VideoEncoder::FrameEncodedCallback cb = base::Bind( |
&MetadataRecorder::CompareFrameWithExpected, metadata_recorder.get()); |
+ // The first call to |EncodeVideoFrame| will return null but post a task to |
+ // the encoder to initialize for the specified frame size. We then drain the |
+ // message loop. After that, the encoder should have initialized. |
+ ASSERT_FALSE(encoder_->EncodeVideoFrame(frame_, clock_->NowTicks(), cb)); |
+ message_loop_.RunUntilIdle(); |
+ |
metadata_recorder->PushExpectation( |
0, 0, TimeDeltaToRtpDelta(frame_->timestamp(), kVideoFrequency), |
clock_->NowTicks()); |
@@ -287,9 +289,15 @@ TEST_F(H264VideoToolboxEncoderTest, CheckFramesAreDecodable) { |
frame_->coded_size(), frame_->visible_rect(), |
frame_->natural_size(), nullptr, 0, false); |
scoped_refptr<EndToEndFrameChecker> checker(new EndToEndFrameChecker(config)); |
- |
VideoEncoder::FrameEncodedCallback cb = |
base::Bind(&EndToEndFrameChecker::EncodeDone, checker.get()); |
+ |
+ // The first call to |EncodeVideoFrame| will return null but post a task to |
+ // the encoder to initialize for the specified frame size. We then drain the |
+ // message loop. After that, the encoder should have initialized. |
+ ASSERT_FALSE(encoder_->EncodeVideoFrame(frame_, clock_->NowTicks(), cb)); |
+ message_loop_.RunUntilIdle(); |
+ |
for (uint32 frame_id = 0; frame_id < 6; ++frame_id) { |
checker->PushExpectation(frame_); |
EXPECT_TRUE(encoder_->EncodeVideoFrame(frame_, clock_->NowTicks(), cb)); |
@@ -306,10 +314,12 @@ TEST_F(H264VideoToolboxEncoderTest, CheckFramesAreDecodable) { |
TEST_F(H264VideoToolboxEncoderTest, CheckVideoFrameFactory) { |
auto video_frame_factory = encoder_->CreateVideoFrameFactory(); |
ASSERT_TRUE(video_frame_factory.get()); |
- CreateFrameAndMemsetPlane(video_frame_factory.get()); |
- // TODO(jfroy): Need to test that the encoder can encode VideoFrames provided |
- // by the VideoFrameFactory. |
- encoder_.reset(); |
+ // The first call to |MaybeCreateFrame| will return null but post a task to |
+ // the encoder to initialize for the specified frame size. We then drain the |
+ // message loop. After that, the encoder should have initialized and we |
+ // request a frame again. |
+ ASSERT_FALSE(video_frame_factory->MaybeCreateFrame( |
+ gfx::Size(kVideoWidth, kVideoHeight), base::TimeDelta())); |
message_loop_.RunUntilIdle(); |
CreateFrameAndMemsetPlane(video_frame_factory.get()); |
} |