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 096178bc478602062e296a870d92c7a362397750..dd31dc1c5c828720ed74e0db577c6937a463d9f6 100644 |
| --- a/content/renderer/render_frame_impl.cc |
| +++ b/content/renderer/render_frame_impl.cc |
| @@ -219,11 +219,14 @@ |
| #include <cpu-features.h> |
| #include "content/renderer/java/gin_java_bridge_dispatcher.h" |
| +#include "content/renderer/media/android/media_player_renderer_client_factory.h" |
| #include "content/renderer/media/android/renderer_media_player_manager.h" |
| #include "content/renderer/media/android/renderer_surface_view_manager.h" |
| #include "content/renderer/media/android/stream_texture_factory.h" |
| +#include "content/renderer/media/android/stream_texture_wrapper_impl.h" |
| #include "content/renderer/media/android/webmediaplayer_android.h" |
| #include "media/base/android/media_codec_util.h" |
| +#include "media/mojo/clients/mojo_renderer_factory.h" // nogncheck |
| #include "third_party/WebKit/public/platform/WebFloatPoint.h" |
| #endif |
| @@ -2696,25 +2699,41 @@ blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( |
| base::Unretained(blink::mainThreadIsolate())), |
| initial_cdm, media_surface_manager_); |
| + bool use_fallback_path = false; |
| #if defined(OS_ANDROID) |
| - if (!UseWebMediaPlayerImpl(url)) { |
| + use_fallback_path = !UseWebMediaPlayerImpl(url); |
| + |
| + if (use_fallback_path && |
| + !base::FeatureList::IsEnabled(media::kEnableMediaPlayerRenderer)) { |
| return CreateAndroidWebMediaPlayer(client, encrypted_client, params); |
| } |
| #endif // defined(OS_ANDROID) |
| + std::unique_ptr<media::RendererFactory> media_renderer_factory; |
| + if (use_fallback_path) { |
| + 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->GetStreamTexureFactory(), |
| + base::ThreadTaskRunnerHandle::Get())); |
| + } else { |
|
xhwang
2016/10/12 20:14:15
Drive-by comment: Does it make sense to put this b
tguilbert
2016/10/12 21:46:24
I think the compiler is smart enough, but I don't
|
| #if defined(ENABLE_MOJO_RENDERER) |
| - std::unique_ptr<media::RendererFactory> media_renderer_factory( |
| - new media::MojoRendererFactory( |
| - base::Bind(&RenderThreadImpl::GetGpuFactories, |
| - base::Unretained(render_thread)), |
| - GetMediaInterfaceProvider())); |
| + media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( |
| + base::Bind(&RenderThreadImpl::GetGpuFactories, |
| + base::Unretained(render_thread)), |
| + GetMediaInterfaceProvider()); |
| #else |
| - std::unique_ptr<media::RendererFactory> media_renderer_factory( |
| - new media::DefaultRendererFactory( |
| - media_log, GetDecoderFactory(), |
| - base::Bind(&RenderThreadImpl::GetGpuFactories, |
| - base::Unretained(render_thread)))); |
| + media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
| + media_log, GetDecoderFactory(), |
| + base::Bind(&RenderThreadImpl::GetGpuFactories, |
| + base::Unretained(render_thread))); |
| #endif // defined(ENABLE_MOJO_RENDERER) |
| + } |
| if (!url_index_.get() || url_index_->frame() != frame_) |
| url_index_.reset(new media::UrlIndex(frame_)); |
| @@ -2732,6 +2751,7 @@ 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 |
| return media_player; |
| @@ -6249,7 +6269,6 @@ RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { |
| media_player_manager_ = new RendererMediaPlayerManager(this); |
| return media_player_manager_; |
| } |
| - |
| #endif // defined(OS_ANDROID) |
| media::MediaPermission* RenderFrameImpl::GetMediaPermission() { |