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

Unified Diff: content/renderer/render_frame_impl.cc

Issue 2387293007: Register MediaPlayerRenderer service (Closed)
Patch Set: Created 4 years, 2 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 side-by-side diff with in-line comments
Download patch
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(

Powered by Google App Engine
This is Rietveld 408576698