Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index b13d2ca3640dfca90cc8cb9b5a984e3e022fee36..0c4de5d2f89292335c3180442a0562eeee3c5c4b 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -221,11 +221,14 @@ |
#include "content/renderer/android/app_web_message_port_client.h" |
#include "content/renderer/java/gin_java_bridge_dispatcher.h" |
+#include "content/renderer/media/android/media_player_renderer_client_factory.h" |
#include "content/renderer/media/android/renderer_media_player_manager.h" |
#include "content/renderer/media/android/renderer_surface_view_manager.h" |
#include "content/renderer/media/android/stream_texture_factory.h" |
+#include "content/renderer/media/android/stream_texture_wrapper_impl.h" |
#include "content/renderer/media/android/webmediaplayer_android.h" |
#include "media/base/android/media_codec_util.h" |
+#include "media/mojo/clients/mojo_renderer_factory.h" // nogncheck |
#include "third_party/WebKit/public/platform/WebFloatPoint.h" |
#endif |
@@ -2737,25 +2740,43 @@ blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( |
base::Unretained(blink::mainThreadIsolate())), |
initial_cdm, media_surface_manager_, media_observer); |
+ bool use_fallback_path = false; |
#if defined(OS_ANDROID) |
- if (!UseWebMediaPlayerImpl(url)) { |
+ use_fallback_path = !UseWebMediaPlayerImpl(url); |
+ |
+ if (use_fallback_path && |
+ !base::FeatureList::IsEnabled(media::kAndroidMediaPlayerRenderer)) { |
return CreateAndroidWebMediaPlayer(client, encrypted_client, params); |
} |
#endif // defined(OS_ANDROID) |
+ std::unique_ptr<media::RendererFactory> media_renderer_factory; |
+ if (use_fallback_path) { |
+#if defined(OS_ANDROID) |
+ auto mojo_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( |
+ media::MojoRendererFactory::GetGpuFactoriesCB(), |
+ GetRemoteInterfaces()->get()); |
+ |
+ 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())); |
+#endif // defined(OS_ANDROID) |
+ } else { |
#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())); |
+ 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)))); |
+ media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
+ media_log, GetDecoderFactory(), |
+ base::Bind(&RenderThreadImpl::GetGpuFactories, |
+ base::Unretained(render_thread))); |
#endif |
+ } |
#if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
media::RemotingController* remoting_controller_ptr = |
@@ -2775,13 +2796,13 @@ blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( |
#if defined(OS_ANDROID) // WMPI_CAST |
media_player->SetMediaPlayerManager(GetMediaPlayerManager()); |
media_player->SetDeviceScaleFactor(render_view_->GetDeviceScaleFactor()); |
+ media_player->SetUseFallbackPath(use_fallback_path); |
#endif // defined(OS_ANDROID) |
#if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
remoting_controller_ptr->SetSwitchRendererCallback(base::Bind( |
&media::WebMediaPlayerImpl::ScheduleRestart, media_player->AsWeakPtr())); |
#endif |
- |
return media_player; |
} |
@@ -6303,7 +6324,6 @@ RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { |
media_player_manager_ = new RendererMediaPlayerManager(this); |
return media_player_manager_; |
} |
- |
#endif // defined(OS_ANDROID) |
media::MediaPermission* RenderFrameImpl::GetMediaPermission() { |