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

Side by Side Diff: chromecast/media/cma/pipeline/audio_video_pipeline_impl_unittest.cc

Issue 1257013003: Load CMA backend from shared library (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 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
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/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/message_loop/message_loop.h" 11 #include "base/message_loop/message_loop.h"
12 #include "base/single_thread_task_runner.h" 12 #include "base/single_thread_task_runner.h"
13 #include "base/thread_task_runner_handle.h" 13 #include "base/thread_task_runner_handle.h"
14 #include "base/time/time.h" 14 #include "base/time/time.h"
15 #include "chromecast/media/cma/backend/audio_pipeline_device.h" 15 #include "chromecast/base/task_runner_impl.h"
16 #include "chromecast/media/cma/backend/media_clock_device.h" 16 #include "chromecast/media/cma/backend/media_pipeline_backend_default.h"
17 #include "chromecast/media/cma/backend/media_pipeline_device.h"
18 #include "chromecast/media/cma/backend/media_pipeline_device_factory_default.h"
19 #include "chromecast/media/cma/base/buffering_controller.h" 17 #include "chromecast/media/cma/base/buffering_controller.h"
20 #include "chromecast/media/cma/base/decoder_buffer_base.h" 18 #include "chromecast/media/cma/base/decoder_buffer_base.h"
21 #include "chromecast/media/cma/pipeline/audio_pipeline_impl.h" 19 #include "chromecast/media/cma/pipeline/audio_pipeline_impl.h"
22 #include "chromecast/media/cma/pipeline/av_pipeline_client.h" 20 #include "chromecast/media/cma/pipeline/av_pipeline_client.h"
23 #include "chromecast/media/cma/pipeline/media_pipeline_impl.h" 21 #include "chromecast/media/cma/pipeline/media_pipeline_impl.h"
24 #include "chromecast/media/cma/pipeline/video_pipeline_client.h" 22 #include "chromecast/media/cma/pipeline/video_pipeline_client.h"
25 #include "chromecast/media/cma/pipeline/video_pipeline_impl.h" 23 #include "chromecast/media/cma/pipeline/video_pipeline_impl.h"
26 #include "chromecast/media/cma/test/frame_generator_for_test.h" 24 #include "chromecast/media/cma/test/frame_generator_for_test.h"
27 #include "chromecast/media/cma/test/mock_frame_provider.h" 25 #include "chromecast/media/cma/test/mock_frame_provider.h"
26 #include "chromecast/public/media/audio_pipeline_device.h"
27 #include "chromecast/public/media/media_clock_device.h"
28 #include "media/base/audio_decoder_config.h" 28 #include "media/base/audio_decoder_config.h"
29 #include "media/base/buffers.h" 29 #include "media/base/buffers.h"
30 #include "media/base/decoder_buffer.h" 30 #include "media/base/decoder_buffer.h"
31 #include "media/base/video_decoder_config.h" 31 #include "media/base/video_decoder_config.h"
32 #include "testing/gtest/include/gtest/gtest.h" 32 #include "testing/gtest/include/gtest/gtest.h"
33 33
34 namespace chromecast { 34 namespace chromecast {
35 namespace media { 35 namespace media {
36 36
37 class AudioVideoPipelineImplTest : public testing::Test { 37 class AudioVideoPipelineImplTest : public testing::Test {
38 public: 38 public:
39 AudioVideoPipelineImplTest(); 39 AudioVideoPipelineImplTest();
40 ~AudioVideoPipelineImplTest() override; 40 ~AudioVideoPipelineImplTest() override;
41 41
42 void Initialize(const base::Closure& done_cb, 42 void Initialize(const base::Closure& done_cb,
43 ::media::PipelineStatus status, 43 ::media::PipelineStatus status,
44 bool is_audio); 44 bool is_audio);
45 void StartPlaying(const base::Closure& done_cb, 45 void StartPlaying(const base::Closure& done_cb,
46 ::media::PipelineStatus status); 46 ::media::PipelineStatus status);
47 47
48 void Flush(const base::Closure& done_cb, ::media::PipelineStatus status); 48 void Flush(const base::Closure& done_cb, ::media::PipelineStatus status);
49 void Stop(const base::Closure& done_cb, ::media::PipelineStatus status); 49 void Stop(const base::Closure& done_cb, ::media::PipelineStatus status);
50 50
51 void OnEos(); 51 void OnEos();
52 52
53 base::Closure task_after_eos_cb_; 53 base::Closure task_after_eos_cb_;
54 scoped_ptr<base::MessageLoop> message_loop_;
54 55
55 private: 56 private:
57 scoped_ptr<TaskRunnerImpl> task_runner_;
56 scoped_ptr<MediaPipelineImpl> media_pipeline_; 58 scoped_ptr<MediaPipelineImpl> media_pipeline_;
57 59
58 DISALLOW_COPY_AND_ASSIGN(AudioVideoPipelineImplTest); 60 DISALLOW_COPY_AND_ASSIGN(AudioVideoPipelineImplTest);
59 }; 61 };
60 62
61 AudioVideoPipelineImplTest::AudioVideoPipelineImplTest() 63 AudioVideoPipelineImplTest::AudioVideoPipelineImplTest()
62 : media_pipeline_(new MediaPipelineImpl()) { 64 : message_loop_(new base::MessageLoop()),
63 scoped_ptr<MediaPipelineDeviceFactory> factory = 65 task_runner_(new TaskRunnerImpl()),
64 make_scoped_ptr(new MediaPipelineDeviceFactoryDefault()); 66 media_pipeline_(new MediaPipelineImpl()) {
65 scoped_ptr<MediaPipelineDevice> media_pipeline_device = 67 MediaPipelineDeviceParams params(task_runner_.get());
66 make_scoped_ptr(new MediaPipelineDevice(factory.Pass())); 68 scoped_ptr<MediaPipelineBackend> backend =
67 media_pipeline_->Initialize(kLoadTypeURL, media_pipeline_device.Pass()); 69 make_scoped_ptr(new MediaPipelineBackendDefault(params));
70 media_pipeline_->Initialize(kLoadTypeURL, backend.Pass());
68 media_pipeline_->SetPlaybackRate(1.0); 71 media_pipeline_->SetPlaybackRate(1.0);
69 } 72 }
70 73
71 AudioVideoPipelineImplTest::~AudioVideoPipelineImplTest() { 74 AudioVideoPipelineImplTest::~AudioVideoPipelineImplTest() {
72 } 75 }
73 76
74 void AudioVideoPipelineImplTest::Initialize( 77 void AudioVideoPipelineImplTest::Initialize(
75 const base::Closure& done_cb, 78 const base::Closure& done_cb,
76 ::media::PipelineStatus status, 79 ::media::PipelineStatus status,
77 bool is_audio) { 80 bool is_audio) {
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 base::MessageLoop::current()->QuitWhenIdle(); 177 base::MessageLoop::current()->QuitWhenIdle();
175 } 178 }
176 179
177 180
178 TEST_F(AudioVideoPipelineImplTest, AudioFullCycleInitToStop) { 181 TEST_F(AudioVideoPipelineImplTest, AudioFullCycleInitToStop) {
179 bool is_audio = true; 182 bool is_audio = true;
180 task_after_eos_cb_ = base::Bind( 183 task_after_eos_cb_ = base::Bind(
181 &AudioVideoPipelineImplTest::Flush, base::Unretained(this), 184 &AudioVideoPipelineImplTest::Flush, base::Unretained(this),
182 base::Closure(), ::media::PIPELINE_OK); 185 base::Closure(), ::media::PIPELINE_OK);
183 186
184 scoped_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); 187 message_loop_->PostTask(FROM_HERE,
185 message_loop->PostTask( 188 base::Bind(&AudioVideoPipelineImplTest::Initialize,
186 FROM_HERE, 189 base::Unretained(this), base::Closure(),
187 base::Bind(&AudioVideoPipelineImplTest::Initialize, 190 ::media::PIPELINE_OK, is_audio));
188 base::Unretained(this), 191 message_loop_->Run();
189 base::Closure(),
190 ::media::PIPELINE_OK, is_audio));
191 message_loop->Run();
192 }; 192 };
193 193
194 TEST_F(AudioVideoPipelineImplTest, VideoFullCycleInitToStop) { 194 TEST_F(AudioVideoPipelineImplTest, VideoFullCycleInitToStop) {
195 bool is_audio = false; 195 bool is_audio = false;
196 task_after_eos_cb_ = base::Bind( 196 task_after_eos_cb_ = base::Bind(
197 &AudioVideoPipelineImplTest::Flush, base::Unretained(this), 197 &AudioVideoPipelineImplTest::Flush, base::Unretained(this),
198 base::Closure(), ::media::PIPELINE_OK); 198 base::Closure(), ::media::PIPELINE_OK);
199 199
200 scoped_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); 200 message_loop_->PostTask(FROM_HERE,
201 message_loop->PostTask( 201 base::Bind(&AudioVideoPipelineImplTest::Initialize,
202 FROM_HERE, 202 base::Unretained(this), base::Closure(),
203 base::Bind(&AudioVideoPipelineImplTest::Initialize, 203 ::media::PIPELINE_OK, is_audio));
204 base::Unretained(this), 204 message_loop_->Run();
205 base::Closure(),
206 ::media::PIPELINE_OK, is_audio));
207 message_loop->Run();
208 }; 205 };
209 206
210 } // namespace media 207 } // namespace media
211 } // namespace chromecast 208 } // namespace chromecast
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698