OLD | NEW |
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 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 #include "content/renderer/shared_worker_repository.h" | 106 #include "content/renderer/shared_worker_repository.h" |
107 #include "content/renderer/skia_benchmarking_extension.h" | 107 #include "content/renderer/skia_benchmarking_extension.h" |
108 #include "content/renderer/stats_collection_controller.h" | 108 #include "content/renderer/stats_collection_controller.h" |
109 #include "content/renderer/web_ui_extension.h" | 109 #include "content/renderer/web_ui_extension.h" |
110 #include "content/renderer/websharedworker_proxy.h" | 110 #include "content/renderer/websharedworker_proxy.h" |
111 #include "gin/modules/module_registry.h" | 111 #include "gin/modules/module_registry.h" |
112 #include "media/base/audio_renderer_mixer_input.h" | 112 #include "media/base/audio_renderer_mixer_input.h" |
113 #include "media/base/media_log.h" | 113 #include "media/base/media_log.h" |
114 #include "media/blink/webencryptedmediaclient_impl.h" | 114 #include "media/blink/webencryptedmediaclient_impl.h" |
115 #include "media/blink/webmediaplayer_impl.h" | 115 #include "media/blink/webmediaplayer_impl.h" |
116 #include "media/blink/webmediaplayer_params.h" | |
117 #include "media/renderers/gpu_video_accelerator_factories.h" | 116 #include "media/renderers/gpu_video_accelerator_factories.h" |
118 #include "mojo/common/url_type_converters.h" | 117 #include "mojo/common/url_type_converters.h" |
119 #include "net/base/data_url.h" | 118 #include "net/base/data_url.h" |
120 #include "net/base/net_errors.h" | 119 #include "net/base/net_errors.h" |
121 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 120 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
122 #include "net/http/http_util.h" | 121 #include "net/http/http_util.h" |
123 #include "third_party/WebKit/public/platform/WebStorageQuotaCallbacks.h" | 122 #include "third_party/WebKit/public/platform/WebStorageQuotaCallbacks.h" |
124 #include "third_party/WebKit/public/platform/WebString.h" | 123 #include "third_party/WebKit/public/platform/WebString.h" |
125 #include "third_party/WebKit/public/platform/WebURL.h" | 124 #include "third_party/WebKit/public/platform/WebURL.h" |
126 #include "third_party/WebKit/public/platform/WebURLError.h" | 125 #include "third_party/WebKit/public/platform/WebURLError.h" |
(...skipping 1931 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2058 render_view_->RegisterVideoHoleFrame(this); | 2057 render_view_->RegisterVideoHoleFrame(this); |
2059 contains_media_player_ = true; | 2058 contains_media_player_ = true; |
2060 } | 2059 } |
2061 #endif // defined(VIDEO_HOLE) | 2060 #endif // defined(VIDEO_HOLE) |
2062 | 2061 |
2063 blink::WebMediaStream web_stream( | 2062 blink::WebMediaStream web_stream( |
2064 blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); | 2063 blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); |
2065 if (!web_stream.isNull()) | 2064 if (!web_stream.isNull()) |
2066 return CreateWebMediaPlayerForMediaStream(client); | 2065 return CreateWebMediaPlayerForMediaStream(client); |
2067 | 2066 |
| 2067 RenderThreadImpl* render_thread = RenderThreadImpl::current(); |
| 2068 |
2068 #if defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | 2069 #if defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) |
2069 return CreateAndroidWebMediaPlayer(client, encrypted_client, | 2070 scoped_refptr<media::AudioRendererSink> audio_renderer_sink; |
2070 GetMediaPermission(), initial_cdm); | 2071 media::WebMediaPlayerParams::Context3DCB context_3d_cb; |
2071 #else | 2072 #else |
| 2073 scoped_refptr<media::AudioRendererSink> audio_renderer_sink = |
| 2074 render_thread->GetAudioRendererMixerManager()->CreateInput(routing_id_); |
| 2075 media::WebMediaPlayerParams::Context3DCB context_3d_cb = |
| 2076 base::Bind(&GetSharedMainThreadContext3D); |
| 2077 #endif // defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) |
| 2078 |
2072 scoped_refptr<media::MediaLog> media_log(new RenderMediaLog()); | 2079 scoped_refptr<media::MediaLog> media_log(new RenderMediaLog()); |
2073 | |
2074 RenderThreadImpl* render_thread = RenderThreadImpl::current(); | |
2075 media::WebMediaPlayerParams params( | 2080 media::WebMediaPlayerParams params( |
2076 base::Bind(&ContentRendererClient::DeferMediaLoad, | 2081 base::Bind(&ContentRendererClient::DeferMediaLoad, |
2077 base::Unretained(GetContentClient()->renderer()), | 2082 base::Unretained(GetContentClient()->renderer()), |
2078 static_cast<RenderFrame*>(this), has_played_media_), | 2083 static_cast<RenderFrame*>(this), has_played_media_), |
2079 render_thread->GetAudioRendererMixerManager()->CreateInput(routing_id_), | 2084 audio_renderer_sink, media_log, render_thread->GetMediaThreadTaskRunner(), |
2080 media_log, render_thread->GetMediaThreadTaskRunner(), | |
2081 render_thread->GetWorkerTaskRunner(), | 2085 render_thread->GetWorkerTaskRunner(), |
2082 render_thread->compositor_task_runner(), | 2086 render_thread->compositor_task_runner(), context_3d_cb, |
2083 base::Bind(&GetSharedMainThreadContext3D), GetMediaPermission(), | 2087 GetMediaPermission(), initial_cdm); |
2084 initial_cdm); | |
2085 | 2088 |
| 2089 #if defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) |
| 2090 return CreateAndroidWebMediaPlayer(client, encrypted_client, params); |
| 2091 #else |
2086 #if defined(ENABLE_MOJO_MEDIA) | 2092 #if defined(ENABLE_MOJO_MEDIA) |
2087 scoped_ptr<media::RendererFactory> media_renderer_factory( | 2093 scoped_ptr<media::RendererFactory> media_renderer_factory( |
2088 new media::MojoRendererFactory(GetMediaServiceFactory())); | 2094 new media::MojoRendererFactory(GetMediaServiceFactory())); |
2089 #else | 2095 #else |
2090 scoped_ptr<media::RendererFactory> media_renderer_factory = | 2096 scoped_ptr<media::RendererFactory> media_renderer_factory = |
2091 GetContentClient()->renderer()->CreateMediaRendererFactory( | 2097 GetContentClient()->renderer()->CreateMediaRendererFactory( |
2092 this, render_thread->GetGpuFactories(), media_log); | 2098 this, render_thread->GetGpuFactories(), media_log); |
2093 | 2099 |
2094 if (!media_renderer_factory.get()) { | 2100 if (!media_renderer_factory.get()) { |
2095 media_renderer_factory.reset(new media::DefaultRendererFactory( | 2101 media_renderer_factory.reset(new media::DefaultRendererFactory( |
(...skipping 2891 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4987 url::kJavaScriptScheme)) { | 4993 url::kJavaScriptScheme)) { |
4988 return NavigationStateImpl::CreateBrowserInitiated( | 4994 return NavigationStateImpl::CreateBrowserInitiated( |
4989 pending_navigation_params_->common_params, | 4995 pending_navigation_params_->common_params, |
4990 pending_navigation_params_->start_params, | 4996 pending_navigation_params_->start_params, |
4991 pending_navigation_params_->request_params); | 4997 pending_navigation_params_->request_params); |
4992 } | 4998 } |
4993 return NavigationStateImpl::CreateContentInitiated(); | 4999 return NavigationStateImpl::CreateContentInitiated(); |
4994 } | 5000 } |
4995 | 5001 |
4996 #if defined(OS_ANDROID) | 5002 #if defined(OS_ANDROID) |
4997 | |
4998 WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer( | 5003 WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer( |
4999 WebMediaPlayerClient* client, | 5004 WebMediaPlayerClient* client, |
5000 WebMediaPlayerEncryptedMediaClient* encrypted_client, | 5005 WebMediaPlayerEncryptedMediaClient* encrypted_client, |
5001 media::MediaPermission* media_permission, | 5006 const media::WebMediaPlayerParams& params) { |
5002 WebContentDecryptionModule* initial_cdm) { | |
5003 scoped_refptr<StreamTextureFactory> stream_texture_factory; | 5007 scoped_refptr<StreamTextureFactory> stream_texture_factory; |
5004 if (SynchronousCompositorFactory* factory = | 5008 if (SynchronousCompositorFactory* factory = |
5005 SynchronousCompositorFactory::GetInstance()) { | 5009 SynchronousCompositorFactory::GetInstance()) { |
5006 stream_texture_factory = factory->CreateStreamTextureFactory(routing_id_); | 5010 stream_texture_factory = factory->CreateStreamTextureFactory(routing_id_); |
5007 } else { | 5011 } else { |
5008 GpuChannelHost* gpu_channel_host = | 5012 GpuChannelHost* gpu_channel_host = |
5009 RenderThreadImpl::current()->EstablishGpuChannelSync( | 5013 RenderThreadImpl::current()->EstablishGpuChannelSync( |
5010 CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE); | 5014 CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE); |
5011 | 5015 |
5012 if (!gpu_channel_host) { | 5016 if (!gpu_channel_host) { |
5013 LOG(ERROR) << "Failed to establish GPU channel for media player"; | 5017 LOG(ERROR) << "Failed to establish GPU channel for media player"; |
5014 return NULL; | 5018 return NULL; |
5015 } | 5019 } |
5016 | 5020 |
5017 scoped_refptr<cc_blink::ContextProviderWebContext> context_provider = | 5021 scoped_refptr<cc_blink::ContextProviderWebContext> context_provider = |
5018 RenderThreadImpl::current()->SharedMainThreadContextProvider(); | 5022 RenderThreadImpl::current()->SharedMainThreadContextProvider(); |
5019 | 5023 |
5020 if (!context_provider.get()) { | 5024 if (!context_provider.get()) { |
5021 LOG(ERROR) << "Failed to get context3d for media player"; | 5025 LOG(ERROR) << "Failed to get context3d for media player"; |
5022 return NULL; | 5026 return NULL; |
5023 } | 5027 } |
5024 | 5028 |
5025 stream_texture_factory = StreamTextureFactoryImpl::Create( | 5029 stream_texture_factory = StreamTextureFactoryImpl::Create( |
5026 context_provider, gpu_channel_host, routing_id_); | 5030 context_provider, gpu_channel_host, routing_id_); |
5027 } | 5031 } |
5028 | 5032 |
5029 return new WebMediaPlayerAndroid( | 5033 return new WebMediaPlayerAndroid( |
5030 frame_, client, encrypted_client, weak_factory_.GetWeakPtr(), | 5034 frame_, client, encrypted_client, weak_factory_.GetWeakPtr(), |
5031 GetMediaPlayerManager(), GetCdmFactory(), media_permission, initial_cdm, | 5035 GetMediaPlayerManager(), GetCdmFactory(), stream_texture_factory, params); |
5032 stream_texture_factory, | |
5033 RenderThreadImpl::current()->GetMediaThreadTaskRunner(), | |
5034 new RenderMediaLog()); | |
5035 } | 5036 } |
5036 | 5037 |
5037 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { | 5038 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { |
5038 if (!media_player_manager_) | 5039 if (!media_player_manager_) |
5039 media_player_manager_ = new RendererMediaPlayerManager(this); | 5040 media_player_manager_ = new RendererMediaPlayerManager(this); |
5040 return media_player_manager_; | 5041 return media_player_manager_; |
5041 } | 5042 } |
5042 | |
5043 #endif // defined(OS_ANDROID) | 5043 #endif // defined(OS_ANDROID) |
5044 | 5044 |
5045 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { | 5045 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { |
5046 if (!media_permission_dispatcher_) | 5046 if (!media_permission_dispatcher_) |
5047 media_permission_dispatcher_ = new MediaPermissionDispatcher(this); | 5047 media_permission_dispatcher_ = new MediaPermissionDispatcher(this); |
5048 return media_permission_dispatcher_; | 5048 return media_permission_dispatcher_; |
5049 } | 5049 } |
5050 | 5050 |
5051 #if defined(ENABLE_MOJO_MEDIA) | 5051 #if defined(ENABLE_MOJO_MEDIA) |
5052 media::interfaces::ServiceFactory* RenderFrameImpl::GetMediaServiceFactory() { | 5052 media::interfaces::ServiceFactory* RenderFrameImpl::GetMediaServiceFactory() { |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5120 DCHECK(mojo_shell_); | 5120 DCHECK(mojo_shell_); |
5121 mojo::ServiceProviderPtr service_provider; | 5121 mojo::ServiceProviderPtr service_provider; |
5122 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 5122 mojo::URLRequestPtr request(mojo::URLRequest::New()); |
5123 request->url = mojo::String::From(url); | 5123 request->url = mojo::String::From(url); |
5124 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), | 5124 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), |
5125 nullptr, nullptr); | 5125 nullptr, nullptr); |
5126 return service_provider.Pass(); | 5126 return service_provider.Pass(); |
5127 } | 5127 } |
5128 | 5128 |
5129 } // namespace content | 5129 } // namespace content |
OLD | NEW |