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()); |