Index: media/filters/ffmpeg_demuxer_unittest.cc |
=================================================================== |
--- media/filters/ffmpeg_demuxer_unittest.cc (revision 75447) |
+++ media/filters/ffmpeg_demuxer_unittest.cc (working copy) |
@@ -105,6 +105,9 @@ |
streams_[i].time_base.den = 1 * base::Time::kMicrosecondsPerSecond; |
streams_[i].time_base.num = 1; |
} |
+ |
+ // Initialize MockFFmpeg. |
+ MockFFmpeg::set(&mock_ffmpeg_); |
} |
virtual ~FFmpegDemuxerTest() { |
@@ -116,15 +119,18 @@ |
// Release the reference to the demuxer. |
demuxer_ = NULL; |
+ |
+ // Reset MockFFmpeg. |
+ MockFFmpeg::set(NULL); |
} |
// Sets up MockFFmpeg to allow FFmpegDemuxer to successfully initialize. |
void InitializeDemuxerMocks() { |
- EXPECT_CALL(mock_ffmpeg_, AVOpenInputFile(_, _, NULL, 0, NULL)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVOpenInputFile(_, _, NULL, 0, NULL)) |
.WillOnce(DoAll(SetArgumentPointee<0>(&format_context_), Return(0))); |
- EXPECT_CALL(mock_ffmpeg_, AVFindStreamInfo(&format_context_)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVFindStreamInfo(&format_context_)) |
.WillOnce(Return(0)); |
- EXPECT_CALL(mock_ffmpeg_, AVCloseInputFile(&format_context_)); |
+ EXPECT_CALL(*MockFFmpeg::get(), AVCloseInputFile(&format_context_)); |
} |
// Initializes both MockFFmpeg and FFmpegDemuxer. |
@@ -173,7 +179,7 @@ |
TEST_F(FFmpegDemuxerTest, Initialize_OpenFails) { |
// Simulate av_open_input_file() failing. |
- EXPECT_CALL(mock_ffmpeg_, AVOpenInputFile(_, _, NULL, 0, NULL)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVOpenInputFile(_, _, NULL, 0, NULL)) |
.WillOnce(Return(-1)); |
EXPECT_CALL(host_, SetError(DEMUXER_ERROR_COULD_NOT_OPEN)); |
@@ -183,11 +189,11 @@ |
TEST_F(FFmpegDemuxerTest, Initialize_ParseFails) { |
// Simulate av_find_stream_info() failing. |
- EXPECT_CALL(mock_ffmpeg_, AVOpenInputFile(_, _, NULL, 0, NULL)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVOpenInputFile(_, _, NULL, 0, NULL)) |
.WillOnce(DoAll(SetArgumentPointee<0>(&format_context_), Return(0))); |
- EXPECT_CALL(mock_ffmpeg_, AVFindStreamInfo(&format_context_)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVFindStreamInfo(&format_context_)) |
.WillOnce(Return(AVERROR_IO)); |
- EXPECT_CALL(mock_ffmpeg_, AVCloseInputFile(&format_context_)); |
+ EXPECT_CALL(*MockFFmpeg::get(), AVCloseInputFile(&format_context_)); |
EXPECT_CALL(host_, SetError(DEMUXER_ERROR_COULD_NOT_PARSE)); |
demuxer_->Initialize(data_source_.get(), NewExpectedCallback()); |
@@ -264,14 +270,14 @@ |
} |
// Ignore all AVFreePacket() calls. We check this elsewhere. |
- EXPECT_CALL(mock_ffmpeg_, AVFreePacket(_)).Times(AnyNumber()); |
+ EXPECT_CALL(*MockFFmpeg::get(), AVFreePacket(_)).Times(AnyNumber()); |
// The demuxer will read a data packet which will get immediately freed, |
// followed by a read error to end the reading. |
InSequence s; |
- EXPECT_CALL(mock_ffmpeg_, AVReadFrame(&format_context_, _)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVReadFrame(&format_context_, _)) |
.WillOnce(CreatePacketNoCount(AV_STREAM_DATA, kNullData, 0)); |
- EXPECT_CALL(mock_ffmpeg_, AVReadFrame(&format_context_, _)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVReadFrame(&format_context_, _)) |
.WillOnce(Return(AVERROR_IO)); |
// Attempt a read from the audio stream and run the message loop until done. |
@@ -295,13 +301,13 @@ |
} |
// Ignore all AVFreePacket() calls. We check this via valgrind. |
- EXPECT_CALL(mock_ffmpeg_, AVFreePacket(_)).Times(AnyNumber()); |
+ EXPECT_CALL(*MockFFmpeg::get(), AVFreePacket(_)).Times(AnyNumber()); |
// The demuxer will read a data packet which will get immediately freed, |
// followed by reading an audio packet... |
- EXPECT_CALL(mock_ffmpeg_, AVReadFrame(&format_context_, _)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVReadFrame(&format_context_, _)) |
.WillOnce(CreatePacketNoCount(AV_STREAM_AUDIO, kAudioData, kDataSize)); |
- EXPECT_CALL(mock_ffmpeg_, AVDupPacket(_)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVDupPacket(_)) |
.WillOnce(Return(0)); |
// Attempt a read from the audio stream and run the message loop until done. |
@@ -327,12 +333,12 @@ |
} |
// Ignore all AVFreePacket() calls. We check this via valgrind. |
- EXPECT_CALL(mock_ffmpeg_, AVFreePacket(_)).Times(AnyNumber()); |
+ EXPECT_CALL(*MockFFmpeg::get(), AVFreePacket(_)).Times(AnyNumber()); |
// Simulate a successful frame read. |
- EXPECT_CALL(mock_ffmpeg_, AVReadFrame(&format_context_, _)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVReadFrame(&format_context_, _)) |
.WillOnce(CreatePacketNoCount(AV_STREAM_VIDEO, kVideoData, kDataSize)); |
- EXPECT_CALL(mock_ffmpeg_, AVDupPacket(_)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVDupPacket(_)) |
.WillOnce(Return(0)); |
// Attempt a read from the video stream and run the message loop until done. |
@@ -358,9 +364,9 @@ |
} |
// Ignore all AVFreePacket() calls. We check this via valgrind. |
- EXPECT_CALL(mock_ffmpeg_, AVFreePacket(_)).Times(AnyNumber()); |
+ EXPECT_CALL(*MockFFmpeg::get(), AVFreePacket(_)).Times(AnyNumber()); |
- EXPECT_CALL(mock_ffmpeg_, AVReadFrame(&format_context_, _)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVReadFrame(&format_context_, _)) |
.WillOnce(Return(AVERROR_IO)); |
// We should now expect an end of stream buffer. |
@@ -397,59 +403,59 @@ |
const int64 kExpectedFlags = AVSEEK_FLAG_BACKWARD; |
// Ignore all AVFreePacket() calls. We check this via valgrind. |
- EXPECT_CALL(mock_ffmpeg_, AVFreePacket(_)).Times(AnyNumber()); |
+ EXPECT_CALL(*MockFFmpeg::get(), AVFreePacket(_)).Times(AnyNumber()); |
// Expect all calls in sequence. |
InSequence s; |
// First we'll read a video packet that causes two audio packets to be queued |
// inside FFmpegDemuxer... |
- EXPECT_CALL(mock_ffmpeg_, AVReadFrame(&format_context_, _)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVReadFrame(&format_context_, _)) |
.WillOnce(CreatePacketNoCount(AV_STREAM_AUDIO, kAudioData, kDataSize)); |
- EXPECT_CALL(mock_ffmpeg_, AVDupPacket(_)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVDupPacket(_)) |
.WillOnce(Return(0)); |
- EXPECT_CALL(mock_ffmpeg_, AVReadFrame(&format_context_, _)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVReadFrame(&format_context_, _)) |
.WillOnce(CreatePacketNoCount(AV_STREAM_AUDIO, kAudioData, kDataSize)); |
- EXPECT_CALL(mock_ffmpeg_, AVDupPacket(_)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVDupPacket(_)) |
.WillOnce(Return(0)); |
- EXPECT_CALL(mock_ffmpeg_, AVReadFrame(&format_context_, _)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVReadFrame(&format_context_, _)) |
.WillOnce(CreatePacketNoCount(AV_STREAM_VIDEO, kVideoData, kDataSize)); |
- EXPECT_CALL(mock_ffmpeg_, AVDupPacket(_)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVDupPacket(_)) |
.WillOnce(Return(0)); |
- EXPECT_CALL(mock_ffmpeg_, CheckPoint(1)); |
+ EXPECT_CALL(*MockFFmpeg::get(), CheckPoint(1)); |
// ...then we'll expect a seek call... |
- EXPECT_CALL(mock_ffmpeg_, |
+ EXPECT_CALL(*MockFFmpeg::get(), |
AVSeekFrame(&format_context_, -1, kExpectedTimestamp, kExpectedFlags)) |
.WillOnce(Return(0)); |
// ...then our callback will be executed... |
FilterCallback* seek_callback = NewExpectedCallback(); |
- EXPECT_CALL(mock_ffmpeg_, CheckPoint(2)); |
+ EXPECT_CALL(*MockFFmpeg::get(), CheckPoint(2)); |
// ...followed by two audio packet reads we'll trigger... |
- EXPECT_CALL(mock_ffmpeg_, AVReadFrame(&format_context_, _)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVReadFrame(&format_context_, _)) |
.WillOnce(CreatePacketNoCount(AV_STREAM_AUDIO, kAudioData, kDataSize)); |
- EXPECT_CALL(mock_ffmpeg_, AVDupPacket(_)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVDupPacket(_)) |
.WillOnce(Return(0)); |
- EXPECT_CALL(mock_ffmpeg_, AVReadFrame(&format_context_, _)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVReadFrame(&format_context_, _)) |
.WillOnce(CreatePacketNoCount(AV_STREAM_AUDIO, kAudioData, kDataSize)); |
- EXPECT_CALL(mock_ffmpeg_, AVDupPacket(_)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVDupPacket(_)) |
.WillOnce(Return(0)); |
// ...followed by two video packet reads... |
- EXPECT_CALL(mock_ffmpeg_, AVReadFrame(&format_context_, _)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVReadFrame(&format_context_, _)) |
.WillOnce(CreatePacketNoCount(AV_STREAM_VIDEO, kVideoData, kDataSize)); |
- EXPECT_CALL(mock_ffmpeg_, AVDupPacket(_)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVDupPacket(_)) |
.WillOnce(Return(0)); |
- EXPECT_CALL(mock_ffmpeg_, AVReadFrame(&format_context_, _)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVReadFrame(&format_context_, _)) |
.WillOnce(CreatePacketNoCount(AV_STREAM_VIDEO, kVideoData, kDataSize)); |
- EXPECT_CALL(mock_ffmpeg_, AVDupPacket(_)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVDupPacket(_)) |
.WillOnce(Return(0)); |
// ...and finally a sanity checkpoint to make sure everything was released. |
- EXPECT_CALL(mock_ffmpeg_, CheckPoint(3)); |
+ EXPECT_CALL(*MockFFmpeg::get(), CheckPoint(3)); |
// Read a video packet and release it. |
scoped_refptr<DemuxerStreamReader> reader(new DemuxerStreamReader()); |
@@ -464,13 +470,13 @@ |
// Release the video packet and verify the other packets are still queued. |
reader->Reset(); |
message_loop_.RunAllPending(); |
- mock_ffmpeg_.CheckPoint(1); |
+ MockFFmpeg::get()->CheckPoint(1); |
// Issue a simple forward seek, which should discard queued packets. |
demuxer_->Seek(base::TimeDelta::FromMicroseconds(kExpectedTimestamp), |
seek_callback); |
message_loop_.RunAllPending(); |
- mock_ffmpeg_.CheckPoint(2); |
+ MockFFmpeg::get()->CheckPoint(2); |
// Audio read #1. |
reader->Read(audio); |
@@ -514,7 +520,7 @@ |
// Manually release the last reference to the buffer and verify it was freed. |
reader->Reset(); |
message_loop_.RunAllPending(); |
- mock_ffmpeg_.CheckPoint(3); |
+ MockFFmpeg::get()->CheckPoint(3); |
} |
// A mocked callback specialization for calling Read(). Since RunWithParams() |
@@ -562,14 +568,14 @@ |
// The callback should be immediately deleted. We'll use a checkpoint to |
// verify that it has indeed been deleted. |
EXPECT_CALL(*callback, OnDelete()); |
- EXPECT_CALL(mock_ffmpeg_, CheckPoint(1)); |
+ EXPECT_CALL(*MockFFmpeg::get(), CheckPoint(1)); |
// Attempt the read... |
audio->Read(callback.release()); |
message_loop_.RunAllPending(); |
// ...and verify that |callback| was deleted. |
- mock_ffmpeg_.CheckPoint(1); |
+ MockFFmpeg::get()->CheckPoint(1); |
} |
TEST_F(FFmpegDemuxerTest, DisableAudioStream) { |
@@ -587,17 +593,17 @@ |
message_loop_.RunAllPending(); |
// Ignore all AVFreePacket() calls. We check this via valgrind. |
- EXPECT_CALL(mock_ffmpeg_, AVFreePacket(_)).Times(AnyNumber()); |
+ EXPECT_CALL(*MockFFmpeg::get(), AVFreePacket(_)).Times(AnyNumber()); |
// Expect all calls in sequence. |
InSequence s; |
// The demuxer will read an audio packet which will get immediately freed. |
- EXPECT_CALL(mock_ffmpeg_, AVReadFrame(&format_context_, _)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVReadFrame(&format_context_, _)) |
.WillOnce(CreatePacketNoCount(AV_STREAM_AUDIO, kNullData, 0)); |
// Then an end-of-stream packet is read. |
- EXPECT_CALL(mock_ffmpeg_, AVReadFrame(&format_context_, _)) |
+ EXPECT_CALL(*MockFFmpeg::get(), AVReadFrame(&format_context_, _)) |
.WillOnce(Return(AVERROR_IO)); |
// Get our streams. |