Index: chrome/renderer/gpu_video_decoder_host.h |
=================================================================== |
--- chrome/renderer/gpu_video_decoder_host.h (revision 55418) |
+++ chrome/renderer/gpu_video_decoder_host.h (working copy) |
@@ -1,126 +0,0 @@ |
-// Copyright (c) 2010 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. |
- |
-#ifndef CHROME_RENDERER_GPU_VIDEO_DECODER_HOST_H_ |
-#define CHROME_RENDERER_GPU_VIDEO_DECODER_HOST_H_ |
- |
-#include <deque> |
- |
-#include "base/singleton.h" |
-#include "chrome/common/gpu_video_common.h" |
-#include "chrome/renderer/gpu_channel_host.h" |
-#include "ipc/ipc_channel_proxy.h" |
-#include "media/base/buffers.h" |
-#include "media/base/video_frame.h" |
- |
-using media::VideoFrame; |
-using media::Buffer; |
- |
-class GpuVideoServiceHost; |
- |
-class GpuVideoDecoderHost |
- : public base::RefCountedThreadSafe<GpuVideoDecoderHost>, |
- public IPC::Channel::Listener { |
- public: |
- class EventHandler { |
- public: |
- virtual void OnInitializeDone( |
- bool success, |
- const GpuVideoDecoderInitDoneParam& param) = 0; |
- virtual void OnUninitializeDone() = 0; |
- virtual void OnFlushDone() = 0; |
- virtual void OnEmptyBufferDone(scoped_refptr<Buffer> buffer) = 0; |
- virtual void OnFillBufferDone(scoped_refptr<VideoFrame> frame) = 0; |
- virtual void OnDeviceError() = 0; |
- }; |
- |
- typedef enum { |
- kStateUninitialized, |
- kStateNormal, |
- kStateError, |
- kStateFlushing, |
- } GpuVideoDecoderHostState; |
- |
- // IPC::Channel::Listener. |
- virtual void OnChannelConnected(int32 peer_pid) {} |
- virtual void OnChannelError(); |
- virtual void OnMessageReceived(const IPC::Message& message); |
- |
- bool Initialize(const GpuVideoDecoderInitParam& param); |
- bool Uninitialize(); |
- void EmptyThisBuffer(scoped_refptr<Buffer> buffer); |
- void FillThisBuffer(scoped_refptr<VideoFrame> frame); |
- bool Flush(); |
- |
- int32 decoder_id() { return decoder_info_.decoder_id_; } |
- int32 route_id() { return decoder_info_.decoder_route_id_; } |
- int32 my_route_id() { return decoder_info_.decoder_host_route_id_; } |
- |
- virtual ~GpuVideoDecoderHost() {} |
- |
- private: |
- GpuVideoDecoderHost(GpuVideoServiceHost* service_host, |
- GpuChannelHost* channel_host, |
- EventHandler* event_handler, |
- GpuVideoDecoderInfoParam decoder_info) |
- : gpu_video_service_host_(service_host), |
- channel_host_(channel_host), |
- event_handler_(event_handler), |
- decoder_info_(decoder_info), |
- buffer_id_serial_(0), |
- state_(kStateUninitialized), |
- input_buffer_busy_(false) {} |
- friend class GpuVideoServiceHost; |
- |
- // Input message handler. |
- void OnInitializeDone(const GpuVideoDecoderInitDoneParam& param); |
- void OnUninitializeDone(); |
- void OnFlushDone(); |
- void OnEmptyThisBufferDone(); |
- void OnFillThisBufferDone(const GpuVideoDecoderOutputBufferParam& param); |
- void OnEmptyThisBufferACK(); |
- |
- // Helper function. |
- void SendInputBufferToGpu(); |
- |
- // We expect that GpuVideoServiceHost's always available during our life span. |
- GpuVideoServiceHost* gpu_video_service_host_; |
- |
- scoped_refptr<GpuChannelHost> channel_host_; |
- |
- // We expect that the client of us will always available during our life span. |
- EventHandler* event_handler_; |
- |
- // Globally identify this decoder in the GPU process. |
- GpuVideoDecoderInfoParam decoder_info_; |
- |
- // Input buffer id serial number generator. |
- int32 buffer_id_serial_; |
- |
- // Hold information about GpuVideoDecoder configuration. |
- GpuVideoDecoderInitParam init_param_; |
- |
- // Hold information about output surface format, etc. |
- GpuVideoDecoderInitDoneParam done_param_; |
- |
- // Current state of video decoder. |
- GpuVideoDecoderHostState state_; |
- |
- // We are not able to push all received buffer to gpu process at once. |
- std::deque<scoped_refptr<Buffer> > input_buffer_queue_; |
- |
- // Currently we do not use ring buffer in input buffer, therefore before |
- // GPU process had finished access it, we should not touch it. |
- bool input_buffer_busy_; |
- |
- // Transfer buffers for both input and output. |
- // TODO(jiesun): remove output buffer when hardware composition is ready. |
- scoped_ptr<base::SharedMemory> input_transfer_buffer_; |
- scoped_ptr<base::SharedMemory> output_transfer_buffer_; |
- |
- DISALLOW_COPY_AND_ASSIGN(GpuVideoDecoderHost); |
-}; |
- |
-#endif // CHROME_RENDERER_GPU_VIDEO_DECODER_HOST_H_ |
- |