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

Side by Side Diff: chromecast/media/cma/backend/audio_video_pipeline_device_unittest.cc

Issue 1504923009: [Chromecast] Fix media unit tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Created 5 years 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 void Initialize(); 141 void Initialize();
142 142
143 void MonitorLoop(); 143 void MonitorLoop();
144 144
145 void OnPauseCompleted(); 145 void OnPauseCompleted();
146 146
147 scoped_ptr<TaskRunnerImpl> task_runner_; 147 scoped_ptr<TaskRunnerImpl> task_runner_;
148 scoped_ptr<MediaPipelineBackend> backend_; 148 scoped_ptr<MediaPipelineBackend> backend_;
149 scoped_ptr<BufferFeeder> audio_feeder_; 149 scoped_ptr<BufferFeeder> audio_feeder_;
150 scoped_ptr<BufferFeeder> video_feeder_; 150 scoped_ptr<BufferFeeder> video_feeder_;
151 bool stopped_;
151 152
152 // Current media time. 153 // Current media time.
153 base::TimeDelta pause_time_; 154 base::TimeDelta pause_time_;
154 155
155 // Pause settings 156 // Pause settings
156 std::vector<PauseInfo> pause_pattern_; 157 std::vector<PauseInfo> pause_pattern_;
157 int pause_pattern_idx_; 158 int pause_pattern_idx_;
158 159
159 DISALLOW_COPY_AND_ASSIGN(AudioVideoPipelineDeviceTest); 160 DISALLOW_COPY_AND_ASSIGN(AudioVideoPipelineDeviceTest);
160 }; 161 };
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 280
280 VLOG(2) << "Got " << buffers.size() << " video input frames"; 281 VLOG(2) << "Got " << buffers.size() << " video input frames";
281 scoped_ptr<BufferFeeder> feeder(new BufferFeeder(eos_cb)); 282 scoped_ptr<BufferFeeder> feeder(new BufferFeeder(eos_cb));
282 feeder->Initialize(decoder, buffers); 283 feeder->Initialize(decoder, buffers);
283 return feeder; 284 return feeder;
284 } 285 }
285 286
286 } // namespace 287 } // namespace
287 288
288 AudioVideoPipelineDeviceTest::AudioVideoPipelineDeviceTest() 289 AudioVideoPipelineDeviceTest::AudioVideoPipelineDeviceTest()
289 : pause_pattern_() {} 290 : stopped_(false), pause_pattern_() {}
290 291
291 AudioVideoPipelineDeviceTest::~AudioVideoPipelineDeviceTest() {} 292 AudioVideoPipelineDeviceTest::~AudioVideoPipelineDeviceTest() {}
292 293
293 void AudioVideoPipelineDeviceTest::AddPause(base::TimeDelta delay, 294 void AudioVideoPipelineDeviceTest::AddPause(base::TimeDelta delay,
294 base::TimeDelta length) { 295 base::TimeDelta length) {
295 pause_pattern_.push_back(PauseInfo(delay, length)); 296 pause_pattern_.push_back(PauseInfo(delay, length));
296 } 297 }
297 298
298 void AudioVideoPipelineDeviceTest::SetPausePattern( 299 void AudioVideoPipelineDeviceTest::SetPausePattern(
299 const std::vector<PauseInfo> pattern) { 300 const std::vector<PauseInfo> pattern) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 video_feeder_ = BufferFeeder::LoadVideo(backend_.get(), filename, 332 video_feeder_ = BufferFeeder::LoadVideo(backend_.get(), filename,
332 false /* raw_h264 */, eos_cb); 333 false /* raw_h264 */, eos_cb);
333 audio_feeder_ = BufferFeeder::LoadAudio(backend_.get(), filename, eos_cb); 334 audio_feeder_ = BufferFeeder::LoadAudio(backend_.get(), filename, eos_cb);
334 bool success = backend_->Initialize(); 335 bool success = backend_->Initialize();
335 ASSERT_TRUE(success); 336 ASSERT_TRUE(success);
336 } 337 }
337 338
338 void AudioVideoPipelineDeviceTest::Start() { 339 void AudioVideoPipelineDeviceTest::Start() {
339 pause_time_ = base::TimeDelta(); 340 pause_time_ = base::TimeDelta();
340 pause_pattern_idx_ = 0; 341 pause_pattern_idx_ = 0;
342 stopped_ = false;
341 343
342 if (audio_feeder_) 344 if (audio_feeder_)
343 audio_feeder_->Start(); 345 audio_feeder_->Start();
344 if (video_feeder_) 346 if (video_feeder_)
345 video_feeder_->Start(); 347 video_feeder_->Start();
346 348
347 backend_->Start(0); 349 backend_->Start(0);
348 350
349 base::ThreadTaskRunnerHandle::Get()->PostTask( 351 base::ThreadTaskRunnerHandle::Get()->PostTask(
350 FROM_HERE, base::Bind(&AudioVideoPipelineDeviceTest::MonitorLoop, 352 FROM_HERE, base::Bind(&AudioVideoPipelineDeviceTest::MonitorLoop,
351 base::Unretained(this))); 353 base::Unretained(this)));
352 } 354 }
353 355
354 void AudioVideoPipelineDeviceTest::OnEndOfStream() { 356 void AudioVideoPipelineDeviceTest::OnEndOfStream() {
355 if ((!audio_feeder_ || audio_feeder_->eos()) && 357 if ((!audio_feeder_ || audio_feeder_->eos()) &&
356 (!video_feeder_ || video_feeder_->eos())) { 358 (!video_feeder_ || video_feeder_->eos())) {
357 bool success = backend_->Stop(); 359 bool success = backend_->Stop();
360 stopped_ = true;
358 ASSERT_TRUE(success); 361 ASSERT_TRUE(success);
359 base::MessageLoop::current()->QuitWhenIdle(); 362 base::MessageLoop::current()->QuitWhenIdle();
360 } 363 }
361 } 364 }
362 365
363 void AudioVideoPipelineDeviceTest::MonitorLoop() { 366 void AudioVideoPipelineDeviceTest::MonitorLoop() {
364 // Backend is stopped, no need to monitor the loop any more. 367 // Backend is stopped, no need to monitor the loop any more.
365 if (!audio_feeder_ && !video_feeder_) 368 if (stopped_)
366 return; 369 return;
367 370
368 base::TimeDelta media_time = 371 base::TimeDelta media_time =
369 base::TimeDelta::FromMicroseconds(backend_->GetCurrentPts()); 372 base::TimeDelta::FromMicroseconds(backend_->GetCurrentPts());
370 373
371 if (!pause_pattern_.empty() && 374 if (!pause_pattern_.empty() &&
372 pause_pattern_[pause_pattern_idx_].delay >= base::TimeDelta() && 375 pause_pattern_[pause_pattern_idx_].delay >= base::TimeDelta() &&
373 media_time >= pause_time_ + pause_pattern_[pause_pattern_idx_].delay) { 376 media_time >= pause_time_ + pause_pattern_[pause_pattern_idx_].delay) {
374 // Do Pause 377 // Do Pause
375 backend_->Pause(); 378 backend_->Pause();
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 TEST_F(AudioVideoPipelineDeviceTest, WebmPlayback) { 476 TEST_F(AudioVideoPipelineDeviceTest, WebmPlayback) {
474 scoped_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); 477 scoped_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
475 478
476 ConfigureForFile("bear-640x360.webm"); 479 ConfigureForFile("bear-640x360.webm");
477 Start(); 480 Start();
478 message_loop->Run(); 481 message_loop->Run();
479 } 482 }
480 483
481 } // namespace media 484 } // namespace media
482 } // namespace chromecast 485 } // namespace chromecast
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698