summaryrefslogtreecommitdiffstats
path: root/media/base/pipeline_impl_unittest.cc
diff options
context:
space:
mode:
authorralphl@chromium.org <ralphl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-19 05:04:33 +0000
committerralphl@chromium.org <ralphl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-19 05:04:33 +0000
commit082d3cae492040ea1a433b067d82654e98d59bf4 (patch)
tree63434ee91c91de04448f61e857b2b8c004e8cd39 /media/base/pipeline_impl_unittest.cc
parent2e5e02fb69357d0030f27eca29d12df0f779d649 (diff)
downloadchromium_src-082d3cae492040ea1a433b067d82654e98d59bf4.zip
chromium_src-082d3cae492040ea1a433b067d82654e98d59bf4.tar.gz
chromium_src-082d3cae492040ea1a433b067d82654e98d59bf4.tar.bz2
Fixes a bug in the media pipeline that resulted in the video dimensions never getting set. Includes a new unit test, along with new
mocks for a video decoder and video renderer. Review URL: http://codereview.chromium.org/20326 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10006 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/base/pipeline_impl_unittest.cc')
-rw-r--r--media/base/pipeline_impl_unittest.cc71
1 files changed, 64 insertions, 7 deletions
diff --git a/media/base/pipeline_impl_unittest.cc b/media/base/pipeline_impl_unittest.cc
index 53c29ba..dbaedcc 100644
--- a/media/base/pipeline_impl_unittest.cc
+++ b/media/base/pipeline_impl_unittest.cc
@@ -24,13 +24,33 @@ using media::MockAudioDecoder;
using media::MockAudioRenderer;
using media::MockDataSource;
using media::MockDemuxer;
+using media::MockFilterConfig;
+using media::MockVideoDecoder;
+using media::MockVideoRenderer;
using media::PipelineImpl;
+namespace {
+
+void AddAllMockFilters(FilterFactoryCollection* factories,
+ const MockFilterConfig* config) {
+ factories->AddFactory(MockDataSource::CreateFactory(config));
+ factories->AddFactory(MockDemuxer::CreateFactory(config));
+ factories->AddFactory(MockAudioDecoder::CreateFactory(config));
+ factories->AddFactory(MockAudioRenderer::CreateFactory(config));
+ factories->AddFactory(MockVideoDecoder::CreateFactory(config));
+ factories->AddFactory(MockVideoRenderer::CreateFactory(config));
+}
+
+} // namespace
+
+// TODO(ralphl): Get rid of single character variable names in these tests.
TEST(PipelineImplTest, Initialization) {
std::string u("");
PipelineImpl p;
InitializationHelper h;
- h.Start(&p, MockDataSource::CreateFactory(media::MOCK_FILTER_NEVER_INIT), u);
+ MockFilterConfig config;
+ config.data_source_behavior = media::MOCK_DATA_SOURCE_NEVER_INIT;
+ h.Start(&p, MockDataSource::CreateFactory(&config), u);
h.TimedWait(base::TimeDelta::FromMilliseconds(300));
EXPECT_TRUE(h.waiting_for_callback());
EXPECT_FALSE(p.IsInitialized());
@@ -40,7 +60,17 @@ TEST(PipelineImplTest, Initialization) {
EXPECT_FALSE(h.callback_success_status());
EXPECT_TRUE(media::PIPELINE_OK == p.GetError());
- h.Start(&p, MockDataSource::CreateFactory(media::MOCK_FILTER_TASK_INIT), u);
+ config.data_source_behavior = media::MOCK_DATA_SOURCE_TASK_INIT;
+ h.Start(&p, MockDataSource::CreateFactory(&config), u);
+ h.TimedWait(base::TimeDelta::FromSeconds(5));
+ EXPECT_FALSE(h.waiting_for_callback());
+ EXPECT_FALSE(h.callback_success_status());
+ EXPECT_FALSE(p.IsInitialized());
+ EXPECT_FALSE(media::PIPELINE_OK == p.GetError());
+ p.Stop();
+
+ config.data_source_behavior = media::MOCK_DATA_SOURCE_ERROR_IN_INIT;
+ h.Start(&p, MockDataSource::CreateFactory(&config), u);
h.TimedWait(base::TimeDelta::FromSeconds(5));
EXPECT_FALSE(h.waiting_for_callback());
EXPECT_FALSE(h.callback_success_status());
@@ -49,14 +79,36 @@ TEST(PipelineImplTest, Initialization) {
p.Stop();
}
-TEST(PipelineImplTest, FullMockPipeline) {
+TEST(PipelineImplTest, MockAudioPipeline) {
+ std::string url("");
+ PipelineImpl p;
+ MockFilterConfig config;
+ config.has_video = false;
+ scoped_refptr<FilterFactoryCollection> c = new FilterFactoryCollection();
+ AddAllMockFilters(c, &config);
+ InitializationHelper h;
+ h.Start(&p, c, url);
+ h.TimedWait(base::TimeDelta::FromSeconds(5));
+ EXPECT_FALSE(h.waiting_for_callback());
+ EXPECT_TRUE(h.callback_success_status());
+ EXPECT_TRUE(p.IsInitialized());
+ EXPECT_TRUE(media::PIPELINE_OK == p.GetError());
+ size_t width, height;
+ p.GetVideoSize(&width, &height);
+ EXPECT_EQ(0u, width);
+ EXPECT_EQ(0u, height);
+ p.SetPlaybackRate(1.0f);
+ p.SetVolume(0.5f);
+ p.Stop();
+ EXPECT_FALSE(p.IsInitialized());
+}
+
+TEST(PipelineImplTest, MockVideoPipeline) {
std::string url("");
PipelineImpl p;
scoped_refptr<FilterFactoryCollection> c = new FilterFactoryCollection();
- c->AddFactory(MockDataSource::CreateFactory(media::MOCK_FILTER_NORMAL_INIT));
- c->AddFactory(MockDemuxer::CreateFactory());
- c->AddFactory(MockAudioDecoder::CreateFactory());
- c->AddFactory(MockAudioRenderer::CreateFactory());
+ MockFilterConfig config;
+ AddAllMockFilters(c, &config);
InitializationHelper h;
h.Start(&p, c, url);
h.TimedWait(base::TimeDelta::FromSeconds(5));
@@ -64,8 +116,13 @@ TEST(PipelineImplTest, FullMockPipeline) {
EXPECT_TRUE(h.callback_success_status());
EXPECT_TRUE(p.IsInitialized());
EXPECT_TRUE(media::PIPELINE_OK == p.GetError());
+ size_t width, height;
+ p.GetVideoSize(&width, &height);
+ EXPECT_EQ(config.video_width, width);
+ EXPECT_EQ(config.video_height, height);
p.SetPlaybackRate(1.0f);
p.SetVolume(0.5f);
p.Stop();
EXPECT_FALSE(p.IsInitialized());
}
+