Index: content/common/gpu/media/gpu_video_decode_accelerator.cc |
diff --git a/content/common/gpu/media/gpu_video_decode_accelerator.cc b/content/common/gpu/media/gpu_video_decode_accelerator.cc |
index 3d3a437751177dc61f38356e8e6d6ac9faf5911d..f741cb20418fbecfa99b83d54dd814f131c33892 100644 |
--- a/content/common/gpu/media/gpu_video_decode_accelerator.cc |
+++ b/content/common/gpu/media/gpu_video_decode_accelerator.cc |
@@ -31,8 +31,9 @@ |
#elif defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL) && defined(USE_X11) |
#include "content/common/gpu/media/v4l2_video_decode_accelerator.h" |
#include "content/common/gpu/media/v4l2_video_device.h" |
-#elif defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY) |
+#elif defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY) && defined(USE_X11) |
#include "content/common/gpu/media/vaapi_video_decode_accelerator.h" |
+#include "ui/gl/gl_context_glx.h" |
#include "ui/gl/gl_implementation.h" |
#elif defined(USE_OZONE) |
#include "media/ozone/media_ozone_platform.h" |
@@ -271,9 +272,17 @@ |
make_context_current_, |
device.Pass(), |
io_message_loop_)); |
-#elif defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY) |
- video_decode_accelerator_.reset( |
- new VaapiVideoDecodeAccelerator(make_context_current_)); |
+#elif defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY) && defined(USE_X11) |
+ if (gfx::GetGLImplementation() != gfx::kGLImplementationDesktopGL) { |
+ VLOG(1) << "HW video decode acceleration not available without " |
+ "DesktopGL (GLX)."; |
+ SendCreateDecoderReply(init_done_msg, false); |
+ return; |
+ } |
+ gfx::GLContextGLX* glx_context = |
+ static_cast<gfx::GLContextGLX*>(stub_->decoder()->GetGLContext()); |
+ video_decode_accelerator_.reset(new VaapiVideoDecodeAccelerator( |
+ glx_context->display(), make_context_current_)); |
#elif defined(USE_OZONE) |
media::MediaOzonePlatform* platform = |
media::MediaOzonePlatform::GetInstance(); |