OLD | NEW |
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 "components/html_viewer/media_factory.h" | 5 #include "components/html_viewer/media_factory.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 mojo::Shell* shell) { | 82 mojo::Shell* shell) { |
83 #if defined(OS_ANDROID) | 83 #if defined(OS_ANDROID) |
84 // TODO(xhwang): Get CreateMediaPlayer working on android. | 84 // TODO(xhwang): Get CreateMediaPlayer working on android. |
85 return nullptr; | 85 return nullptr; |
86 #else | 86 #else |
87 scoped_refptr<media::MediaLog> media_log(new media::MediaLog()); | 87 scoped_refptr<media::MediaLog> media_log(new media::MediaLog()); |
88 scoped_ptr<media::RendererFactory> media_renderer_factory; | 88 scoped_ptr<media::RendererFactory> media_renderer_factory; |
89 | 89 |
90 if (enable_mojo_media_renderer_) { | 90 if (enable_mojo_media_renderer_) { |
91 media_renderer_factory.reset( | 91 media_renderer_factory.reset( |
92 new media::MojoRendererFactory(GetMediaServiceFactory())); | 92 new media::MojoRendererFactory(GetMediaServiceProvider())); |
93 } else { | 93 } else { |
94 media_renderer_factory.reset( | 94 media_renderer_factory.reset( |
95 new media::DefaultRendererFactory(media_log, | 95 new media::DefaultRendererFactory(media_log, |
96 nullptr, // No GPU factory. | 96 nullptr, // No GPU factory. |
97 GetAudioHardwareConfig())); | 97 GetAudioHardwareConfig())); |
98 } | 98 } |
99 | 99 |
100 media::WebMediaPlayerParams params( | 100 media::WebMediaPlayerParams params( |
101 media::WebMediaPlayerParams::DeferLoadCB(), CreateAudioRendererSink(), | 101 media::WebMediaPlayerParams::DeferLoadCB(), CreateAudioRendererSink(), |
102 media_log, GetMediaThreadTaskRunner(), GetMediaThreadTaskRunner(), | 102 media_log, GetMediaThreadTaskRunner(), GetMediaThreadTaskRunner(), |
(...skipping 15 matching lines...) Expand all Loading... |
118 | 118 |
119 blink::WebEncryptedMediaClient* MediaFactory::GetEncryptedMediaClient() { | 119 blink::WebEncryptedMediaClient* MediaFactory::GetEncryptedMediaClient() { |
120 if (!web_encrypted_media_client_) { | 120 if (!web_encrypted_media_client_) { |
121 web_encrypted_media_client_.reset(new media::WebEncryptedMediaClientImpl( | 121 web_encrypted_media_client_.reset(new media::WebEncryptedMediaClientImpl( |
122 base::Bind(&AreSecureCodecsSupported), GetCdmFactory(), | 122 base::Bind(&AreSecureCodecsSupported), GetCdmFactory(), |
123 GetMediaPermission())); | 123 GetMediaPermission())); |
124 } | 124 } |
125 return web_encrypted_media_client_.get(); | 125 return web_encrypted_media_client_.get(); |
126 } | 126 } |
127 | 127 |
128 media::interfaces::ServiceFactory* MediaFactory::GetMediaServiceFactory() { | 128 mojo::ServiceProvider* MediaFactory::GetMediaServiceProvider() { |
129 if (!media_service_factory_) { | 129 if (!media_service_provider_) { |
130 mojo::ServiceProviderPtr service_provider; | |
131 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 130 mojo::URLRequestPtr request(mojo::URLRequest::New()); |
132 request->url = mojo::String::From("mojo:media"); | 131 request->url = mojo::String::From("mojo:media"); |
133 shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), | 132 shell_->ConnectToApplication(std::move(request), |
134 nullptr, nullptr, | 133 GetProxy(&media_service_provider_), nullptr, |
135 base::Bind(&OnGotContentHandlerID)); | 134 nullptr, base::Bind(&OnGotContentHandlerID)); |
136 mojo::ConnectToService(service_provider.get(), &media_service_factory_); | |
137 } | 135 } |
138 | 136 return media_service_provider_.get(); |
139 return media_service_factory_.get(); | |
140 } | 137 } |
141 | 138 |
142 media::MediaPermission* MediaFactory::GetMediaPermission() { | 139 media::MediaPermission* MediaFactory::GetMediaPermission() { |
143 // TODO(xhwang): Replace DefaultMediaPermission with something real when | 140 // TODO(xhwang): Replace DefaultMediaPermission with something real when |
144 // permissions are supported in html_viewer. | 141 // permissions are supported in html_viewer. |
145 NOTIMPLEMENTED(); | 142 NOTIMPLEMENTED(); |
146 | 143 |
147 if (!media_permission_) | 144 if (!media_permission_) |
148 media_permission_.reset(new media::DefaultMediaPermission(true)); | 145 media_permission_.reset(new media::DefaultMediaPermission(true)); |
149 return media_permission_.get(); | 146 return media_permission_.get(); |
150 } | 147 } |
151 | 148 |
152 media::CdmFactory* MediaFactory::GetCdmFactory() { | 149 media::CdmFactory* MediaFactory::GetCdmFactory() { |
153 if (!cdm_factory_) { | 150 if (!cdm_factory_) { |
154 if (enable_mojo_media_renderer_) | 151 if (enable_mojo_media_renderer_) |
155 cdm_factory_.reset(new media::MojoCdmFactory(GetMediaServiceFactory())); | 152 cdm_factory_.reset(new media::MojoCdmFactory(GetMediaServiceProvider())); |
156 else | 153 else |
157 cdm_factory_.reset(new media::DefaultCdmFactory()); | 154 cdm_factory_.reset(new media::DefaultCdmFactory()); |
158 } | 155 } |
159 | 156 |
160 return cdm_factory_.get(); | 157 return cdm_factory_.get(); |
161 } | 158 } |
162 | 159 |
163 #if !defined(OS_ANDROID) | 160 #if !defined(OS_ANDROID) |
164 const media::AudioHardwareConfig& MediaFactory::GetAudioHardwareConfig() { | 161 const media::AudioHardwareConfig& MediaFactory::GetAudioHardwareConfig() { |
165 return audio_hardware_config_; | 162 return audio_hardware_config_; |
166 } | 163 } |
167 | 164 |
168 scoped_refptr<media::RestartableAudioRendererSink> | 165 scoped_refptr<media::RestartableAudioRendererSink> |
169 MediaFactory::CreateAudioRendererSink() { | 166 MediaFactory::CreateAudioRendererSink() { |
170 // TODO(dalecurtis): Replace this with an interface to an actual mojo service; | 167 // TODO(dalecurtis): Replace this with an interface to an actual mojo service; |
171 // the AudioOutputStreamSink will not work in sandboxed processes. | 168 // the AudioOutputStreamSink will not work in sandboxed processes. |
172 return new media::AudioOutputStreamSink(); | 169 return new media::AudioOutputStreamSink(); |
173 } | 170 } |
174 | 171 |
175 scoped_refptr<base::SingleThreadTaskRunner> | 172 scoped_refptr<base::SingleThreadTaskRunner> |
176 MediaFactory::GetMediaThreadTaskRunner() { | 173 MediaFactory::GetMediaThreadTaskRunner() { |
177 if (!media_thread_.IsRunning()) | 174 if (!media_thread_.IsRunning()) |
178 media_thread_.Start(); | 175 media_thread_.Start(); |
179 | 176 |
180 return media_thread_.task_runner(); | 177 return media_thread_.task_runner(); |
181 } | 178 } |
182 #endif // !defined(OS_ANDROID) | 179 #endif // !defined(OS_ANDROID) |
183 | 180 |
184 } // namespace html_viewer | 181 } // namespace html_viewer |
OLD | NEW |