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

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

Issue 14348007: Reland: Remove reference counting from media::VideoDecoder and friends. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixes Created 7 years, 8 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.cc ('k') | media/base/video_decoder.h » ('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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <vector> 5 #include <vector>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "base/test/simple_test_clock.h" 10 #include "base/test/simple_test_clock.h"
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 // initialization is moved to a separate thread this test will become flaky. 80 // initialization is moved to a separate thread this test will become flaky.
81 class PipelineTest : public ::testing::Test { 81 class PipelineTest : public ::testing::Test {
82 public: 82 public:
83 PipelineTest() 83 PipelineTest()
84 : pipeline_(new Pipeline(message_loop_.message_loop_proxy(), 84 : pipeline_(new Pipeline(message_loop_.message_loop_proxy(),
85 new MediaLog())), 85 new MediaLog())),
86 filter_collection_(new FilterCollection()) { 86 filter_collection_(new FilterCollection()) {
87 demuxer_ = new MockDemuxer(); 87 demuxer_ = new MockDemuxer();
88 filter_collection_->SetDemuxer(demuxer_); 88 filter_collection_->SetDemuxer(demuxer_);
89 89
90 video_decoder_ = new MockVideoDecoder();
91 filter_collection_->GetVideoDecoders()->push_back(video_decoder_);
92
93 video_renderer_ = new MockVideoRenderer(); 90 video_renderer_ = new MockVideoRenderer();
94 scoped_ptr<VideoRenderer> video_renderer(video_renderer_); 91 scoped_ptr<VideoRenderer> video_renderer(video_renderer_);
95 filter_collection_->SetVideoRenderer(video_renderer.Pass()); 92 filter_collection_->SetVideoRenderer(video_renderer.Pass());
96 93
97 audio_renderer_ = new MockAudioRenderer(); 94 audio_renderer_ = new MockAudioRenderer();
98 scoped_ptr<AudioRenderer> audio_renderer(audio_renderer_); 95 scoped_ptr<AudioRenderer> audio_renderer(audio_renderer_);
99 filter_collection_->SetAudioRenderer(audio_renderer.Pass()); 96 filter_collection_->SetAudioRenderer(audio_renderer.Pass());
100 97
101 // InitializeDemuxer() adds overriding expectations for expected non-NULL 98 // InitializeDemuxer() adds overriding expectations for expected non-NULL
102 // streams. 99 // streams.
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 StrictMock<MockDemuxerStream>* CreateStream(DemuxerStream::Type type) { 156 StrictMock<MockDemuxerStream>* CreateStream(DemuxerStream::Type type) {
160 StrictMock<MockDemuxerStream>* stream = 157 StrictMock<MockDemuxerStream>* stream =
161 new StrictMock<MockDemuxerStream>(); 158 new StrictMock<MockDemuxerStream>();
162 EXPECT_CALL(*stream, type()) 159 EXPECT_CALL(*stream, type())
163 .WillRepeatedly(Return(type)); 160 .WillRepeatedly(Return(type));
164 return stream; 161 return stream;
165 } 162 }
166 163
167 // Sets up expectations to allow the video renderer to initialize. 164 // Sets up expectations to allow the video renderer to initialize.
168 void InitializeVideoRenderer(const scoped_refptr<DemuxerStream>& stream) { 165 void InitializeVideoRenderer(const scoped_refptr<DemuxerStream>& stream) {
169 EXPECT_CALL(*video_renderer_, 166 EXPECT_CALL(*video_renderer_, Initialize(stream, _, _, _, _, _, _, _, _))
170 Initialize(stream, _, _, _, _, _, _, _, _, _)) 167 .WillOnce(RunCallback<1>(PIPELINE_OK));
171 .WillOnce(RunCallback<2>(PIPELINE_OK));
172 EXPECT_CALL(*video_renderer_, SetPlaybackRate(0.0f)); 168 EXPECT_CALL(*video_renderer_, SetPlaybackRate(0.0f));
173 169
174 // Startup sequence. 170 // Startup sequence.
175 EXPECT_CALL(*video_renderer_, 171 EXPECT_CALL(*video_renderer_, Preroll(demuxer_->GetStartTime(), _))
176 Preroll(demuxer_->GetStartTime(), _))
177 .WillOnce(RunCallback<1>(PIPELINE_OK)); 172 .WillOnce(RunCallback<1>(PIPELINE_OK));
178 EXPECT_CALL(*video_renderer_, Play(_)) 173 EXPECT_CALL(*video_renderer_, Play(_))
179 .WillOnce(RunClosure<0>()); 174 .WillOnce(RunClosure<0>());
180 } 175 }
181 176
182 // Sets up expectations to allow the audio renderer to initialize. 177 // Sets up expectations to allow the audio renderer to initialize.
183 void InitializeAudioRenderer(const scoped_refptr<DemuxerStream>& stream, 178 void InitializeAudioRenderer(const scoped_refptr<DemuxerStream>& stream,
184 bool disable_after_init_cb) { 179 bool disable_after_init_cb) {
185 if (disable_after_init_cb) { 180 if (disable_after_init_cb) {
186 EXPECT_CALL(*audio_renderer_, Initialize(stream, _, _, _, _, _, _, _)) 181 EXPECT_CALL(*audio_renderer_, Initialize(stream, _, _, _, _, _, _, _))
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 } 289 }
295 290
296 // Fixture members. 291 // Fixture members.
297 StrictMock<CallbackHelper> callbacks_; 292 StrictMock<CallbackHelper> callbacks_;
298 base::SimpleTestClock test_clock_; 293 base::SimpleTestClock test_clock_;
299 MessageLoop message_loop_; 294 MessageLoop message_loop_;
300 scoped_refptr<Pipeline> pipeline_; 295 scoped_refptr<Pipeline> pipeline_;
301 296
302 scoped_ptr<FilterCollection> filter_collection_; 297 scoped_ptr<FilterCollection> filter_collection_;
303 scoped_refptr<MockDemuxer> demuxer_; 298 scoped_refptr<MockDemuxer> demuxer_;
304 scoped_refptr<MockVideoDecoder> video_decoder_;
305 MockVideoRenderer* video_renderer_; 299 MockVideoRenderer* video_renderer_;
306 MockAudioRenderer* audio_renderer_; 300 MockAudioRenderer* audio_renderer_;
307 scoped_refptr<StrictMock<MockDemuxerStream> > audio_stream_; 301 scoped_refptr<StrictMock<MockDemuxerStream> > audio_stream_;
308 scoped_refptr<StrictMock<MockDemuxerStream> > video_stream_; 302 scoped_refptr<StrictMock<MockDemuxerStream> > video_stream_;
309 AudioRenderer::TimeCB audio_time_cb_; 303 AudioRenderer::TimeCB audio_time_cb_;
310 VideoDecoderConfig video_decoder_config_; 304 VideoDecoderConfig video_decoder_config_;
311 305
312 private: 306 private:
313 DISALLOW_COPY_AND_ASSIGN(PipelineTest); 307 DISALLOW_COPY_AND_ASSIGN(PipelineTest);
314 }; 308 };
(...skipping 694 matching lines...) Expand 10 before | Expand all | Expand 10 after
1009 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); 1003 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>());
1010 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>()); 1004 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>());
1011 return status; 1005 return status;
1012 } 1006 }
1013 1007
1014 EXPECT_CALL(*audio_renderer_, Initialize(_, _, _, _, _, _, _, _)) 1008 EXPECT_CALL(*audio_renderer_, Initialize(_, _, _, _, _, _, _, _))
1015 .WillOnce(RunCallback<1>(PIPELINE_OK)); 1009 .WillOnce(RunCallback<1>(PIPELINE_OK));
1016 1010
1017 if (state == kInitVideoRenderer) { 1011 if (state == kInitVideoRenderer) {
1018 if (stop_or_error == kStop) { 1012 if (stop_or_error == kStop) {
1019 EXPECT_CALL(*video_renderer_, 1013 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _))
1020 Initialize(_, _, _, _, _, _, _, _, _, _))
1021 .WillOnce(DoAll(Stop(pipeline_, stop_cb), 1014 .WillOnce(DoAll(Stop(pipeline_, stop_cb),
1022 RunCallback<2>(PIPELINE_OK))); 1015 RunCallback<1>(PIPELINE_OK)));
1023 EXPECT_CALL(callbacks_, OnStop()); 1016 EXPECT_CALL(callbacks_, OnStop());
1024 } else { 1017 } else {
1025 status = PIPELINE_ERROR_INITIALIZATION_FAILED; 1018 status = PIPELINE_ERROR_INITIALIZATION_FAILED;
1026 EXPECT_CALL(*video_renderer_, 1019 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _))
1027 Initialize(_, _, _, _, _, _, _, _, _, _)) 1020 .WillOnce(RunCallback<1>(status));
1028 .WillOnce(RunCallback<2>(status));
1029 } 1021 }
1030 1022
1031 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); 1023 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>());
1032 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>()); 1024 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>());
1033 EXPECT_CALL(*video_renderer_, Stop(_)).WillOnce(RunClosure<0>()); 1025 EXPECT_CALL(*video_renderer_, Stop(_)).WillOnce(RunClosure<0>());
1034 return status; 1026 return status;
1035 } 1027 }
1036 1028
1037 EXPECT_CALL(*video_renderer_, 1029 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _))
1038 Initialize(_, _, _, _, _, _, _, _, _, _)) 1030 .WillOnce(RunCallback<1>(PIPELINE_OK));
1039 .WillOnce(RunCallback<2>(PIPELINE_OK));
1040 1031
1041 EXPECT_CALL(callbacks_, OnBufferingState(Pipeline::kHaveMetadata)); 1032 EXPECT_CALL(callbacks_, OnBufferingState(Pipeline::kHaveMetadata));
1042 1033
1043 // If we get here it's a successful initialization. 1034 // If we get here it's a successful initialization.
1044 EXPECT_CALL(*audio_renderer_, Preroll(base::TimeDelta(), _)) 1035 EXPECT_CALL(*audio_renderer_, Preroll(base::TimeDelta(), _))
1045 .WillOnce(RunCallback<1>(PIPELINE_OK)); 1036 .WillOnce(RunCallback<1>(PIPELINE_OK));
1046 EXPECT_CALL(*video_renderer_, Preroll(base::TimeDelta(), _)) 1037 EXPECT_CALL(*video_renderer_, Preroll(base::TimeDelta(), _))
1047 .WillOnce(RunCallback<1>(PIPELINE_OK)); 1038 .WillOnce(RunCallback<1>(PIPELINE_OK));
1048 1039
1049 EXPECT_CALL(*demuxer_, SetPlaybackRate(0.0f)); 1040 EXPECT_CALL(*demuxer_, SetPlaybackRate(0.0f));
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
1217 INSTANTIATE_TEARDOWN_TEST(Error, InitAudioRenderer); 1208 INSTANTIATE_TEARDOWN_TEST(Error, InitAudioRenderer);
1218 INSTANTIATE_TEARDOWN_TEST(Error, InitVideoRenderer); 1209 INSTANTIATE_TEARDOWN_TEST(Error, InitVideoRenderer);
1219 INSTANTIATE_TEARDOWN_TEST(Error, Pausing); 1210 INSTANTIATE_TEARDOWN_TEST(Error, Pausing);
1220 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); 1211 INSTANTIATE_TEARDOWN_TEST(Error, Flushing);
1221 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); 1212 INSTANTIATE_TEARDOWN_TEST(Error, Seeking);
1222 INSTANTIATE_TEARDOWN_TEST(Error, Prerolling); 1213 INSTANTIATE_TEARDOWN_TEST(Error, Prerolling);
1223 INSTANTIATE_TEARDOWN_TEST(Error, Starting); 1214 INSTANTIATE_TEARDOWN_TEST(Error, Starting);
1224 INSTANTIATE_TEARDOWN_TEST(Error, Playing); 1215 INSTANTIATE_TEARDOWN_TEST(Error, Playing);
1225 1216
1226 } // namespace media 1217 } // namespace media
OLDNEW
« no previous file with comments | « media/base/pipeline.cc ('k') | media/base/video_decoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698