Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index 18801c0766f9457c375b7b23866efa4305ea822d..507d351117cd1114dd42edc245d9897269b6c377 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -240,6 +240,12 @@ |
#include "media/mojo/clients/mojo_cdm_factory.h" // nogncheck |
#endif |
+#if BUILDFLAG(ENABLE_MOJO_MEDIA_PLAYER_RENDERER) |
+#include "content/renderer/media/android/media_player_renderer_client_factory.h" |
+#include "content/renderer/media/android/stream_texture_wrapper_impl.h" |
+#include "media/mojo/clients/mojo_renderer_factory.h" // nogncheck |
+#endif |
+ |
#if defined(ENABLE_MOJO_RENDERER) |
#include "media/mojo/clients/mojo_renderer_factory.h" // nogncheck |
#else |
@@ -2669,24 +2675,26 @@ blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( |
base::Unretained(blink::mainThreadIsolate())), |
initial_cdm, media_surface_manager_); |
-#if defined(OS_ANDROID) |
+#if BUILDFLAG(ENABLE_MOJO_MEDIA_PLAYER_RENDERER) |
+ if (!UseWebMediaPlayerImpl(url)) { |
+ return CreateMojoMediaPlayerRenderer(client, encrypted_client, url, params); |
+ } |
+#elif defined(OS_ANDROID) |
if (!UseWebMediaPlayerImpl(url)) { |
return CreateAndroidWebMediaPlayer(client, encrypted_client, params); |
} |
#endif // defined(OS_ANDROID) |
#if defined(ENABLE_MOJO_RENDERER) |
- std::unique_ptr<media::RendererFactory> media_renderer_factory( |
- new media::MojoRendererFactory( |
- base::Bind(&RenderThreadImpl::GetGpuFactories, |
- base::Unretained(render_thread)), |
- GetMediaInterfaceProvider())); |
+ auto media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( |
+ base::Bind(&RenderThreadImpl::GetGpuFactories, |
+ base::Unretained(render_thread)), |
+ GetMediaInterfaceProvider()); |
#else |
- std::unique_ptr<media::RendererFactory> media_renderer_factory( |
- new media::DefaultRendererFactory( |
- media_log, GetDecoderFactory(), |
- base::Bind(&RenderThreadImpl::GetGpuFactories, |
- base::Unretained(render_thread)))); |
+ auto media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
+ media_log, GetDecoderFactory(), |
+ base::Bind(&RenderThreadImpl::GetGpuFactories, |
+ base::Unretained(render_thread))); |
#endif // defined(ENABLE_MOJO_RENDERER) |
if (!url_index_.get() || url_index_->frame() != frame_) |
@@ -6196,9 +6204,44 @@ RendererMediaSessionManager* RenderFrameImpl::GetMediaSessionManager() { |
media_session_manager_ = new RendererMediaSessionManager(this); |
return media_session_manager_; |
} |
- |
#endif // defined(OS_ANDROID) |
+#if BUILDFLAG(ENABLE_MOJO_MEDIA_PLAYER_RENDERER) |
+WebMediaPlayer* RenderFrameImpl::CreateMojoMediaPlayerRenderer( |
liberato (no reviews please)
2016/10/06 14:55:46
lots of this is common to the normal wmpi case. i
tguilbert
2016/10/11 18:54:33
I had found that, for the time being, it was clear
|
+ WebMediaPlayerClient* client, |
+ WebMediaPlayerEncryptedMediaClient* encrypted_client, |
+ blink::WebURL url, |
+ const media::WebMediaPlayerParams& params) { |
+ RenderThreadImpl* render_thread = RenderThreadImpl::current(); |
+ |
+ auto mojo_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( |
+ media::MojoRendererFactory::GetGpuFactoriesCB(), |
+ GetRemoteInterfaces()->get()); |
+ |
+ auto media_renderer_factory = |
+ base::MakeUnique<MediaPlayerRendererClientFactory>( |
+ render_thread->compositor_task_runner(), |
+ std::move(mojo_renderer_factory), |
+ base::Bind(&StreamTextureWrapperImpl::Create, |
+ render_thread->GetStreamTexureFactory(), |
+ base::ThreadTaskRunnerHandle::Get())); |
+ |
+ if (!url_index_.get() || url_index_->frame() != frame_) |
+ url_index_.reset(new media::UrlIndex(frame_)); |
+ |
+ media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( |
+ frame_, client, encrypted_client, |
+ GetWebMediaPlayerDelegate()->AsWeakPtr(), |
+ std::move(media_renderer_factory), url_index_, params); |
+ |
+ media_player->SetMediaPlayerManager(GetMediaPlayerManager()); |
+ media_player->SetDeviceScaleFactor(render_view_->GetDeviceScaleFactor()); |
+ media_player->EnableFallbackMediaPlayer(url); |
+ |
+ return media_player; |
+} |
+#endif // BUILDFLAG(ENABLE_MOJO_MEDIA_PLAYER_RENDERER) |
+ |
media::MediaPermission* RenderFrameImpl::GetMediaPermission() { |
if (!media_permission_dispatcher_) { |
media_permission_dispatcher_.reset(new MediaPermissionDispatcher(base::Bind( |