diff options
author | ralphl@chromium.org <ralphl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-19 05:04:33 +0000 |
---|---|---|
committer | ralphl@chromium.org <ralphl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-19 05:04:33 +0000 |
commit | 082d3cae492040ea1a433b067d82654e98d59bf4 (patch) | |
tree | 63434ee91c91de04448f61e857b2b8c004e8cd39 /media/base/pipeline_impl_unittest.cc | |
parent | 2e5e02fb69357d0030f27eca29d12df0f779d649 (diff) | |
download | chromium_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.cc | 71 |
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()); } + |