Index: content/renderer/render_view_impl.cc |
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
index 181b273f6f4075fdd0ab19f3cceb9564ad91c74e..66ceab2aacbd89449f1a5fa514884ac73a1c4909 100644 |
--- a/content/renderer/render_view_impl.cc |
+++ b/content/renderer/render_view_impl.cc |
@@ -2498,8 +2498,17 @@ WebMediaPlayer* RenderViewImpl::createMediaPlayer( |
const CommandLine* cmd_line = CommandLine::ForCurrentProcess(); |
#if defined(OS_ANDROID) |
- // TODO(qinmin): upstream the implementation of getting WebGraphicsContext3D |
- // and GpuChannelHost here to replace the NULL params. |
+ WebGraphicsContext3D* resource_context = |
+ GetWebView()->sharedGraphicsContext3D(); |
+ |
+ GpuChannelHost* gpu_channel_host = |
+ RenderThreadImpl::current()->EstablishGpuChannelSync( |
+ content::CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE); |
+ if (!gpu_channel_host) { |
+ LOG(ERROR) << "Failed to establish GPU channel for media player"; |
+ return NULL; |
+ } |
+ |
if (cmd_line->HasSwitch(switches::kMediaPlayerInRenderProcess)) { |
if (!media_bridge_manager_.get()) { |
media_bridge_manager_.reset( |
@@ -2512,7 +2521,7 @@ WebMediaPlayer* RenderViewImpl::createMediaPlayer( |
media_player_manager_.get(), |
media_bridge_manager_.get(), |
new content::StreamTextureFactoryImpl( |
- NULL, NULL, routing_id_), |
+ resource_context, gpu_channel_host, routing_id_), |
cmd_line->HasSwitch(switches::kDisableMediaHistoryLogging)); |
} |
if (!media_player_proxy_) { |
@@ -2525,7 +2534,7 @@ WebMediaPlayer* RenderViewImpl::createMediaPlayer( |
media_player_manager_.get(), |
media_player_proxy_, |
new content::StreamTextureFactoryImpl( |
- NULL, NULL, routing_id_)); |
+ resource_context, gpu_channel_host, routing_id_)); |
#endif |
media::MessageLoopFactory* message_loop_factory = |