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 2014 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2025 render_view_->RegisterVideoHoleFrame(this); | 2025 render_view_->RegisterVideoHoleFrame(this); |
2026 contains_media_player_ = true; | 2026 contains_media_player_ = true; |
2027 } | 2027 } |
2028 #endif // defined(VIDEO_HOLE) | 2028 #endif // defined(VIDEO_HOLE) |
2029 | 2029 |
2030 blink::WebMediaStream web_stream( | 2030 blink::WebMediaStream web_stream( |
2031 blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); | 2031 blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); |
2032 if (!web_stream.isNull()) | 2032 if (!web_stream.isNull()) |
2033 return CreateWebMediaPlayerForMediaStream(client); | 2033 return CreateWebMediaPlayerForMediaStream(client); |
2034 | 2034 |
2035 RenderThreadImpl* render_thread = RenderThreadImpl::current(); | |
2036 | |
2035 #if defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | 2037 #if defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) |
2036 return CreateAndroidWebMediaPlayer(client, encrypted_client, | 2038 scoped_refptr<media::AudioRendererSink> audio_renderer_sink; |
2037 GetMediaPermission(), initial_cdm); | 2039 media::WebMediaPlayerParams::Context3DCB context_3d_cb; |
Charlie Reis
2015/08/18 23:57:42
Do these default constructors do the right thing o
DaleCurtis
2015/08/20 18:47:10
The first will just be nullptr, the second an unbo
| |
2038 #else | 2040 #else |
2041 scoped_refptr<media::AudioRendererSink> audio_renderer_sink = | |
2042 render_thread->GetAudioRendererMixerManager()->CreateInput(routing_id_); | |
2043 media::WebMediaPlayerParams::Context3DCB context_3d_cb = | |
2044 base::Bind(&GetSharedMainThreadContext3D); | |
2045 #endif // defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | |
2046 | |
2039 scoped_refptr<media::MediaLog> media_log(new RenderMediaLog()); | 2047 scoped_refptr<media::MediaLog> media_log(new RenderMediaLog()); |
2040 | |
2041 RenderThreadImpl* render_thread = RenderThreadImpl::current(); | |
2042 media::WebMediaPlayerParams params( | 2048 media::WebMediaPlayerParams params( |
2043 base::Bind(&ContentRendererClient::DeferMediaLoad, | 2049 base::Bind(&ContentRendererClient::DeferMediaLoad, |
2044 base::Unretained(GetContentClient()->renderer()), | 2050 base::Unretained(GetContentClient()->renderer()), |
2045 static_cast<RenderFrame*>(this), has_played_media_), | 2051 static_cast<RenderFrame*>(this), has_played_media_), |
2046 render_thread->GetAudioRendererMixerManager()->CreateInput(routing_id_), | 2052 audio_renderer_sink, media_log, render_thread->GetMediaThreadTaskRunner(), |
2047 media_log, render_thread->GetMediaThreadTaskRunner(), | 2053 render_thread->compositor_task_runner(), context_3d_cb, |
2048 render_thread->compositor_task_runner(), | 2054 GetMediaPermission(), initial_cdm); |
2049 base::Bind(&GetSharedMainThreadContext3D), GetMediaPermission(), | |
2050 initial_cdm); | |
2051 | 2055 |
2056 #if defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | |
2057 return CreateAndroidWebMediaPlayer(client, encrypted_client, params); | |
2058 #else | |
2052 #if defined(ENABLE_MOJO_MEDIA) | 2059 #if defined(ENABLE_MOJO_MEDIA) |
2053 scoped_ptr<media::RendererFactory> media_renderer_factory( | 2060 scoped_ptr<media::RendererFactory> media_renderer_factory( |
2054 new media::MojoRendererFactory(GetMediaServiceFactory())); | 2061 new media::MojoRendererFactory(GetMediaServiceFactory())); |
2055 #else | 2062 #else |
2056 scoped_ptr<media::RendererFactory> media_renderer_factory = | 2063 scoped_ptr<media::RendererFactory> media_renderer_factory = |
2057 GetContentClient()->renderer()->CreateMediaRendererFactory( | 2064 GetContentClient()->renderer()->CreateMediaRendererFactory( |
2058 this, render_thread->GetGpuFactories(), media_log); | 2065 this, render_thread->GetGpuFactories(), media_log); |
2059 | 2066 |
2060 if (!media_renderer_factory.get()) { | 2067 if (!media_renderer_factory.get()) { |
2061 media_renderer_factory.reset(new media::DefaultRendererFactory( | 2068 media_renderer_factory.reset(new media::DefaultRendererFactory( |
(...skipping 2883 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4945 url::kJavaScriptScheme)) { | 4952 url::kJavaScriptScheme)) { |
4946 return NavigationStateImpl::CreateBrowserInitiated( | 4953 return NavigationStateImpl::CreateBrowserInitiated( |
4947 pending_navigation_params_->common_params, | 4954 pending_navigation_params_->common_params, |
4948 pending_navigation_params_->start_params, | 4955 pending_navigation_params_->start_params, |
4949 pending_navigation_params_->request_params); | 4956 pending_navigation_params_->request_params); |
4950 } | 4957 } |
4951 return NavigationStateImpl::CreateContentInitiated(); | 4958 return NavigationStateImpl::CreateContentInitiated(); |
4952 } | 4959 } |
4953 | 4960 |
4954 #if defined(OS_ANDROID) | 4961 #if defined(OS_ANDROID) |
4955 | |
4956 WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer( | 4962 WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer( |
4957 WebMediaPlayerClient* client, | 4963 WebMediaPlayerClient* client, |
4958 WebMediaPlayerEncryptedMediaClient* encrypted_client, | 4964 WebMediaPlayerEncryptedMediaClient* encrypted_client, |
4959 media::MediaPermission* media_permission, | 4965 const media::WebMediaPlayerParams& params) { |
4960 WebContentDecryptionModule* initial_cdm) { | |
4961 scoped_refptr<StreamTextureFactory> stream_texture_factory; | 4966 scoped_refptr<StreamTextureFactory> stream_texture_factory; |
4962 if (SynchronousCompositorFactory* factory = | 4967 if (SynchronousCompositorFactory* factory = |
4963 SynchronousCompositorFactory::GetInstance()) { | 4968 SynchronousCompositorFactory::GetInstance()) { |
4964 stream_texture_factory = factory->CreateStreamTextureFactory(routing_id_); | 4969 stream_texture_factory = factory->CreateStreamTextureFactory(routing_id_); |
4965 } else { | 4970 } else { |
4966 GpuChannelHost* gpu_channel_host = | 4971 GpuChannelHost* gpu_channel_host = |
4967 RenderThreadImpl::current()->EstablishGpuChannelSync( | 4972 RenderThreadImpl::current()->EstablishGpuChannelSync( |
4968 CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE); | 4973 CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE); |
4969 | 4974 |
4970 if (!gpu_channel_host) { | 4975 if (!gpu_channel_host) { |
4971 LOG(ERROR) << "Failed to establish GPU channel for media player"; | 4976 LOG(ERROR) << "Failed to establish GPU channel for media player"; |
4972 return NULL; | 4977 return NULL; |
4973 } | 4978 } |
4974 | 4979 |
4975 scoped_refptr<cc_blink::ContextProviderWebContext> context_provider = | 4980 scoped_refptr<cc_blink::ContextProviderWebContext> context_provider = |
4976 RenderThreadImpl::current()->SharedMainThreadContextProvider(); | 4981 RenderThreadImpl::current()->SharedMainThreadContextProvider(); |
4977 | 4982 |
4978 if (!context_provider.get()) { | 4983 if (!context_provider.get()) { |
4979 LOG(ERROR) << "Failed to get context3d for media player"; | 4984 LOG(ERROR) << "Failed to get context3d for media player"; |
4980 return NULL; | 4985 return NULL; |
4981 } | 4986 } |
4982 | 4987 |
4983 stream_texture_factory = StreamTextureFactoryImpl::Create( | 4988 stream_texture_factory = StreamTextureFactoryImpl::Create( |
4984 context_provider, gpu_channel_host, routing_id_); | 4989 context_provider, gpu_channel_host, routing_id_); |
4985 } | 4990 } |
4986 | 4991 |
4987 return new WebMediaPlayerAndroid( | 4992 return new WebMediaPlayerAndroid( |
4988 frame_, client, encrypted_client, weak_factory_.GetWeakPtr(), | 4993 frame_, client, encrypted_client, weak_factory_.GetWeakPtr(), |
4989 GetMediaPlayerManager(), GetCdmFactory(), media_permission, initial_cdm, | 4994 GetMediaPlayerManager(), GetCdmFactory(), stream_texture_factory, params); |
4990 stream_texture_factory, | |
4991 RenderThreadImpl::current()->GetMediaThreadTaskRunner(), | |
4992 new RenderMediaLog()); | |
4993 } | 4995 } |
4994 | 4996 |
4995 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { | 4997 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { |
4996 if (!media_player_manager_) | 4998 if (!media_player_manager_) |
4997 media_player_manager_ = new RendererMediaPlayerManager(this); | 4999 media_player_manager_ = new RendererMediaPlayerManager(this); |
4998 return media_player_manager_; | 5000 return media_player_manager_; |
4999 } | 5001 } |
5000 | |
5001 #endif // defined(OS_ANDROID) | 5002 #endif // defined(OS_ANDROID) |
5002 | 5003 |
5003 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { | 5004 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { |
5004 if (!media_permission_dispatcher_) | 5005 if (!media_permission_dispatcher_) |
5005 media_permission_dispatcher_ = new MediaPermissionDispatcher(this); | 5006 media_permission_dispatcher_ = new MediaPermissionDispatcher(this); |
5006 return media_permission_dispatcher_; | 5007 return media_permission_dispatcher_; |
5007 } | 5008 } |
5008 | 5009 |
5009 #if defined(ENABLE_MOJO_MEDIA) | 5010 #if defined(ENABLE_MOJO_MEDIA) |
5010 media::interfaces::ServiceFactory* RenderFrameImpl::GetMediaServiceFactory() { | 5011 media::interfaces::ServiceFactory* RenderFrameImpl::GetMediaServiceFactory() { |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
5075 void RenderFrameImpl::RegisterMojoServices() { | 5076 void RenderFrameImpl::RegisterMojoServices() { |
5076 // Only main frame have ImageDownloader service. | 5077 // Only main frame have ImageDownloader service. |
5077 if (!frame_->parent()) { | 5078 if (!frame_->parent()) { |
5078 GetServiceRegistry()->AddService<image_downloader::ImageDownloader>( | 5079 GetServiceRegistry()->AddService<image_downloader::ImageDownloader>( |
5079 base::Bind(&ImageDownloaderImpl::CreateMojoService, | 5080 base::Bind(&ImageDownloaderImpl::CreateMojoService, |
5080 base::Unretained(this))); | 5081 base::Unretained(this))); |
5081 } | 5082 } |
5082 } | 5083 } |
5083 | 5084 |
5084 } // namespace content | 5085 } // namespace content |
OLD | NEW |