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

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

Issue 164196: Merge 21937 - Nice and easy fix for the media clock interpolating past the du... (Closed) Base URL: svn://chrome-svn/chrome/branches/195/src/
Patch Set: Created 11 years, 4 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') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Modified: svn:mergeinfo
Merged /trunk/src/media/base/pipeline_impl_unittest.cc:r21937
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/waitable_event.h" 7 #include "base/waitable_event.h"
8 #include "media/base/pipeline_impl.h" 8 #include "media/base/pipeline_impl.h"
9 #include "media/base/media_format.h" 9 #include "media/base/media_format.h"
10 #include "media/base/filters.h" 10 #include "media/base/filters.h"
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 EXPECT_CALL(*mocks_->data_source(), Initialize("", NotNull())) 68 EXPECT_CALL(*mocks_->data_source(), Initialize("", NotNull()))
69 .WillOnce(Invoke(&RunFilterCallback)); 69 .WillOnce(Invoke(&RunFilterCallback));
70 EXPECT_CALL(*mocks_->data_source(), SetPlaybackRate(0.0f)); 70 EXPECT_CALL(*mocks_->data_source(), SetPlaybackRate(0.0f));
71 EXPECT_CALL(*mocks_->data_source(), Seek(base::TimeDelta(), NotNull())) 71 EXPECT_CALL(*mocks_->data_source(), Seek(base::TimeDelta(), NotNull()))
72 .WillOnce(Invoke(&RunFilterCallback)); 72 .WillOnce(Invoke(&RunFilterCallback));
73 EXPECT_CALL(*mocks_->data_source(), Stop()); 73 EXPECT_CALL(*mocks_->data_source(), Stop());
74 } 74 }
75 75
76 // Sets up expectations to allow the demuxer to initialize. 76 // Sets up expectations to allow the demuxer to initialize.
77 typedef std::vector<MockDemuxerStream*> MockDemuxerStreamVector; 77 typedef std::vector<MockDemuxerStream*> MockDemuxerStreamVector;
78 void InitializeDemuxer(MockDemuxerStreamVector* streams) { 78 void InitializeDemuxer(MockDemuxerStreamVector* streams,
79 const base::TimeDelta& duration) {
79 EXPECT_CALL(*mocks_->demuxer(), 80 EXPECT_CALL(*mocks_->demuxer(),
80 Initialize(mocks_->data_source(), NotNull())) 81 Initialize(mocks_->data_source(), NotNull()))
81 .WillOnce(Invoke(&RunFilterCallback)); 82 .WillOnce(DoAll(SetDuration(mocks_->data_source(), duration),
83 Invoke(&RunFilterCallback)));
82 EXPECT_CALL(*mocks_->demuxer(), GetNumberOfStreams()) 84 EXPECT_CALL(*mocks_->demuxer(), GetNumberOfStreams())
83 .WillRepeatedly(Return(streams->size())); 85 .WillRepeatedly(Return(streams->size()));
84 EXPECT_CALL(*mocks_->demuxer(), SetPlaybackRate(0.0f)); 86 EXPECT_CALL(*mocks_->demuxer(), SetPlaybackRate(0.0f));
85 EXPECT_CALL(*mocks_->demuxer(), Seek(base::TimeDelta(), NotNull())) 87 EXPECT_CALL(*mocks_->demuxer(), Seek(base::TimeDelta(), NotNull()))
86 .WillOnce(Invoke(&RunFilterCallback)); 88 .WillOnce(Invoke(&RunFilterCallback));
87 EXPECT_CALL(*mocks_->demuxer(), Stop()); 89 EXPECT_CALL(*mocks_->demuxer(), Stop());
88 90
89 // Configure the demuxer to return the streams. 91 // Configure the demuxer to return the streams.
90 for (size_t i = 0; i < streams->size(); ++i) { 92 for (size_t i = 0; i < streams->size(); ++i) {
91 scoped_refptr<DemuxerStream> stream = (*streams)[i]; 93 scoped_refptr<DemuxerStream> stream = (*streams)[i];
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 EXPECT_EQ(PIPELINE_ERROR_COULD_NOT_RENDER, pipeline_->GetError()); 272 EXPECT_EQ(PIPELINE_ERROR_COULD_NOT_RENDER, pipeline_->GetError());
271 } 273 }
272 274
273 TEST_F(PipelineImplTest, AudioStream) { 275 TEST_F(PipelineImplTest, AudioStream) {
274 scoped_refptr<StrictMock<MockDemuxerStream> > stream = 276 scoped_refptr<StrictMock<MockDemuxerStream> > stream =
275 new StrictMock<MockDemuxerStream>("audio/x-foo"); 277 new StrictMock<MockDemuxerStream>("audio/x-foo");
276 MockDemuxerStreamVector streams; 278 MockDemuxerStreamVector streams;
277 streams.push_back(stream); 279 streams.push_back(stream);
278 280
279 InitializeDataSource(); 281 InitializeDataSource();
280 InitializeDemuxer(&streams); 282 InitializeDemuxer(&streams, base::TimeDelta());
281 InitializeAudioDecoder(stream); 283 InitializeAudioDecoder(stream);
282 InitializeAudioRenderer(); 284 InitializeAudioRenderer();
283 285
284 InitializePipeline(); 286 InitializePipeline();
285 EXPECT_TRUE(pipeline_->IsInitialized()); 287 EXPECT_TRUE(pipeline_->IsInitialized());
286 EXPECT_EQ(PIPELINE_OK, pipeline_->GetError()); 288 EXPECT_EQ(PIPELINE_OK, pipeline_->GetError());
287 EXPECT_TRUE(pipeline_->IsRendered(media::mime_type::kMajorTypeAudio)); 289 EXPECT_TRUE(pipeline_->IsRendered(media::mime_type::kMajorTypeAudio));
288 EXPECT_FALSE(pipeline_->IsRendered(media::mime_type::kMajorTypeVideo)); 290 EXPECT_FALSE(pipeline_->IsRendered(media::mime_type::kMajorTypeVideo));
289 } 291 }
290 292
291 TEST_F(PipelineImplTest, VideoStream) { 293 TEST_F(PipelineImplTest, VideoStream) {
292 scoped_refptr<StrictMock<MockDemuxerStream> > stream = 294 scoped_refptr<StrictMock<MockDemuxerStream> > stream =
293 new StrictMock<MockDemuxerStream>("video/x-foo"); 295 new StrictMock<MockDemuxerStream>("video/x-foo");
294 MockDemuxerStreamVector streams; 296 MockDemuxerStreamVector streams;
295 streams.push_back(stream); 297 streams.push_back(stream);
296 298
297 InitializeDataSource(); 299 InitializeDataSource();
298 InitializeDemuxer(&streams); 300 InitializeDemuxer(&streams, base::TimeDelta());
299 InitializeVideoDecoder(stream); 301 InitializeVideoDecoder(stream);
300 InitializeVideoRenderer(); 302 InitializeVideoRenderer();
301 303
302 InitializePipeline(); 304 InitializePipeline();
303 EXPECT_TRUE(pipeline_->IsInitialized()); 305 EXPECT_TRUE(pipeline_->IsInitialized());
304 EXPECT_EQ(PIPELINE_OK, pipeline_->GetError()); 306 EXPECT_EQ(PIPELINE_OK, pipeline_->GetError());
305 EXPECT_FALSE(pipeline_->IsRendered(media::mime_type::kMajorTypeAudio)); 307 EXPECT_FALSE(pipeline_->IsRendered(media::mime_type::kMajorTypeAudio));
306 EXPECT_TRUE(pipeline_->IsRendered(media::mime_type::kMajorTypeVideo)); 308 EXPECT_TRUE(pipeline_->IsRendered(media::mime_type::kMajorTypeVideo));
307 } 309 }
308 310
309 TEST_F(PipelineImplTest, AudioVideoStream) { 311 TEST_F(PipelineImplTest, AudioVideoStream) {
310 scoped_refptr<StrictMock<MockDemuxerStream> > audio_stream = 312 scoped_refptr<StrictMock<MockDemuxerStream> > audio_stream =
311 new StrictMock<MockDemuxerStream>("audio/x-foo"); 313 new StrictMock<MockDemuxerStream>("audio/x-foo");
312 scoped_refptr<StrictMock<MockDemuxerStream> > video_stream = 314 scoped_refptr<StrictMock<MockDemuxerStream> > video_stream =
313 new StrictMock<MockDemuxerStream>("video/x-foo"); 315 new StrictMock<MockDemuxerStream>("video/x-foo");
314 MockDemuxerStreamVector streams; 316 MockDemuxerStreamVector streams;
315 streams.push_back(audio_stream); 317 streams.push_back(audio_stream);
316 streams.push_back(video_stream); 318 streams.push_back(video_stream);
317 319
318 InitializeDataSource(); 320 InitializeDataSource();
319 InitializeDemuxer(&streams); 321 InitializeDemuxer(&streams, base::TimeDelta());
320 InitializeAudioDecoder(audio_stream); 322 InitializeAudioDecoder(audio_stream);
321 InitializeAudioRenderer(); 323 InitializeAudioRenderer();
322 InitializeVideoDecoder(video_stream); 324 InitializeVideoDecoder(video_stream);
323 InitializeVideoRenderer(); 325 InitializeVideoRenderer();
324 326
325 InitializePipeline(); 327 InitializePipeline();
326 EXPECT_TRUE(pipeline_->IsInitialized()); 328 EXPECT_TRUE(pipeline_->IsInitialized());
327 EXPECT_EQ(PIPELINE_OK, pipeline_->GetError()); 329 EXPECT_EQ(PIPELINE_OK, pipeline_->GetError());
328 EXPECT_TRUE(pipeline_->IsRendered(media::mime_type::kMajorTypeAudio)); 330 EXPECT_TRUE(pipeline_->IsRendered(media::mime_type::kMajorTypeAudio));
329 EXPECT_TRUE(pipeline_->IsRendered(media::mime_type::kMajorTypeVideo)); 331 EXPECT_TRUE(pipeline_->IsRendered(media::mime_type::kMajorTypeVideo));
330 } 332 }
331 333
332 TEST_F(PipelineImplTest, Seek) { 334 TEST_F(PipelineImplTest, Seek) {
333 scoped_refptr<StrictMock<MockDemuxerStream> > audio_stream = 335 scoped_refptr<StrictMock<MockDemuxerStream> > audio_stream =
334 new StrictMock<MockDemuxerStream>("audio/x-foo"); 336 new StrictMock<MockDemuxerStream>("audio/x-foo");
335 scoped_refptr<StrictMock<MockDemuxerStream> > video_stream = 337 scoped_refptr<StrictMock<MockDemuxerStream> > video_stream =
336 new StrictMock<MockDemuxerStream>("video/x-foo"); 338 new StrictMock<MockDemuxerStream>("video/x-foo");
337 MockDemuxerStreamVector streams; 339 MockDemuxerStreamVector streams;
338 streams.push_back(audio_stream); 340 streams.push_back(audio_stream);
339 streams.push_back(video_stream); 341 streams.push_back(video_stream);
340 342
341 InitializeDataSource(); 343 InitializeDataSource();
342 InitializeDemuxer(&streams); 344 InitializeDemuxer(&streams, base::TimeDelta::FromSeconds(3000));
343 InitializeAudioDecoder(audio_stream); 345 InitializeAudioDecoder(audio_stream);
344 InitializeAudioRenderer(); 346 InitializeAudioRenderer();
345 InitializeVideoDecoder(video_stream); 347 InitializeVideoDecoder(video_stream);
346 InitializeVideoRenderer(); 348 InitializeVideoRenderer();
347 349
348 // Every filter should receive a call to Seek(). 350 // Every filter should receive a call to Seek().
349 base::TimeDelta expected = base::TimeDelta::FromSeconds(2000); 351 base::TimeDelta expected = base::TimeDelta::FromSeconds(2000);
350 EXPECT_CALL(*mocks_->data_source(), Seek(expected, NotNull())) 352 EXPECT_CALL(*mocks_->data_source(), Seek(expected, NotNull()))
351 .WillOnce(Invoke(&RunFilterCallback)); 353 .WillOnce(Invoke(&RunFilterCallback));
352 EXPECT_CALL(*mocks_->demuxer(), Seek(expected, NotNull())) 354 EXPECT_CALL(*mocks_->demuxer(), Seek(expected, NotNull()))
(...skipping 22 matching lines...) Expand all
375 EXPECT_TRUE(expected == pipeline_->GetCurrentTime()); 377 EXPECT_TRUE(expected == pipeline_->GetCurrentTime());
376 } 378 }
377 379
378 TEST_F(PipelineImplTest, SetVolume) { 380 TEST_F(PipelineImplTest, SetVolume) {
379 scoped_refptr<StrictMock<MockDemuxerStream> > audio_stream = 381 scoped_refptr<StrictMock<MockDemuxerStream> > audio_stream =
380 new StrictMock<MockDemuxerStream>("audio/x-foo"); 382 new StrictMock<MockDemuxerStream>("audio/x-foo");
381 MockDemuxerStreamVector streams; 383 MockDemuxerStreamVector streams;
382 streams.push_back(audio_stream); 384 streams.push_back(audio_stream);
383 385
384 InitializeDataSource(); 386 InitializeDataSource();
385 InitializeDemuxer(&streams); 387 InitializeDemuxer(&streams, base::TimeDelta());
386 InitializeAudioDecoder(audio_stream); 388 InitializeAudioDecoder(audio_stream);
387 InitializeAudioRenderer(); 389 InitializeAudioRenderer();
388 390
389 // The audio renderer should receive a call to SetVolume(). 391 // The audio renderer should receive a call to SetVolume().
390 float expected = 0.5f; 392 float expected = 0.5f;
391 EXPECT_CALL(*mocks_->audio_renderer(), SetVolume(expected)); 393 EXPECT_CALL(*mocks_->audio_renderer(), SetVolume(expected));
392 394
393 // Initialize then set volume! 395 // Initialize then set volume!
394 InitializePipeline(); 396 InitializePipeline();
395 pipeline_->SetVolume(expected); 397 pipeline_->SetVolume(expected);
396 } 398 }
397 399
398 } // namespace media 400 } // namespace media
OLDNEW
« no previous file with comments | « media/base/pipeline_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698