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

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

Issue 1209363004: media: Support RendererFactory in MojoMediaClient. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix android build (hopefully) Created 5 years, 5 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 "media/mojo/services/mojo_media_client.h" 5 #include "media/mojo/services/mojo_media_client.h"
6 6
7 #include "base/files/file_path.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/path_service.h"
9 #include "media/audio/audio_manager_base.h" 8 #include "media/audio/audio_manager_base.h"
10 #include "media/audio/audio_output_stream_sink.h" 9 #include "media/audio/audio_output_stream_sink.h"
11 #include "media/audio/fake_audio_log_factory.h" 10 #include "media/audio/fake_audio_log_factory.h"
12 #include "media/base/media.h" 11 #include "media/base/media.h"
13 #include "media/base/null_video_sink.h" 12 #include "media/base/null_video_sink.h"
14 #include "media/filters/opus_audio_decoder.h" 13 #include "media/renderers/default_renderer_factory.h"
15 14 #include "media/renderers/gpu_video_accelerator_factories.h"
16 #if !defined(MEDIA_DISABLE_FFMPEG)
17 #include "media/filters/ffmpeg_audio_decoder.h"
18 #include "media/filters/ffmpeg_video_decoder.h"
19 #endif
20
21 #if !defined(MEDIA_DISABLE_LIBVPX)
22 #include "media/filters/vpx_video_decoder.h"
23 #endif
24 15
25 namespace media { 16 namespace media {
26 namespace internal { 17 namespace internal {
27 18
28 class DefaultMojoMediaClient : public PlatformMojoMediaClient { 19 class DefaultMojoMediaClient : public PlatformMojoMediaClient {
29 public: 20 public:
30 DefaultMojoMediaClient() { 21 DefaultMojoMediaClient() {
31 InitializeMediaLibrary(); 22 InitializeMediaLibrary();
32 23
33 // TODO(dalecurtis): We should find a single owner per process for the audio 24 // TODO(dalecurtis): We should find a single owner per process for the audio
34 // manager or make it a lazy instance. It's not safe to call Get()/Create() 25 // manager or make it a lazy instance. It's not safe to call Get()/Create()
35 // across multiple threads... 26 // across multiple threads...
36 // 27 //
37 // TODO(dalecurtis): Eventually we'll want something other than a fake audio 28 // TODO(dalecurtis): Eventually we'll want something other than a fake audio
38 // log factory here too. We should probably at least DVLOG() such info. 29 // log factory here too. We should probably at least DVLOG() such info.
39 AudioManager* audio_manager = AudioManager::Get(); 30 AudioManager* audio_manager = AudioManager::Get();
40 if (!audio_manager) 31 if (!audio_manager)
41 audio_manager = media::AudioManager::Create(&fake_audio_log_factory_); 32 audio_manager = media::AudioManager::Create(&fake_audio_log_factory_);
42 33
43 audio_hardware_config_.reset(new AudioHardwareConfig( 34 audio_hardware_config_.reset(new AudioHardwareConfig(
44 audio_manager->GetInputStreamParameters( 35 audio_manager->GetInputStreamParameters(
45 AudioManagerBase::kDefaultDeviceId), 36 AudioManagerBase::kDefaultDeviceId),
46 audio_manager->GetDefaultOutputStreamParameters())); 37 audio_manager->GetDefaultOutputStreamParameters()));
47 } 38 }
48 39
40 scoped_ptr<RendererFactory> GetRendererFactory(
41 const scoped_refptr<MediaLog>& media_log) override {
42 return make_scoped_ptr(new DefaultRendererFactory(media_log, nullptr,
43 *audio_hardware_config_));
44 }
45
49 ScopedVector<AudioDecoder> GetAudioDecoders( 46 ScopedVector<AudioDecoder> GetAudioDecoders(
50 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, 47 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
51 const LogCB& media_log_cb) override { 48 const scoped_refptr<MediaLog>& media_log) override {
52 ScopedVector<AudioDecoder> audio_decoders; 49 NOTREACHED();
53 50 return ScopedVector<AudioDecoder>();
54 #if !defined(MEDIA_DISABLE_FFMPEG)
55 audio_decoders.push_back(
56 new FFmpegAudioDecoder(media_task_runner, media_log_cb));
57 audio_decoders.push_back(new OpusAudioDecoder(media_task_runner));
58 #endif
59
60 return audio_decoders.Pass();
61 } 51 }
62 52
63 ScopedVector<VideoDecoder> GetVideoDecoders( 53 ScopedVector<VideoDecoder> GetVideoDecoders(
64 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, 54 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
65 const LogCB& media_log_cb) override { 55 const scoped_refptr<MediaLog>& media_log) override {
66 ScopedVector<VideoDecoder> video_decoders; 56 NOTREACHED();
67 57 return ScopedVector<VideoDecoder>();
68 // TODO(dalecurtis): If we ever need GPU video decoders, we'll need to
69 // figure out how to retrieve the GpuVideoAcceleratorFactories...
70
71 #if !defined(MEDIA_DISABLE_LIBVPX)
72 video_decoders.push_back(new VpxVideoDecoder(media_task_runner));
73 #endif
74
75 #if !defined(MEDIA_DISABLE_FFMPEG)
76 video_decoders.push_back(new FFmpegVideoDecoder(media_task_runner));
77 #endif
78
79 return video_decoders.Pass();
80 } 58 }
81 59
82 scoped_refptr<AudioRendererSink> GetAudioRendererSink() override { 60 scoped_refptr<AudioRendererSink> GetAudioRendererSink() override {
83 return new AudioOutputStreamSink(); 61 return new AudioOutputStreamSink();
84 } 62 }
85 63
86 scoped_ptr<VideoRendererSink> GetVideoRendererSink( 64 scoped_ptr<VideoRendererSink> GetVideoRendererSink(
87 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) override { 65 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) override {
88 return make_scoped_ptr( 66 return make_scoped_ptr(
89 new NullVideoSink(false, base::TimeDelta::FromSecondsD(1.0 / 60), 67 new NullVideoSink(false, base::TimeDelta::FromSecondsD(1.0 / 60),
(...skipping 10 matching lines...) Expand all
100 78
101 DISALLOW_COPY_AND_ASSIGN(DefaultMojoMediaClient); 79 DISALLOW_COPY_AND_ASSIGN(DefaultMojoMediaClient);
102 }; 80 };
103 81
104 scoped_ptr<PlatformMojoMediaClient> CreatePlatformMojoMediaClient() { 82 scoped_ptr<PlatformMojoMediaClient> CreatePlatformMojoMediaClient() {
105 return make_scoped_ptr(new DefaultMojoMediaClient()); 83 return make_scoped_ptr(new DefaultMojoMediaClient());
106 } 84 }
107 85
108 } // namespace internal 86 } // namespace internal
109 } // namespace media 87 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698