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

Side by Side Diff: media/mojo/services/default_mojo_media_client.cc

Issue 1649933002: [Chromecast] Hook up mojo media pipeline. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixed chrome build with enable_mojo_media Created 4 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
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "media/mojo/services/mojo_media_client.h"
6
7 #include "base/macros.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "media/audio/audio_manager_base.h"
10 #include "media/audio/audio_output_stream_sink.h"
11 #include "media/audio/fake_audio_log_factory.h"
12 #include "media/base/audio_hardware_config.h"
13 #include "media/base/media.h"
14 #include "media/base/null_video_sink.h"
15 #include "media/cdm/default_cdm_factory.h"
16 #include "media/renderers/default_renderer_factory.h"
17 #include "media/renderers/gpu_video_accelerator_factories.h"
18
19 namespace media {
20
21 namespace {
22 class DefaultMojoMediaClient : public MojoMediaClient {
23 public:
24 DefaultMojoMediaClient() {}
25
26 // MojoMediaClient overrides.
27 void Initialize() override {
28 InitializeMediaLibrary();
29 // TODO(dalecurtis): We should find a single owner per process for the audio
30 // manager or make it a lazy instance. It's not safe to call Get()/Create()
31 // across multiple threads...
32 //
33 // TODO(dalecurtis): Eventually we'll want something other than a fake audio
34 // log factory here too. We should probably at least DVLOG() such info.
35 AudioManager* audio_manager = AudioManager::Get();
36 if (!audio_manager)
37 audio_manager = media::AudioManager::Create(&fake_audio_log_factory_);
38
39 audio_hardware_config_.reset(new AudioHardwareConfig(
40 audio_manager->GetInputStreamParameters(
41 AudioManagerBase::kDefaultDeviceId),
42 audio_manager->GetDefaultOutputStreamParameters()));
43 }
44
45 scoped_ptr<RendererFactory> CreateRendererFactory(
46 const scoped_refptr<MediaLog>& media_log) override {
47 return make_scoped_ptr(new DefaultRendererFactory(media_log, nullptr,
48 *audio_hardware_config_));
49 }
50
51 AudioRendererSink* CreateAudioRendererSink() override {
52 if (!audio_renderer_sink_)
53 audio_renderer_sink_ = new AudioOutputStreamSink();
54
55 return audio_renderer_sink_.get();
56 }
57
58 VideoRendererSink* CreateVideoRendererSink(
59 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) override {
60 if (!video_renderer_sink_) {
61 video_renderer_sink_ = make_scoped_ptr(
62 new NullVideoSink(false, base::TimeDelta::FromSecondsD(1.0 / 60),
63 NullVideoSink::NewFrameCB(), task_runner));
64 }
65
66 return video_renderer_sink_.get();
67 }
68
69 scoped_ptr<CdmFactory> CreateCdmFactory(
70 mojo::ServiceProvider* /* service_provider */) override {
71 return make_scoped_ptr(new DefaultCdmFactory());
72 }
73
74 private:
75 FakeAudioLogFactory fake_audio_log_factory_;
76 scoped_ptr<AudioHardwareConfig> audio_hardware_config_;
77 scoped_refptr<AudioRendererSink> audio_renderer_sink_;
78 scoped_ptr<VideoRendererSink> video_renderer_sink_;
79
80 DISALLOW_COPY_AND_ASSIGN(DefaultMojoMediaClient);
81 };
82
83 } // namespace (anonymous)
84
85 scoped_ptr<MojoMediaClient> MojoMediaClient::Create() {
86 return make_scoped_ptr(new DefaultMojoMediaClient());
87 }
88
89 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698