Chromium Code Reviews| Index: content/renderer/render_frame_impl.cc |
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
| index e38d3616ce7d85fc9231f9db613862dbd83f9ff0..4a159af03dace4ba359be7a10a121696288a9cdd 100644 |
| --- a/content/renderer/render_frame_impl.cc |
| +++ b/content/renderer/render_frame_impl.cc |
| @@ -160,6 +160,7 @@ |
| #include "media/base/media.h" |
| #include "media/base/media_log.h" |
| #include "media/base/media_switches.h" |
| +#include "media/base/renderer_factory_selector.h" |
| #include "media/blink/url_index.h" |
| #include "media/blink/webencryptedmediaclient_impl.h" |
| #include "media/blink/webmediaplayer_impl.h" |
| @@ -2891,6 +2892,7 @@ blink::WebMediaPlayer* RenderFrameImpl::CreateMediaPlayer( |
| #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>( |
| @@ -2904,6 +2906,8 @@ blink::WebMediaPlayer* RenderFrameImpl::CreateMediaPlayer( |
| render_thread->EnableStreamTextureCopy(), |
| render_thread->GetStreamTexureFactory(), |
| base::ThreadTaskRunnerHandle::Get())); |
| + |
| + factory_type = media::RendererFactorySelector::FactoryType::MEDIA_PLAYER; |
| #endif // defined(OS_ANDROID) |
| } else { |
| #if defined(ENABLE_MOJO_RENDERER) |
| @@ -2914,6 +2918,8 @@ blink::WebMediaPlayer* RenderFrameImpl::CreateMediaPlayer( |
| 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) { |
| @@ -2921,12 +2927,16 @@ blink::WebMediaPlayer* RenderFrameImpl::CreateMediaPlayer( |
| 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) |
| } |
| @@ -2934,11 +2944,18 @@ blink::WebMediaPlayer* RenderFrameImpl::CreateMediaPlayer( |
| media_renderer_factory = |
| base::MakeUnique<media::remoting::AdaptiveRendererFactory>( |
| std::move(media_renderer_factory), std::move(remoting_controller)); |
|
ncarter (slow)
2017/04/24 17:14:33
This step looks little strange to me -- since the
tguilbert
2017/04/24 19:31:16
It does :) One of the RendererFactorySelector's go
ncarter (slow)
2017/04/24 19:50:29
lgtm then
|
| + |
| + factory_type = media::RendererFactorySelector::FactoryType::ADAPTIVE; |
| #endif |
| 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); |
| + |
| std::unique_ptr<media::WebMediaPlayerParams> params( |
| new media::WebMediaPlayerParams( |
| std::move(media_log), |
| @@ -2960,7 +2977,7 @@ blink::WebMediaPlayer* RenderFrameImpl::CreateMediaPlayer( |
| media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( |
| frame_, client, encrypted_client, GetWebMediaPlayerDelegate(), |
| - std::move(media_renderer_factory), url_index_, std::move(params)); |
| + std::move(factory_selector), url_index_, std::move(params)); |
| #if defined(OS_ANDROID) // WMPI_CAST |
| media_player->SetMediaPlayerManager(GetMediaPlayerManager()); |