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