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

Side by Side Diff: media/base/pipeline_impl_unittest.cc

Issue 20326: Fixes a bug in the media pipeline that resulted in the video dimensions never... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 10 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/base/pipeline_impl.cc ('k') | media/filters/file_data_source_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <string> 5 #include <string>
6 6
7 #include "base/platform_thread.h" 7 #include "base/platform_thread.h"
8 #include "base/time.h" 8 #include "base/time.h"
9 #include "base/waitable_event.h" 9 #include "base/waitable_event.h"
10 #include "media/base/pipeline_impl.h" 10 #include "media/base/pipeline_impl.h"
11 #include "media/base/media_format.h" 11 #include "media/base/media_format.h"
12 #include "media/base/filters.h" 12 #include "media/base/filters.h"
13 #include "media/base/factory.h" 13 #include "media/base/factory.h"
14 #include "media/base/filter_host.h" 14 #include "media/base/filter_host.h"
15 #include "media/base/mock_media_filters.h" 15 #include "media/base/mock_media_filters.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 17
18 using media::FilterFactory; 18 using media::FilterFactory;
19 using media::FilterFactoryCollection; 19 using media::FilterFactoryCollection;
20 using media::FilterHost; 20 using media::FilterHost;
21 using media::InitializationHelper; 21 using media::InitializationHelper;
22 using media::MediaFormat; 22 using media::MediaFormat;
23 using media::MockAudioDecoder; 23 using media::MockAudioDecoder;
24 using media::MockAudioRenderer; 24 using media::MockAudioRenderer;
25 using media::MockDataSource; 25 using media::MockDataSource;
26 using media::MockDemuxer; 26 using media::MockDemuxer;
27 using media::MockFilterConfig;
28 using media::MockVideoDecoder;
29 using media::MockVideoRenderer;
27 using media::PipelineImpl; 30 using media::PipelineImpl;
28 31
32 namespace {
33
34 void AddAllMockFilters(FilterFactoryCollection* factories,
35 const MockFilterConfig* config) {
36 factories->AddFactory(MockDataSource::CreateFactory(config));
37 factories->AddFactory(MockDemuxer::CreateFactory(config));
38 factories->AddFactory(MockAudioDecoder::CreateFactory(config));
39 factories->AddFactory(MockAudioRenderer::CreateFactory(config));
40 factories->AddFactory(MockVideoDecoder::CreateFactory(config));
41 factories->AddFactory(MockVideoRenderer::CreateFactory(config));
42 }
43
44 } // namespace
45
46 // TODO(ralphl): Get rid of single character variable names in these tests.
29 TEST(PipelineImplTest, Initialization) { 47 TEST(PipelineImplTest, Initialization) {
30 std::string u(""); 48 std::string u("");
31 PipelineImpl p; 49 PipelineImpl p;
32 InitializationHelper h; 50 InitializationHelper h;
33 h.Start(&p, MockDataSource::CreateFactory(media::MOCK_FILTER_NEVER_INIT), u); 51 MockFilterConfig config;
52 config.data_source_behavior = media::MOCK_DATA_SOURCE_NEVER_INIT;
53 h.Start(&p, MockDataSource::CreateFactory(&config), u);
34 h.TimedWait(base::TimeDelta::FromMilliseconds(300)); 54 h.TimedWait(base::TimeDelta::FromMilliseconds(300));
35 EXPECT_TRUE(h.waiting_for_callback()); 55 EXPECT_TRUE(h.waiting_for_callback());
36 EXPECT_FALSE(p.IsInitialized()); 56 EXPECT_FALSE(p.IsInitialized());
37 EXPECT_TRUE(media::PIPELINE_OK == p.GetError()); 57 EXPECT_TRUE(media::PIPELINE_OK == p.GetError());
38 p.Stop(); 58 p.Stop();
39 EXPECT_FALSE(h.waiting_for_callback()); 59 EXPECT_FALSE(h.waiting_for_callback());
40 EXPECT_FALSE(h.callback_success_status()); 60 EXPECT_FALSE(h.callback_success_status());
41 EXPECT_TRUE(media::PIPELINE_OK == p.GetError()); 61 EXPECT_TRUE(media::PIPELINE_OK == p.GetError());
42 62
43 h.Start(&p, MockDataSource::CreateFactory(media::MOCK_FILTER_TASK_INIT), u); 63 config.data_source_behavior = media::MOCK_DATA_SOURCE_TASK_INIT;
64 h.Start(&p, MockDataSource::CreateFactory(&config), u);
65 h.TimedWait(base::TimeDelta::FromSeconds(5));
66 EXPECT_FALSE(h.waiting_for_callback());
67 EXPECT_FALSE(h.callback_success_status());
68 EXPECT_FALSE(p.IsInitialized());
69 EXPECT_FALSE(media::PIPELINE_OK == p.GetError());
70 p.Stop();
71
72 config.data_source_behavior = media::MOCK_DATA_SOURCE_ERROR_IN_INIT;
73 h.Start(&p, MockDataSource::CreateFactory(&config), u);
44 h.TimedWait(base::TimeDelta::FromSeconds(5)); 74 h.TimedWait(base::TimeDelta::FromSeconds(5));
45 EXPECT_FALSE(h.waiting_for_callback()); 75 EXPECT_FALSE(h.waiting_for_callback());
46 EXPECT_FALSE(h.callback_success_status()); 76 EXPECT_FALSE(h.callback_success_status());
47 EXPECT_FALSE(p.IsInitialized()); 77 EXPECT_FALSE(p.IsInitialized());
48 EXPECT_FALSE(media::PIPELINE_OK == p.GetError()); 78 EXPECT_FALSE(media::PIPELINE_OK == p.GetError());
49 p.Stop(); 79 p.Stop();
50 } 80 }
51 81
52 TEST(PipelineImplTest, FullMockPipeline) { 82 TEST(PipelineImplTest, MockAudioPipeline) {
53 std::string url(""); 83 std::string url("");
54 PipelineImpl p; 84 PipelineImpl p;
85 MockFilterConfig config;
86 config.set_no_video();
55 scoped_refptr<FilterFactoryCollection> c = new FilterFactoryCollection(); 87 scoped_refptr<FilterFactoryCollection> c = new FilterFactoryCollection();
56 c->AddFactory(MockDataSource::CreateFactory(media::MOCK_FILTER_NORMAL_INIT)); 88 AddAllMockFilters(c, &config);
57 c->AddFactory(MockDemuxer::CreateFactory());
58 c->AddFactory(MockAudioDecoder::CreateFactory());
59 c->AddFactory(MockAudioRenderer::CreateFactory());
60 InitializationHelper h; 89 InitializationHelper h;
61 h.Start(&p, c, url); 90 h.Start(&p, c, url);
62 h.TimedWait(base::TimeDelta::FromSeconds(5)); 91 h.TimedWait(base::TimeDelta::FromSeconds(5));
63 EXPECT_FALSE(h.waiting_for_callback()); 92 EXPECT_FALSE(h.waiting_for_callback());
64 EXPECT_TRUE(h.callback_success_status()); 93 EXPECT_TRUE(h.callback_success_status());
65 EXPECT_TRUE(p.IsInitialized()); 94 EXPECT_TRUE(p.IsInitialized());
66 EXPECT_TRUE(media::PIPELINE_OK == p.GetError()); 95 EXPECT_TRUE(media::PIPELINE_OK == p.GetError());
96 size_t width, height;
97 p.GetVideoSize(&width, &height);
98 EXPECT_EQ(0u, width);
99 EXPECT_EQ(0u, height);
67 p.SetPlaybackRate(1.0f); 100 p.SetPlaybackRate(1.0f);
68 p.SetVolume(0.5f); 101 p.SetVolume(0.5f);
69 p.Stop(); 102 p.Stop();
70 EXPECT_FALSE(p.IsInitialized()); 103 EXPECT_FALSE(p.IsInitialized());
71 } 104 }
105
106 TEST(PipelineImplTest, MockVideoPipeline) {
107 std::string url("");
108 PipelineImpl p;
109 scoped_refptr<FilterFactoryCollection> c = new FilterFactoryCollection();
110 MockFilterConfig config;
111 AddAllMockFilters(c, &config);
112 InitializationHelper h;
113 h.Start(&p, c, url);
114 h.TimedWait(base::TimeDelta::FromSeconds(5));
115 EXPECT_FALSE(h.waiting_for_callback());
116 EXPECT_TRUE(h.callback_success_status());
117 EXPECT_TRUE(p.IsInitialized());
118 EXPECT_TRUE(media::PIPELINE_OK == p.GetError());
119 size_t width, height;
120 p.GetVideoSize(&width, &height);
121 EXPECT_EQ(config.video_width, width);
122 EXPECT_EQ(config.video_height, height);
123 p.SetPlaybackRate(1.0f);
124 p.SetVolume(0.5f);
125 p.Stop();
126 EXPECT_FALSE(p.IsInitialized());
127 }
128
OLDNEW
« no previous file with comments | « media/base/pipeline_impl.cc ('k') | media/filters/file_data_source_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698