| Index: content/renderer/render_frame_impl.cc
|
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
| index 5aead0f6ac08e24b1cd4912a879c6a01cc829075..662e33b24dbe1a3def5c7a162ee295dfaaccfa34 100644
|
| --- a/content/renderer/render_frame_impl.cc
|
| +++ b/content/renderer/render_frame_impl.cc
|
| @@ -2893,63 +2893,62 @@ blink::WebMediaPlayer* RenderFrameImpl::CreateMediaPlayer(
|
| std::unique_ptr<media::MediaLog> media_log(
|
| new RenderMediaLog(url::Origin(security_origin).GetURL()));
|
|
|
| - bool use_fallback_path = false;
|
| + auto factory_selector = base::MakeUnique<media::RendererFactorySelector>();
|
| +
|
| #if defined(OS_ANDROID)
|
| - use_fallback_path = UseMediaPlayerRenderer(url);
|
| + // The only MojoRendererService that is registered at the RenderFrameHost
|
| + // level uses the MediaPlayerRenderer as its underlying media::Renderer.
|
| + auto mojo_media_player_renderer_factory =
|
| + base::MakeUnique<media::MojoRendererFactory>(
|
| + media::MojoRendererFactory::GetGpuFactoriesCB(),
|
| + GetRemoteInterfaces()->get());
|
| +
|
| + // Always give |factory_selector| a MediaPlayerRendererClient factory. WMPI
|
| + // might fallback to it if the final redirected URL is an HLS url.
|
| + factory_selector->AddFactory(
|
| + media::RendererFactorySelector::FactoryType::MEDIA_PLAYER,
|
| + base::MakeUnique<MediaPlayerRendererClientFactory>(
|
| + render_thread->compositor_task_runner(),
|
| + std::move(mojo_media_player_renderer_factory),
|
| + base::Bind(&StreamTextureWrapperImpl::Create,
|
| + render_thread->EnableStreamTextureCopy(),
|
| + render_thread->GetStreamTexureFactory(),
|
| + base::ThreadTaskRunnerHandle::Get())));
|
| +
|
| + factory_selector->SetUseMediaPlayer(UseMediaPlayerRenderer(url));
|
| #endif // defined(OS_ANDROID)
|
|
|
| std::unique_ptr<media::RendererFactory> media_renderer_factory;
|
| media::RendererFactorySelector::FactoryType factory_type;
|
| - 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->EnableStreamTextureCopy(),
|
| - render_thread->GetStreamTexureFactory(),
|
| - base::ThreadTaskRunnerHandle::Get()));
|
| -#endif // defined(OS_ANDROID)
|
|
|
| - // TODO(tguilbert): Move this line back into an #if defined(OS_ANDROID).
|
| - // This will never be reached, unless we are on Android. Moving this line
|
| - // outside of the #if/#endif block fixes a "sometimes-uninitialized" error
|
| - // on desktop. This will be fixed with the next CL for crbug.com/663503.
|
| - factory_type = media::RendererFactorySelector::FactoryType::MEDIA_PLAYER;
|
| - } else {
|
| #if defined(ENABLE_MOJO_RENDERER)
|
| #if BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION)
|
| - if (base::CommandLine::ForCurrentProcess()->HasSwitch(
|
| - switches::kDisableMojoRenderer)) {
|
| - media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>(
|
| - media_log.get(), GetDecoderFactory(),
|
| - base::Bind(&RenderThreadImpl::GetGpuFactories,
|
| - base::Unretained(render_thread)));
|
| -
|
| - factory_type = media::RendererFactorySelector::FactoryType::DEFAULT;
|
| - }
|
| -#endif // BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION)
|
| - if (!media_renderer_factory) {
|
| - media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>(
|
| - base::Bind(&RenderThreadImpl::GetGpuFactories,
|
| - base::Unretained(render_thread)),
|
| - GetMediaInterfaceProvider());
|
| -
|
| - factory_type = media::RendererFactorySelector::FactoryType::MOJO;
|
| - }
|
| -#else
|
| + if (base::CommandLine::ForCurrentProcess()->HasSwitch(
|
| + switches::kDisableMojoRenderer)) {
|
| media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>(
|
| media_log.get(), GetDecoderFactory(),
|
| base::Bind(&RenderThreadImpl::GetGpuFactories,
|
| base::Unretained(render_thread)));
|
|
|
| factory_type = media::RendererFactorySelector::FactoryType::DEFAULT;
|
| -#endif // defined(ENABLE_MOJO_RENDERER)
|
| }
|
| +#endif // BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION)
|
| + if (!media_renderer_factory) {
|
| + media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>(
|
| + base::Bind(&RenderThreadImpl::GetGpuFactories,
|
| + base::Unretained(render_thread)),
|
| + GetMediaInterfaceProvider());
|
| +
|
| + factory_type = media::RendererFactorySelector::FactoryType::MOJO;
|
| + }
|
| +#else
|
| + media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>(
|
| + media_log.get(), GetDecoderFactory(),
|
| + base::Bind(&RenderThreadImpl::GetGpuFactories,
|
| + base::Unretained(render_thread)));
|
| +
|
| + factory_type = media::RendererFactorySelector::FactoryType::DEFAULT;
|
| +#endif // defined(ENABLE_MOJO_RENDERER)
|
|
|
| #if BUILDFLAG(ENABLE_MEDIA_REMOTING)
|
| media_renderer_factory =
|
| @@ -2962,8 +2961,6 @@ blink::WebMediaPlayer* RenderFrameImpl::CreateMediaPlayer(
|
| if (!url_index_.get() || url_index_->frame() != frame_)
|
| url_index_.reset(new media::UrlIndex(frame_));
|
|
|
| - auto factory_selector = base::MakeUnique<media::RendererFactorySelector>();
|
| -
|
| factory_selector->AddFactory(factory_type, std::move(media_renderer_factory));
|
| factory_selector->SetBaseFactoryType(factory_type);
|
|
|
| @@ -2993,7 +2990,6 @@ 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)
|
|
|
| return media_player;
|
|
|