Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(256)

Unified Diff: media/filters/ffmpeg_video_decode_engine_unittest.cc

Issue 3030013: preparation for recycling buffer, patch 2 (Closed)
Patch Set: fix layout test Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/filters/ffmpeg_video_decode_engine.cc ('k') | media/filters/ffmpeg_video_decoder.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/ffmpeg_video_decode_engine_unittest.cc
diff --git a/media/filters/ffmpeg_video_decode_engine_unittest.cc b/media/filters/ffmpeg_video_decode_engine_unittest.cc
index d335b6e6e2e534eb15762241418e73d11452b69b..deb13059125871eeef2feafa333e1eae0630a359 100644
--- a/media/filters/ffmpeg_video_decode_engine_unittest.cc
+++ b/media/filters/ffmpeg_video_decode_engine_unittest.cc
@@ -55,6 +55,13 @@ class FFmpegVideoDecodeEngineTest : public testing::Test {
test_engine_.reset(new FFmpegVideoDecodeEngine());
test_engine_->SetCodecContextForTest(&codec_context_);
+
+ VideoFrame::CreateFrame(VideoFrame::YV12,
+ kWidth,
+ kHeight,
+ StreamSample::kInvalidTimestamp,
+ StreamSample::kInvalidTimestamp,
+ &video_frame_);
}
~FFmpegVideoDecodeEngineTest() {
@@ -79,15 +86,17 @@ class FFmpegVideoDecodeEngineTest : public testing::Test {
test_engine_->Initialize(
MessageLoop::current(),
&stream_,
- NULL,
- NewCallback(this, &FFmpegVideoDecodeEngineTest::OnDecodeComplete),
+ NewCallback(this, &FFmpegVideoDecodeEngineTest::OnEmptyBufferDone),
+ NewCallback(this, &FFmpegVideoDecodeEngineTest::OnFillBufferDone),
done_cb.CreateTask());
EXPECT_EQ(VideoDecodeEngine::kNormal, test_engine_->state());
}
public:
- MOCK_METHOD1(OnDecodeComplete,
+ MOCK_METHOD1(OnFillBufferDone,
void(scoped_refptr<VideoFrame> video_frame));
+ MOCK_METHOD1(OnEmptyBufferDone,
+ void(scoped_refptr<Buffer> buffer));
scoped_refptr<VideoFrame> video_frame_;
protected:
@@ -181,6 +190,10 @@ TEST_F(FFmpegVideoDecodeEngineTest, Initialize_OpenDecoderFails) {
EXPECT_EQ(VideoDecodeEngine::kError, test_engine_->state());
}
+ACTION_P2(DemuxComplete, engine, buffer) {
+ engine->EmptyThisBuffer(buffer);
+}
+
ACTION_P(DecodeComplete, decoder) {
decoder->video_frame_ = arg0;
}
@@ -202,9 +215,11 @@ TEST_F(FFmpegVideoDecodeEngineTest, DecodeFrame_Normal) {
.WillOnce(DoAll(SetArgumentPointee<2>(1), // Simulate 1 byte frame.
Return(0)));
- EXPECT_CALL(*this, OnDecodeComplete(_))
- .WillOnce(DecodeComplete(this));
- test_engine_->EmptyThisBuffer(buffer_);
+ EXPECT_CALL(*this, OnEmptyBufferDone(_))
+ .WillOnce(DemuxComplete(test_engine_.get(), buffer_));
+ EXPECT_CALL(*this, OnFillBufferDone(_))
+ .WillOnce(DecodeComplete(this));
+ test_engine_->FillThisBuffer(video_frame_);
// |video_frame_| timestamp is 0 because we set the timestamp based off
// the buffer timestamp.
@@ -217,16 +232,23 @@ TEST_F(FFmpegVideoDecodeEngineTest, DecodeFrame_0ByteFrame) {
Initialize();
// Expect a bunch of avcodec calls.
- EXPECT_CALL(mock_ffmpeg_, AVInitPacket(_));
+ EXPECT_CALL(mock_ffmpeg_, AVInitPacket(_))
+ .Times(2);
EXPECT_CALL(mock_ffmpeg_,
AVCodecDecodeVideo2(&codec_context_, &yuv_frame_, _, _))
.WillOnce(DoAll(SetArgumentPointee<2>(0), // Simulate 0 byte frame.
+ Return(0)))
+ .WillOnce(DoAll(SetArgumentPointee<2>(1), // Simulate 1 byte frame.
Return(0)));
- EXPECT_CALL(*this, OnDecodeComplete(_))
- .WillOnce(DecodeComplete(this));
- test_engine_->EmptyThisBuffer(buffer_);
- EXPECT_FALSE(video_frame_.get());
+ EXPECT_CALL(*this, OnEmptyBufferDone(_))
+ .WillOnce(DemuxComplete(test_engine_.get(), buffer_))
+ .WillOnce(DemuxComplete(test_engine_.get(), buffer_));
+ EXPECT_CALL(*this, OnFillBufferDone(_))
+ .WillOnce(DecodeComplete(this));
+ test_engine_->FillThisBuffer(video_frame_);
+
+ EXPECT_TRUE(video_frame_.get());
}
TEST_F(FFmpegVideoDecodeEngineTest, DecodeFrame_DecodeError) {
@@ -238,9 +260,12 @@ TEST_F(FFmpegVideoDecodeEngineTest, DecodeFrame_DecodeError) {
AVCodecDecodeVideo2(&codec_context_, &yuv_frame_, _, _))
.WillOnce(Return(-1));
- EXPECT_CALL(*this, OnDecodeComplete(_))
- .WillOnce(DecodeComplete(this));
- test_engine_->EmptyThisBuffer(buffer_);
+ EXPECT_CALL(*this, OnEmptyBufferDone(_))
+ .WillOnce(DemuxComplete(test_engine_.get(), buffer_));
+ EXPECT_CALL(*this, OnFillBufferDone(_))
+ .WillOnce(DecodeComplete(this));
+ test_engine_->FillThisBuffer(video_frame_);
+
EXPECT_FALSE(video_frame_.get());
}
« no previous file with comments | « media/filters/ffmpeg_video_decode_engine.cc ('k') | media/filters/ffmpeg_video_decoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698