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

Unified Diff: media/filters/ffmpeg_demuxer_unittest.cc

Issue 9968117: Move Demuxer::set_host() to Initialize(). (Closed) Base URL: svn://chrome-svn/chrome/trunk/src
Patch Set: fixes Created 8 years, 9 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_demuxer.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/ffmpeg_demuxer_unittest.cc
diff --git a/media/filters/ffmpeg_demuxer_unittest.cc b/media/filters/ffmpeg_demuxer_unittest.cc
index 520b59bf1bd349fc1520613998e7b58f0efb9ea3..c75f34fd7131da3bf4ce8279dcdcf3742b28fd17 100644
--- a/media/filters/ffmpeg_demuxer_unittest.cc
+++ b/media/filters/ffmpeg_demuxer_unittest.cc
@@ -5,6 +5,7 @@
#include <deque>
#include "base/file_path.h"
+#include "base/file_util.h"
#include "base/path_service.h"
#include "base/threading/thread.h"
#include "media/base/filters.h"
@@ -72,16 +73,13 @@ class FFmpegDemuxerTest : public testing::Test {
// Create an FFmpegDemuxer with local data source.
demuxer_ = new FFmpegDemuxer(&message_loop_, data_source_, true);
demuxer_->disable_first_seek_hack_for_testing();
-
- // Inject a filter host and message loop and prepare a data source.
- demuxer_->set_host(&host_);
}
MOCK_METHOD1(CheckPoint, void(int v));
void InitializeDemuxer() {
EXPECT_CALL(host_, SetDuration(_));
- demuxer_->Initialize(NewExpectedStatusCB(PIPELINE_OK));
+ demuxer_->Initialize(&host_, NewExpectedStatusCB(PIPELINE_OK));
message_loop_.RunAllPending();
}
@@ -149,7 +147,8 @@ TEST_F(FFmpegDemuxerTest, Initialize_OpenFails) {
// Simulate avformat_open_input() failing.
CreateDemuxer("ten_byte_file"),
EXPECT_CALL(host_, SetCurrentReadPosition(_));
- demuxer_->Initialize(NewExpectedStatusCB(DEMUXER_ERROR_COULD_NOT_OPEN));
+ demuxer_->Initialize(
+ &host_, NewExpectedStatusCB(DEMUXER_ERROR_COULD_NOT_OPEN));
message_loop_.RunAllPending();
}
@@ -160,7 +159,7 @@ TEST_F(FFmpegDemuxerTest, Initialize_OpenFails) {
//TEST_F(FFmpegDemuxerTest, Initialize_ParseFails) {
// CreateDemuxer("find_stream_info_fail.webm");
// demuxer_->Initialize(
-// NewExpectedStatusCB(DEMUXER_ERROR_COULD_NOT_PARSE));
+// &host_, NewExpectedStatusCB(DEMUXER_ERROR_COULD_NOT_PARSE));
// message_loop_.RunAllPending();
//}
@@ -169,7 +168,7 @@ TEST_F(FFmpegDemuxerTest, Initialize_NoStreams) {
CreateDemuxer("no_streams.webm");
EXPECT_CALL(host_, SetCurrentReadPosition(_));
demuxer_->Initialize(
- NewExpectedStatusCB(DEMUXER_ERROR_NO_SUPPORTED_STREAMS));
+ &host_, NewExpectedStatusCB(DEMUXER_ERROR_NO_SUPPORTED_STREAMS));
message_loop_.RunAllPending();
}
@@ -177,7 +176,7 @@ TEST_F(FFmpegDemuxerTest, Initialize_NoAudioVideo) {
// Open a file containing streams but none of which are audio/video streams.
CreateDemuxer("no_audio_video.webm");
demuxer_->Initialize(
- NewExpectedStatusCB(DEMUXER_ERROR_NO_SUPPORTED_STREAMS));
+ &host_, NewExpectedStatusCB(DEMUXER_ERROR_NO_SUPPORTED_STREAMS));
message_loop_.RunAllPending();
}
@@ -558,82 +557,49 @@ TEST_F(FFmpegDemuxerTest, DisableAudioStream) {
EXPECT_TRUE(reader->buffer()->IsEndOfStream());
}
-class MockFFmpegDemuxer : public FFmpegDemuxer {
- public:
- MockFFmpegDemuxer(MessageLoop* message_loop,
- const scoped_refptr<DataSource>& data_source)
- : FFmpegDemuxer(message_loop, data_source, true) {
- }
- virtual ~MockFFmpegDemuxer() {}
-
- MOCK_METHOD0(WaitForRead, int());
- MOCK_METHOD1(SignalReadCompleted, void(int size));
-
- private:
- DISALLOW_COPY_AND_ASSIGN(MockFFmpegDemuxer);
-};
-
-// A gmock helper method to execute the callback and deletes it.
-void RunCallback(int size, const DataSource::ReadCB& callback) {
- DCHECK(!callback.is_null());
- callback.Run(size);
-}
-
TEST_F(FFmpegDemuxerTest, ProtocolRead) {
- scoped_refptr<StrictMock<MockDataSource> > data_source =
- new StrictMock<MockDataSource>();
+ CreateDemuxer("bear-320x240.webm");
+ InitializeDemuxer();
- EXPECT_CALL(*data_source, Stop(_))
- .WillRepeatedly(Invoke(&RunStopFilterCallback));
+ // Set read head to zero as Initialize() will have parsed a bit of the file.
+ int64 position = 0;
+ EXPECT_TRUE(demuxer_->SetPosition(0));
+ EXPECT_TRUE(demuxer_->GetPosition(&position));
+ EXPECT_EQ(0, position);
- // Creates a demuxer.
- scoped_refptr<MockFFmpegDemuxer> demuxer(
- new MockFFmpegDemuxer(&message_loop_, data_source));
- demuxer->set_host(&host_);
+ // Read 32 bytes from offset zero and verify position.
+ uint8 buffer[32];
+ EXPECT_EQ(32u, demuxer_->Read(32, buffer));
+ EXPECT_EQ(32, current_read_position_);
+ EXPECT_TRUE(demuxer_->GetPosition(&position));
+ EXPECT_EQ(32, position);
- uint8 kBuffer[1];
- InSequence s;
- // Actions taken in the first read.
- EXPECT_CALL(*data_source, GetSize(_))
- .WillOnce(DoAll(SetArgPointee<0>(1024), Return(true)));
- EXPECT_CALL(*data_source, Read(0, 512, kBuffer, _))
- .WillOnce(WithArgs<1, 3>(Invoke(&RunCallback)));
- EXPECT_CALL(*demuxer, SignalReadCompleted(512));
- EXPECT_CALL(*demuxer, WaitForRead())
- .WillOnce(Return(512));
- EXPECT_CALL(host_, SetCurrentReadPosition(512));
-
- // Second read.
- EXPECT_CALL(*data_source, GetSize(_))
- .WillOnce(DoAll(SetArgPointee<0>(1024), Return(true)));
- EXPECT_CALL(*data_source, Read(512, 512, kBuffer, _))
- .WillOnce(WithArgs<1, 3>(Invoke(&RunCallback)));
- EXPECT_CALL(*demuxer, SignalReadCompleted(512));
- EXPECT_CALL(*demuxer, WaitForRead())
- .WillOnce(Return(512));
- EXPECT_CALL(host_, SetCurrentReadPosition(1024));
-
- // Third read will fail because it exceeds the file size.
- EXPECT_CALL(*data_source, GetSize(_))
- .WillOnce(DoAll(SetArgPointee<0>(1024), Return(true)));
-
- // First read.
- EXPECT_EQ(512u, demuxer->Read(512, kBuffer));
- int64 position;
- EXPECT_TRUE(demuxer->GetPosition(&position));
- EXPECT_EQ(512, position);
+ // Read an additional 32 bytes and verify position.
+ EXPECT_EQ(32u, demuxer_->Read(32, buffer));
+ EXPECT_EQ(64, current_read_position_);
+ EXPECT_TRUE(demuxer_->GetPosition(&position));
+ EXPECT_EQ(64, position);
- // Second read.
- EXPECT_EQ(512u, demuxer->Read(512, kBuffer));
- EXPECT_TRUE(demuxer->GetPosition(&position));
- EXPECT_EQ(1024, position);
+ // Seek to end and read until EOF.
+ int64 size = 0;
+ EXPECT_TRUE(demuxer_->GetSize(&size));
+ EXPECT_TRUE(demuxer_->SetPosition(size - 48));
+ EXPECT_EQ(32u, demuxer_->Read(32, buffer));
+ EXPECT_EQ(size - 16, current_read_position_);
+ EXPECT_TRUE(demuxer_->GetPosition(&position));
+ EXPECT_EQ(size - 16, position);
+
+ EXPECT_EQ(16u, demuxer_->Read(32, buffer));
+ EXPECT_EQ(size, current_read_position_);
+ EXPECT_TRUE(demuxer_->GetPosition(&position));
+ EXPECT_EQ(size, position);
- // Third read will get an end-of-file error, which is represented as zero.
- EXPECT_EQ(0u, demuxer->Read(512, kBuffer));
+ EXPECT_EQ(0u, demuxer_->Read(32, buffer));
+ EXPECT_EQ(size, current_read_position_);
+ EXPECT_TRUE(demuxer_->GetPosition(&position));
+ EXPECT_EQ(size, position);
- // This read complete signal is generated when demuxer is stopped.
- EXPECT_CALL(*demuxer, SignalReadCompleted(DataSource::kReadError));
- demuxer->Stop(NewExpectedClosure());
+ demuxer_->Stop(NewExpectedClosure());
message_loop_.RunAllPending();
}
« no previous file with comments | « media/filters/ffmpeg_demuxer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698