Index: chrome/renderer/media/gles2_video_decode_context.h |
=================================================================== |
--- chrome/renderer/media/gles2_video_decode_context.h (revision 78386) |
+++ chrome/renderer/media/gles2_video_decode_context.h (working copy) |
@@ -1,113 +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_MEDIA_GLES2_VIDEO_DECODE_CONTEXT_H_ |
-#define CHROME_RENDERER_MEDIA_GLES2_VIDEO_DECODE_CONTEXT_H_ |
- |
-#include <vector> |
- |
-#include "media/video/video_decode_context.h" |
- |
-class MessageLoop; |
- |
-namespace ggl { |
-class Context; |
-} // namespace ggl |
- |
-// FUNCTIONS |
-// |
-// This is a class that provides a video decode context using a ggl::Context |
-// backend. |
-// |
-// It provides resources for a VideoDecodeEngine to store decoded video frames. |
-// |
-// This class is aware of the command buffer implementation of GLES2 inside the |
-// Chrome renderer and keeps a reference of ggl::Context. It might use GLES2 |
-// commands specific to Chrome's renderer process to provide needed resources. |
-// |
-// There are two different kinds of video frame storage provided by this class: |
-// 1. Memory mapped textures (aka software decoding mode). |
-// Each texture is memory mapped and appears to the VideoDecodeEngine as |
-// system memory. |
-// |
-// The usage of the textures is that the VideoDecodeEngine is performing |
-// software video decoding and use them as if they are allocated in plain |
-// system memory (in fact they are allocated in system memory and shared |
-// bwith the GPU process). An additional step of uploading the content to |
-// video memory is needed. Since VideoDecodeEngine is unaware of the video |
-// memory, this upload operation is performed by calling |
-// ConvertToVideoFrame(). |
-// |
-// After the content is uploaded to video memory, WebKit will see the video |
-// frame as textures and will perform the necessary operations for |
-// rendering. |
-// |
-// 2. Opaque textures (aka hardware decoding mode). |
-// In this mode of operation each video frame is backed by some opaque |
-// textures. This is used only when hardware video decoding is used. The |
-// textures needs to be generated and allocated inside the renderer process |
-// first. This will establish a translation between texture ID in the |
-// renderer process and the GPU process. |
-// |
-// The texture ID generated is used by IpcVideoDecodeEngine only to be sent |
-// the GPU process. Inside the GPU process the texture ID is translated to |
-// a real texture ID inside the actual context. The real texture ID is then |
-// assigned to the hardware video decoder for storing the video frame. |
-// |
-// WebKit will see the video frame as a normal textures and perform |
-// necessary render operations. |
-// |
-// In both operation modes, the objective is to have WebKit see the video frames |
-// as regular textures. |
-// |
-// THREAD SEMANTICS |
-// |
-// All methods of this class can be called on any thread. GLES2 context and all |
-// OpenGL method calls are accessed on the Render Thread. As as result all Tasks |
-// given to this object are executed on the Render Thread. |
-// |
-// Since this class is not refcounted, it is important to destroy objects of |
-// this class only when the Task given to Destroy() is called. |
-// |
-class Gles2VideoDecodeContext : public media::VideoDecodeContext { |
- public: |
- // |message_loop| is the message of the Render Thread. |
- // |memory_mapped| determines if textures allocated are memory mapped. |
- // |context| is the graphics context for generating textures. |
- Gles2VideoDecodeContext(MessageLoop* message_loop, |
- bool memory_mapped, ggl::Context* context); |
- virtual ~Gles2VideoDecodeContext(); |
- |
- // media::VideoDecodeContext implementation. |
- virtual void* GetDevice(); |
- virtual void AllocateVideoFrames( |
- int frames_num, size_t width, size_t height, |
- media::VideoFrame::Format format, |
- std::vector<scoped_refptr<media::VideoFrame> >* frames_out, Task* task); |
- virtual void ReleaseAllVideoFrames(); |
- virtual void ConvertToVideoFrame(void* buffer, |
- scoped_refptr<media::VideoFrame> frame, |
- Task* task); |
- virtual void Destroy(Task* task); |
- |
- // Accessor of the current mode of this decode context. |
- bool IsMemoryMapped() const { return memory_mapped_; } |
- |
- private: |
- // Message loop for Render Thread. |
- MessageLoop* message_loop_; |
- |
- // Type of storage provided by this class. |
- bool memory_mapped_; |
- |
- // Pointer to the GLES2 context. |
- ggl::Context* context_; |
- |
- // VideoFrames allocated. |
- std::vector<scoped_refptr<media::VideoFrame> > frames_; |
- |
- DISALLOW_COPY_AND_ASSIGN(Gles2VideoDecodeContext); |
-}; |
- |
-#endif // CHROME_RENDERER_MEDIA_GLES2_VIDEO_DECODE_CONTEXT_H_ |