| Index: content/renderer/gpu_video_decode_accelerator_host.cc
|
| ===================================================================
|
| --- content/renderer/gpu_video_decode_accelerator_host.cc (revision 86484)
|
| +++ content/renderer/gpu_video_decode_accelerator_host.cc (working copy)
|
| @@ -1,201 +0,0 @@
|
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "content/renderer/gpu_video_decode_accelerator_host.h"
|
| -
|
| -#include "base/logging.h"
|
| -#include "base/shared_memory.h"
|
| -#include "base/task.h"
|
| -#include "content/common/gpu/gpu_messages.h"
|
| -#include "content/common/view_messages.h"
|
| -#include "content/renderer/render_thread.h"
|
| -#include "ipc/ipc_message_macros.h"
|
| -#include "ipc/ipc_message_utils.h"
|
| -
|
| -using media::VideoDecodeAccelerator;
|
| -using media::VideoDecodeAcceleratorCallback;
|
| -
|
| -GpuVideoDecodeAcceleratorHost::GpuVideoDecodeAcceleratorHost(
|
| - MessageRouter* router,
|
| - IPC::Message::Sender* ipc_sender,
|
| - int32 decoder_host_id,
|
| - VideoDecodeAccelerator::Client* client)
|
| - : router_(router),
|
| - ipc_sender_(ipc_sender),
|
| - decoder_host_id_(decoder_host_id),
|
| - decoder_id_(0),
|
| - client_(client) {
|
| -}
|
| -
|
| -GpuVideoDecodeAcceleratorHost::~GpuVideoDecodeAcceleratorHost() {}
|
| -
|
| -void GpuVideoDecodeAcceleratorHost::OnChannelConnected(int32 peer_pid) {
|
| -}
|
| -
|
| -void GpuVideoDecodeAcceleratorHost::OnChannelError() {
|
| - ipc_sender_ = NULL;
|
| -}
|
| -
|
| -bool GpuVideoDecodeAcceleratorHost::OnMessageReceived(const IPC::Message& msg) {
|
| - bool handled = true;
|
| - IPC_BEGIN_MESSAGE_MAP(GpuVideoDecodeAcceleratorHost, msg)
|
| - IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_BitstreamBufferProcessed,
|
| - OnBitstreamBufferProcessed)
|
| - IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_ProvidePictureBuffers,
|
| - OnProvidePictureBuffer)
|
| - IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_CreateDone,
|
| - OnCreateDone)
|
| - IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_PictureReady,
|
| - OnPictureReady)
|
| - IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_FlushDone,
|
| - OnFlushDone)
|
| - IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_AbortDone,
|
| - OnAbortDone)
|
| - IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_EndOfStream,
|
| - OnEndOfStream)
|
| - IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_ErrorNotification,
|
| - OnErrorNotification)
|
| - IPC_MESSAGE_UNHANDLED(handled = false)
|
| - IPC_END_MESSAGE_MAP()
|
| - DCHECK(handled);
|
| - return handled;
|
| -}
|
| -
|
| -void GpuVideoDecodeAcceleratorHost::GetConfigs(
|
| - const std::vector<uint32>& requested_configs,
|
| - std::vector<uint32>* matched_configs) {
|
| - // TODO(vrk): Need to rethink GetConfigs.
|
| - NOTIMPLEMENTED();
|
| -}
|
| -
|
| -bool GpuVideoDecodeAcceleratorHost::Initialize(
|
| - const std::vector<uint32>& configs) {
|
| - router_->AddRoute(decoder_host_id_, this);
|
| -
|
| - // Temporarily save configs for after create is done and we're
|
| - // ready to initialize.
|
| - configs_ = configs;
|
| -
|
| - if (!ipc_sender_->Send(new GpuChannelMsg_CreateVideoDecoder(
|
| - decoder_id_, configs))) {
|
| - LOG(ERROR) << "Send(GpuChannelMsg_CreateVideoDecoder) failed";
|
| - return false;
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -bool GpuVideoDecodeAcceleratorHost::Decode(
|
| - const media::BitstreamBuffer& bitstream_buffer) {
|
| - if (!ipc_sender_->Send(new AcceleratedVideoDecoderMsg_Decode(
|
| - decoder_id_, bitstream_buffer.id(),
|
| - bitstream_buffer.handle(), bitstream_buffer.size()))) {
|
| - DLOG(ERROR) << "Send(AcceleratedVideoDecoderMsg_Decode) failed";
|
| - return false;
|
| - }
|
| -
|
| - return true;
|
| -}
|
| -
|
| -void GpuVideoDecodeAcceleratorHost::AssignGLESBuffers(
|
| - const std::vector<media::GLESBuffer>& buffers) {
|
| - // Rearrange data for IPC command.
|
| - std::vector<int32> buffer_ids;
|
| - std::vector<uint32> texture_ids;
|
| - std::vector<uint32> context_ids;
|
| - std::vector<gfx::Size> sizes;
|
| - for (uint32 i = 0; i < buffers.size(); i++) {
|
| - const media::BufferInfo& info = buffers[i].buffer_info();
|
| - texture_ids.push_back(buffers[i].texture_id());
|
| - context_ids.push_back(buffers[i].context_id());
|
| - buffer_ids.push_back(info.id());
|
| - sizes.push_back(info.size());
|
| - }
|
| - if (!ipc_sender_->Send(new AcceleratedVideoDecoderMsg_AssignGLESBuffers(
|
| - decoder_id_, buffer_ids, texture_ids, context_ids, sizes))) {
|
| - LOG(ERROR) << "Send(AcceleratedVideoDecoderMsg_AssignGLESBuffers) failed";
|
| - }
|
| -}
|
| -
|
| -void GpuVideoDecodeAcceleratorHost::AssignSysmemBuffers(
|
| - const std::vector<media::SysmemBuffer>& buffers) {
|
| - // TODO(vrk): Implement.
|
| - NOTIMPLEMENTED();
|
| -}
|
| -
|
| -void GpuVideoDecodeAcceleratorHost::ReusePictureBuffer(
|
| - int32 picture_buffer_id) {
|
| - if (!ipc_sender_->Send(new AcceleratedVideoDecoderMsg_ReusePictureBuffer(
|
| - decoder_id_, picture_buffer_id))) {
|
| - LOG(ERROR) << "Send(AcceleratedVideoDecoderMsg_ReusePictureBuffer) failed";
|
| - }
|
| -}
|
| -
|
| -bool GpuVideoDecodeAcceleratorHost::Flush() {
|
| - if (!ipc_sender_->Send(new AcceleratedVideoDecoderMsg_Flush(decoder_id_))) {
|
| - LOG(ERROR) << "Send(AcceleratedVideoDecoderMsg_Flush) failed";
|
| - return false;
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -bool GpuVideoDecodeAcceleratorHost::Abort() {
|
| - if (!ipc_sender_->Send(new AcceleratedVideoDecoderMsg_Abort(decoder_id_))) {
|
| - LOG(ERROR) << "Send(AcceleratedVideoDecoderMsg_Abort) failed";
|
| - return false;
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -void GpuVideoDecodeAcceleratorHost::OnBitstreamBufferProcessed(
|
| - int32 bitstream_buffer_id) {
|
| - client_->NotifyEndOfBitstreamBuffer(bitstream_buffer_id);
|
| -}
|
| -
|
| -void GpuVideoDecodeAcceleratorHost::OnProvidePictureBuffer(
|
| - uint32 num_requested_buffers,
|
| - const gfx::Size& buffer_size,
|
| - int32 mem_type) {
|
| - media::VideoDecodeAccelerator::MemoryType converted_mem_type =
|
| - static_cast<media::VideoDecodeAccelerator::MemoryType>(mem_type);
|
| - client_->ProvidePictureBuffers(
|
| - num_requested_buffers, buffer_size, converted_mem_type);
|
| -}
|
| -
|
| -void GpuVideoDecodeAcceleratorHost::OnDismissPictureBuffer(
|
| - int32 picture_buffer_id) {
|
| - client_->DismissPictureBuffer(picture_buffer_id);
|
| -}
|
| -
|
| -void GpuVideoDecodeAcceleratorHost::OnCreateDone(int32 decoder_id) {
|
| - decoder_id_ = decoder_id;
|
| - if (!ipc_sender_->Send(new AcceleratedVideoDecoderMsg_Initialize(
|
| - decoder_id_, configs_))) {
|
| - LOG(ERROR) << "Send(AcceleratedVideoDecoderMsg_Initialize) failed";
|
| - }
|
| -}
|
| -
|
| -void GpuVideoDecodeAcceleratorHost::OnPictureReady(
|
| - int32 picture_buffer_id, int32 bitstream_buffer_id,
|
| - const gfx::Size& visible_size, const gfx::Size& decoded_size) {
|
| - media::Picture picture(
|
| - picture_buffer_id, bitstream_buffer_id, visible_size, decoded_size);
|
| - client_->PictureReady(picture);
|
| -}
|
| -
|
| -void GpuVideoDecodeAcceleratorHost::OnFlushDone() {
|
| - client_->NotifyFlushDone();
|
| -}
|
| -
|
| -void GpuVideoDecodeAcceleratorHost::OnAbortDone() {
|
| - client_->NotifyAbortDone();
|
| -}
|
| -
|
| -void GpuVideoDecodeAcceleratorHost::OnEndOfStream() {
|
| - client_->NotifyEndOfStream();
|
| -}
|
| -
|
| -void GpuVideoDecodeAcceleratorHost::OnErrorNotification(uint32 error) {
|
| - client_->NotifyError(
|
| - static_cast<media::VideoDecodeAccelerator::Error>(error));
|
| -}
|
|
|