| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef CHROME_GPU_GPU_VIDEO_DECODER_H_ | |
| 6 #define CHROME_GPU_GPU_VIDEO_DECODER_H_ | |
| 7 | |
| 8 #include "base/basictypes.h" | |
| 9 #include "base/callback.h" | |
| 10 #include "base/ref_counted.h" | |
| 11 #include "base/scoped_ptr.h" | |
| 12 #include "chrome/common/gpu_video_common.h" | |
| 13 #include "ipc/ipc_channel.h" | |
| 14 | |
| 15 class GpuChannel; | |
| 16 | |
| 17 class GpuVideoDecoder | |
| 18 : public IPC::Channel::Listener, | |
| 19 public base::RefCountedThreadSafe<GpuVideoDecoder> { | |
| 20 | |
| 21 public: | |
| 22 // IPC::Channel::Listener. | |
| 23 virtual void OnChannelConnected(int32 peer_pid); | |
| 24 virtual void OnChannelError(); | |
| 25 virtual void OnMessageReceived(const IPC::Message& message); | |
| 26 | |
| 27 virtual bool DoInitialize(const GpuVideoDecoderInitParam& init_param, | |
| 28 GpuVideoDecoderInitDoneParam* done_param) = 0; | |
| 29 virtual bool DoUninitialize() = 0; | |
| 30 virtual void DoFlush() = 0; | |
| 31 virtual void DoEmptyThisBuffer( | |
| 32 const GpuVideoDecoderInputBufferParam& buffer) = 0; | |
| 33 virtual void DoFillThisBuffer( | |
| 34 const GpuVideoDecoderOutputBufferParam& frame) = 0; | |
| 35 virtual void DoFillThisBufferDoneACK() = 0; | |
| 36 | |
| 37 GpuVideoDecoder(const GpuVideoDecoderInfoParam* param, | |
| 38 GpuChannel* channel_, | |
| 39 base::ProcessHandle handle); | |
| 40 virtual ~GpuVideoDecoder() {} | |
| 41 | |
| 42 protected: | |
| 43 // Output message helper. | |
| 44 void SendInitializeDone(const GpuVideoDecoderInitDoneParam& param); | |
| 45 void SendUninitializeDone(); | |
| 46 void SendFlushDone(); | |
| 47 void SendEmptyBufferDone(); | |
| 48 void SendEmptyBufferACK(); | |
| 49 void SendFillBufferDone(const GpuVideoDecoderOutputBufferParam& frame); | |
| 50 | |
| 51 int32 route_id() { return decoder_host_route_id_; } | |
| 52 | |
| 53 int32 decoder_host_route_id_; | |
| 54 GpuChannel* channel_; | |
| 55 base::ProcessHandle renderer_handle_; | |
| 56 | |
| 57 GpuVideoDecoderInitParam init_param_; | |
| 58 GpuVideoDecoderInitDoneParam done_param_; | |
| 59 | |
| 60 scoped_ptr<base::SharedMemory> input_transfer_buffer_; | |
| 61 scoped_ptr<base::SharedMemory> output_transfer_buffer_; | |
| 62 | |
| 63 private: | |
| 64 // Input message handler. | |
| 65 void OnInitialize(const GpuVideoDecoderInitParam& param); | |
| 66 void OnUninitialize(); | |
| 67 void OnFlush(); | |
| 68 void OnEmptyThisBuffer(const GpuVideoDecoderInputBufferParam& buffer); | |
| 69 void OnFillThisBuffer(const GpuVideoDecoderOutputBufferParam& frame); | |
| 70 void OnFillThisBufferDoneACK(); | |
| 71 | |
| 72 DISALLOW_COPY_AND_ASSIGN(GpuVideoDecoder); | |
| 73 }; | |
| 74 | |
| 75 #endif // CHROME_GPU_GPU_VIDEO_DECODER_H_ | |
| 76 | |
| OLD | NEW |