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

Side by Side Diff: content/renderer/render_frame_impl.cc

Issue 1230313010: media: Add ServiceFactory mojo interface and implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase only 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
« no previous file with comments | « content/renderer/render_frame_impl.h ('k') | media/mojo/interfaces/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "content/renderer/render_frame_impl.h" 5 #include "content/renderer/render_frame_impl.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 175
176 #if defined(ENABLE_PEPPER_CDMS) 176 #if defined(ENABLE_PEPPER_CDMS)
177 #include "content/renderer/media/crypto/pepper_cdm_wrapper_impl.h" 177 #include "content/renderer/media/crypto/pepper_cdm_wrapper_impl.h"
178 #elif defined(ENABLE_BROWSER_CDMS) 178 #elif defined(ENABLE_BROWSER_CDMS)
179 #include "content/renderer/media/crypto/renderer_cdm_manager.h" 179 #include "content/renderer/media/crypto/renderer_cdm_manager.h"
180 #endif 180 #endif
181 181
182 #if defined(ENABLE_MOJO_MEDIA) 182 #if defined(ENABLE_MOJO_MEDIA)
183 #include "media/mojo/services/mojo_cdm_factory.h" 183 #include "media/mojo/services/mojo_cdm_factory.h"
184 #include "media/mojo/services/mojo_renderer_factory.h" 184 #include "media/mojo/services/mojo_renderer_factory.h"
185 #include "mojo/application/public/cpp/connect.h"
185 #include "mojo/application/public/interfaces/shell.mojom.h" 186 #include "mojo/application/public/interfaces/shell.mojom.h"
186 #include "third_party/mojo/src/mojo/public/cpp/bindings/interface_request.h" 187 #include "third_party/mojo/src/mojo/public/cpp/bindings/interface_request.h"
187 #else 188 #else
188 #include "media/renderers/default_renderer_factory.h" 189 #include "media/renderers/default_renderer_factory.h"
189 #endif 190 #endif
190 191
191 #if defined(ENABLE_WEBVR) 192 #if defined(ENABLE_WEBVR)
192 #include "content/renderer/vr/vr_dispatcher.h" 193 #include "content/renderer/vr/vr_dispatcher.h"
193 #endif 194 #endif
194 195
(...skipping 1830 matching lines...) Expand 10 before | Expand all | Expand 10 after
2025 base::Unretained(GetContentClient()->renderer()), 2026 base::Unretained(GetContentClient()->renderer()),
2026 static_cast<RenderFrame*>(this)), 2027 static_cast<RenderFrame*>(this)),
2027 render_thread->GetAudioRendererMixerManager()->CreateInput(routing_id_), 2028 render_thread->GetAudioRendererMixerManager()->CreateInput(routing_id_),
2028 media_log, render_thread->GetMediaThreadTaskRunner(), 2029 media_log, render_thread->GetMediaThreadTaskRunner(),
2029 render_thread->compositor_task_runner(), 2030 render_thread->compositor_task_runner(),
2030 base::Bind(&GetSharedMainThreadContext3D), GetMediaPermission(), 2031 base::Bind(&GetSharedMainThreadContext3D), GetMediaPermission(),
2031 initial_cdm); 2032 initial_cdm);
2032 2033
2033 #if defined(ENABLE_MOJO_MEDIA) 2034 #if defined(ENABLE_MOJO_MEDIA)
2034 scoped_ptr<media::RendererFactory> media_renderer_factory( 2035 scoped_ptr<media::RendererFactory> media_renderer_factory(
2035 new media::MojoRendererFactory(GetMediaServiceProvider())); 2036 new media::MojoRendererFactory(GetMediaServiceFactory()));
2036 #else 2037 #else
2037 scoped_ptr<media::RendererFactory> media_renderer_factory = 2038 scoped_ptr<media::RendererFactory> media_renderer_factory =
2038 GetContentClient()->renderer()->CreateMediaRendererFactory( 2039 GetContentClient()->renderer()->CreateMediaRendererFactory(
2039 this, render_thread->GetGpuFactories(), media_log); 2040 this, render_thread->GetGpuFactories(), media_log);
2040 2041
2041 if (!media_renderer_factory.get()) { 2042 if (!media_renderer_factory.get()) {
2042 media_renderer_factory.reset(new media::DefaultRendererFactory( 2043 media_renderer_factory.reset(new media::DefaultRendererFactory(
2043 media_log, render_thread->GetGpuFactories(), 2044 media_log, render_thread->GetGpuFactories(),
2044 *render_thread->GetAudioHardwareConfig())); 2045 *render_thread->GetAudioHardwareConfig()));
2045 } 2046 }
(...skipping 2933 matching lines...) Expand 10 before | Expand all | Expand 10 after
4979 4980
4980 #endif // defined(OS_ANDROID) 4981 #endif // defined(OS_ANDROID)
4981 4982
4982 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { 4983 media::MediaPermission* RenderFrameImpl::GetMediaPermission() {
4983 if (!media_permission_dispatcher_) 4984 if (!media_permission_dispatcher_)
4984 media_permission_dispatcher_ = new MediaPermissionDispatcher(this); 4985 media_permission_dispatcher_ = new MediaPermissionDispatcher(this);
4985 return media_permission_dispatcher_; 4986 return media_permission_dispatcher_;
4986 } 4987 }
4987 4988
4988 #if defined(ENABLE_MOJO_MEDIA) 4989 #if defined(ENABLE_MOJO_MEDIA)
4989 mojo::ServiceProvider* RenderFrameImpl::GetMediaServiceProvider() { 4990 media::interfaces::ServiceFactory* RenderFrameImpl::GetMediaServiceFactory() {
4990 if (!media_service_provider_) { 4991 if (!media_service_factory_) {
4991 mojo::InterfacePtr<mojo::Shell> shell_ptr; 4992 mojo::InterfacePtr<mojo::Shell> shell_ptr;
4992 GetServiceRegistry()->ConnectToRemoteService(mojo::GetProxy(&shell_ptr)); 4993 GetServiceRegistry()->ConnectToRemoteService(mojo::GetProxy(&shell_ptr));
4994
4995 mojo::ServiceProviderPtr service_provider;
4993 mojo::URLRequestPtr request(mojo::URLRequest::New()); 4996 mojo::URLRequestPtr request(mojo::URLRequest::New());
4994 request->url = mojo::String::From("mojo:media"); 4997 request->url = mojo::String::From("mojo:media");
4995 shell_ptr->ConnectToApplication( 4998 shell_ptr->ConnectToApplication(request.Pass(), GetProxy(&service_provider),
4996 request.Pass(), GetProxy(&media_service_provider_), nullptr); 4999 nullptr);
4997 media_service_provider_.set_connection_error_handler( 5000
4998 base::Bind(&RenderFrameImpl::OnMediaServiceProviderConnectionError, 5001 mojo::ConnectToService(service_provider.get(), &media_service_factory_);
5002
5003 media_service_factory_.set_connection_error_handler(
5004 base::Bind(&RenderFrameImpl::OnMediaServiceFactoryConnectionError,
4999 base::Unretained(this))); 5005 base::Unretained(this)));
5000 } 5006 }
5001 return media_service_provider_.get(); 5007
5008 return media_service_factory_.get();
5002 } 5009 }
5003 5010
5004 void RenderFrameImpl::OnMediaServiceProviderConnectionError() { 5011 void RenderFrameImpl::OnMediaServiceFactoryConnectionError() {
5005 media_service_provider_.reset(); 5012 // TODO(xhwang): Resetting |media_service_factory_| could cause access
5013 // violation on the old |media_service_factory_| by outstanding
5014 // media::CdmFactory or media::RendererFactory. Find a better way to handle
5015 // this.
5016 // media_service_factory_.reset();
5006 } 5017 }
5007 #endif 5018 #endif
5008 5019
5009 bool RenderFrameImpl::AreSecureCodecsSupported() { 5020 bool RenderFrameImpl::AreSecureCodecsSupported() {
5010 #if defined(OS_ANDROID) 5021 #if defined(OS_ANDROID)
5011 // Hardware-secure codecs are only supported if secure surfaces are enabled. 5022 // Hardware-secure codecs are only supported if secure surfaces are enabled.
5012 return render_view_->renderer_preferences_ 5023 return render_view_->renderer_preferences_
5013 .use_video_overlay_for_embedded_encrypted_video; 5024 .use_video_overlay_for_embedded_encrypted_video;
5014 #else 5025 #else
5015 return false; 5026 return false;
5016 #endif // defined(OS_ANDROID) 5027 #endif // defined(OS_ANDROID)
5017 } 5028 }
5018 5029
5019 media::CdmFactory* RenderFrameImpl::GetCdmFactory() { 5030 media::CdmFactory* RenderFrameImpl::GetCdmFactory() {
5020 #if defined(ENABLE_BROWSER_CDMS) 5031 #if defined(ENABLE_BROWSER_CDMS)
5021 if (!cdm_manager_) 5032 if (!cdm_manager_)
5022 cdm_manager_ = new RendererCdmManager(this); 5033 cdm_manager_ = new RendererCdmManager(this);
5023 #endif // defined(ENABLE_BROWSER_CDMS) 5034 #endif // defined(ENABLE_BROWSER_CDMS)
5024 5035
5025 if (!cdm_factory_) { 5036 if (!cdm_factory_) {
5026 DCHECK(frame_); 5037 DCHECK(frame_);
5027 5038
5028 #if defined(ENABLE_MOJO_MEDIA) 5039 #if defined(ENABLE_MOJO_MEDIA)
5029 cdm_factory_.reset(new media::MojoCdmFactory(GetMediaServiceProvider())); 5040 cdm_factory_.reset(new media::MojoCdmFactory(GetMediaServiceFactory()));
5030 #else 5041 #else
5031 cdm_factory_.reset(new RenderCdmFactory( 5042 cdm_factory_.reset(new RenderCdmFactory(
5032 #if defined(ENABLE_PEPPER_CDMS) 5043 #if defined(ENABLE_PEPPER_CDMS)
5033 base::Bind(&PepperCdmWrapperImpl::Create, frame_) 5044 base::Bind(&PepperCdmWrapperImpl::Create, frame_)
5034 #elif defined(ENABLE_BROWSER_CDMS) 5045 #elif defined(ENABLE_BROWSER_CDMS)
5035 cdm_manager_ 5046 cdm_manager_
5036 #endif 5047 #endif
5037 )); 5048 ));
5038 #endif // defined(ENABLE_MOJO_MEDIA) 5049 #endif // defined(ENABLE_MOJO_MEDIA)
5039 } 5050 }
5040 5051
5041 return cdm_factory_.get(); 5052 return cdm_factory_.get();
5042 } 5053 }
5043 5054
5044 void RenderFrameImpl::RegisterMojoServices() { 5055 void RenderFrameImpl::RegisterMojoServices() {
5045 // Only main frame have ImageDownloader service. 5056 // Only main frame have ImageDownloader service.
5046 if (!frame_->parent()) { 5057 if (!frame_->parent()) {
5047 GetServiceRegistry()->AddService<image_downloader::ImageDownloader>( 5058 GetServiceRegistry()->AddService<image_downloader::ImageDownloader>(
5048 base::Bind(&ImageDownloaderImpl::CreateMojoService, 5059 base::Bind(&ImageDownloaderImpl::CreateMojoService,
5049 base::Unretained(this))); 5060 base::Unretained(this)));
5050 } 5061 }
5051 } 5062 }
5052 5063
5053 } // namespace content 5064 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_frame_impl.h ('k') | media/mojo/interfaces/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698