| 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 c07ee0bdcefef2583c2572039472f0be3064f67c..de423512cb5c3bdcc6f3fb3d6444efb87d4969f6 100644
|
| --- a/content/common/gpu/media/gpu_video_decode_accelerator.cc
|
| +++ b/content/common/gpu/media/gpu_video_decode_accelerator.cc
|
| @@ -20,8 +20,11 @@
|
| #include "ui/gfx/gl/gl_context.h"
|
| #include "ui/gfx/gl/gl_surface_egl.h"
|
| #endif
|
| +#include "gpu/command_buffer/service/texture_manager.h"
|
| #include "ui/gfx/size.h"
|
|
|
| +using gpu::gles2::TextureManager;
|
| +
|
| GpuVideoDecodeAccelerator::GpuVideoDecodeAccelerator(
|
| IPC::Message::Sender* sender,
|
| int32 host_route_id,
|
| @@ -109,16 +112,16 @@ void GpuVideoDecodeAccelerator::Initialize(
|
| DCHECK(!video_decode_accelerator_.get());
|
| DCHECK(!init_done_msg_);
|
| DCHECK(init_done_msg);
|
| + init_done_msg_ = init_done_msg;
|
| #if defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL)
|
| DCHECK(stub_ && stub_->decoder());
|
| - init_done_msg_ = init_done_msg;
|
| OmxVideoDecodeAccelerator* omx_decoder = new OmxVideoDecodeAccelerator(this);
|
| omx_decoder->SetEglState(
|
| gfx::GLSurfaceEGL::GetHardwareDisplay(),
|
| stub_->decoder()->GetGLContext()->GetHandle());
|
| video_decode_accelerator_ = omx_decoder;
|
| video_decode_accelerator_->Initialize(profile);
|
| -#else
|
| +#else // Update RenderViewImpl::createMediaPlayer when adding clauses.
|
| NOTIMPLEMENTED() << "HW video decode acceleration not available.";
|
| NotifyError(media::VideoDecodeAccelerator::PLATFORM_FAILURE);
|
| #endif // defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL)
|
| @@ -136,9 +139,19 @@ void GpuVideoDecodeAccelerator::OnAssignPictureBuffers(
|
| const std::vector<gfx::Size>& sizes) {
|
| DCHECK(stub_ && stub_->decoder()); // Ensure already Initialize()'d.
|
| gpu::gles2::GLES2Decoder* command_decoder = stub_->decoder();
|
| + gpu::gles2::TextureManager* texture_manager =
|
| + command_decoder->GetContextGroup()->texture_manager();
|
|
|
| std::vector<media::PictureBuffer> buffers;
|
| for (uint32 i = 0; i < buffer_ids.size(); ++i) {
|
| + gpu::gles2::TextureManager::TextureInfo* info =
|
| + texture_manager->GetTextureInfo(texture_ids[i]);
|
| + if (!info ||
|
| + !texture_manager->ClearRenderableLevels(command_decoder, info)) {
|
| + // TODO(fischman): send an error for invalid textures.
|
| + DLOG(DFATAL) << "Failed to Clear texture!";
|
| + return;
|
| + }
|
| uint32 service_texture_id;
|
| if (!command_decoder->GetServiceTextureId(
|
| texture_ids[i], &service_texture_id)) {
|
|
|