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 32ad5da72f24ffd359bdddac2004fb1b10c34c3d..0d1861d5c92e32ff94fdca5cedd22324af0d6e4d 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" |
| @@ -2907,6 +2908,7 @@ blink::WebMediaPlayer* RenderFrameImpl::CreateMediaPlayer( |
| #endif // defined(OS_ANDROID) |
| std::unique_ptr<media::RendererFactory> media_renderer_factory; |
| + media::RendererFactorySelector::FactoryType factory_type; |
|
tguilbert
2017/04/19 03:24:14
There is some extra boilerplate in this iteration,
|
| if (use_fallback_path) { |
| #if defined(OS_ANDROID) |
| auto mojo_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( |
| @@ -2920,6 +2922,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) |
| @@ -2930,6 +2934,8 @@ blink::WebMediaPlayer* RenderFrameImpl::CreateMediaPlayer( |
| media_log, 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) { |
| @@ -2937,12 +2943,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, GetDecoderFactory(), |
| base::Bind(&RenderThreadImpl::GetGpuFactories, |
| base::Unretained(render_thread))); |
| + |
| + factory_type = media::RendererFactorySelector::FactoryType::DEFAULT; |
| #endif // defined(ENABLE_MOJO_RENDERER) |
| } |
| @@ -2951,14 +2961,21 @@ blink::WebMediaPlayer* RenderFrameImpl::CreateMediaPlayer( |
| media_renderer_factory = |
| base::MakeUnique<media::remoting::AdaptiveRendererFactory>( |
| std::move(media_renderer_factory), std::move(remoting_controller)); |
| + |
| + 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); |
| + |
| media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( |
| frame_, client, encrypted_client, GetWebMediaPlayerDelegate(), |
| - std::move(media_renderer_factory), url_index_, params); |
| + std::move(factory_selector), url_index_, params); |
| #if defined(OS_ANDROID) // WMPI_CAST |
| media_player->SetMediaPlayerManager(GetMediaPlayerManager()); |