Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11536)

Unified Diff: chrome/renderer/gpu_video_decoder_host.h

Issue 6713005: Move a bunch of gpu/worker/plugin renderer code to content. I temporarily disabled the sad plugi... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/renderer/gpu_channel_host.cc ('k') | chrome/renderer/gpu_video_decoder_host.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/gpu_video_decoder_host.h
===================================================================
--- chrome/renderer/gpu_video_decoder_host.h (revision 78516)
+++ chrome/renderer/gpu_video_decoder_host.h (working copy)
@@ -1,166 +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.
-
-#ifndef CHROME_RENDERER_GPU_VIDEO_DECODER_HOST_H_
-#define CHROME_RENDERER_GPU_VIDEO_DECODER_HOST_H_
-
-#include <deque>
-#include <map>
-
-#include "base/shared_memory.h"
-#include "base/singleton.h"
-#include "chrome/renderer/gpu_channel_host.h"
-#include "ipc/ipc_message.h"
-#include "media/base/buffers.h"
-#include "media/base/video_frame.h"
-#include "media/video/video_decode_engine.h"
-
-using media::VideoFrame;
-using media::Buffer;
-
-class MessageRouter;
-struct GpuVideoDecoderInitDoneParam;
-
-// This class is used to talk to GpuVideoDecoder in the GPU process through
-// IPC messages. It implements the interface of VideoDecodeEngine so users
-// view it as a regular video decode engine, the implementation is a portal
-// to the GPU process.
-//
-// THREAD SEMANTICS
-//
-// All methods of this class can be accessed on any thread. A message loop
-// needs to be provided to class through Initialize() for accessing the
-// IPC channel. Event handlers are called on that message loop.
-//
-// Since this class is not refcounted, it is important to delete this
-// object only after OnUninitializeCompelte() is called.
-class GpuVideoDecoderHost : public media::VideoDecodeEngine,
- public IPC::Channel::Listener {
- public:
- // |router| is used to dispatch IPC messages to this object.
- // |ipc_sender| is used to send IPC messages to GPU process.
- // It is important that the above two objects are accessed on the
- // |message_loop_|.
- GpuVideoDecoderHost(MessageRouter* router,
- IPC::Message::Sender* ipc_sender,
- int context_route_id,
- int32 decoder_host_id);
- virtual ~GpuVideoDecoderHost();
-
- // IPC::Channel::Listener.
- virtual void OnChannelConnected(int32 peer_pid) {}
- virtual void OnChannelError();
- virtual bool OnMessageReceived(const IPC::Message& message);
-
- // media::VideoDecodeEngine implementation.
- virtual void Initialize(MessageLoop* message_loop,
- VideoDecodeEngine::EventHandler* event_handler,
- media::VideoDecodeContext* context,
- const media::VideoCodecConfig& config);
- virtual void ConsumeVideoSample(scoped_refptr<Buffer> buffer);
- virtual void ProduceVideoFrame(scoped_refptr<VideoFrame> frame);
- virtual void Uninitialize();
- virtual void Flush();
- virtual void Seek();
-
- private:
- typedef std::map<int32, scoped_refptr<media::VideoFrame> > VideoFrameMap;
-
- // Internal states.
- enum GpuVideoDecoderHostState {
- kStateUninitialized,
- kStateNormal,
- kStateError,
- kStateFlushing,
- };
-
- // Takes care of sending IPC message to create a video decoder.
- void CreateVideoDecoder();
-
- // Handlers for messages received from the GPU process.
- void OnCreateVideoDecoderDone(int32 decoder_id);
- void OnInitializeDone(const GpuVideoDecoderInitDoneParam& param);
- void OnUninitializeDone();
- void OnFlushDone();
- void OnPrerollDone();
- void OnEmptyThisBufferACK();
- void OnProduceVideoSample();
- void OnConsumeVideoFrame(int32 frame_id, int64 timestamp,
- int64 duration, int32 flags);
- void OnAllocateVideoFrames(int32 n, uint32 width,
- uint32 height, int32 format);
- void OnReleaseAllVideoFrames();
-
- // Handler for VideoDecodeContext. This method is called when video frames
- // allocation is done.
- void OnAllocateVideoFramesDone();
-
- // Send a message to the GPU process to inform that a video frame is
- // allocated.
- void SendVideoFrameAllocated(int32 frame_id,
- scoped_refptr<media::VideoFrame> frame);
-
- // Send a video sample to the GPU process and tell it to use the buffer for
- // video decoding.
- void SendConsumeVideoSample();
-
- // Look up the frame_id for |frame| and send a message to the GPU process
- // to use that video frame to produce an output.
- void SendProduceVideoFrame(scoped_refptr<media::VideoFrame> frame);
-
- // A router used to send us IPC messages.
- MessageRouter* router_;
-
- // Sends IPC messages to the GPU process.
- IPC::Message::Sender* ipc_sender_;
-
- // Route ID of the GLES2 context in the GPU process.
- int context_route_id_;
-
- // Message loop that this object runs on.
- MessageLoop* message_loop_;
-
- // We expect that the client of us will always available during our life span.
- EventHandler* event_handler_;
-
- // A Context for allocating video frame textures.
- media::VideoDecodeContext* context_;
-
- // Dimensions of the video.
- int width_;
- int height_;
-
- // Current state of video decoder.
- GpuVideoDecoderHostState state_;
-
- // ID of this GpuVideoDecoderHost.
- int32 decoder_host_id_;
-
- // ID of GpuVideoDecoder in the GPU process.
- int32 decoder_id_;
-
- // 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_;
-
- // Frame ID for the newly generated video frame.
- int32 current_frame_id_;
-
- // The list of video frames allocated by VideoDecodeContext.
- std::vector<scoped_refptr<media::VideoFrame> > video_frames_;
-
- // The mapping between video frame ID and a video frame.
- VideoFrameMap video_frame_map_;
-
- DISALLOW_COPY_AND_ASSIGN(GpuVideoDecoderHost);
-};
-
-#endif // CHROME_RENDERER_GPU_VIDEO_DECODER_HOST_H_
« no previous file with comments | « chrome/renderer/gpu_channel_host.cc ('k') | chrome/renderer/gpu_video_decoder_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698