Index: media/omx/omx_output_sink.h |
diff --git a/media/omx/omx_output_sink.h b/media/omx/omx_output_sink.h |
deleted file mode 100644 |
index b4d076807aabbb06d692bfe4259b1f8a305d0851..0000000000000000000000000000000000000000 |
--- a/media/omx/omx_output_sink.h |
+++ /dev/null |
@@ -1,144 +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. |
-// |
-// An abstract class to define the behavior of an output buffer sink for |
-// media::OmxCodec. It is responsible for negotiation of buffer allocation |
-// for output of media::OmxCodec. It is also responsible for processing buffer |
-// output from OpenMAX decoder. It is important to note that implementor must |
-// assure usage of this class is safe on the thread where media::OmxCodec |
-// lives. Ownership of this object is described in src/media/omx/omx_codec.h. |
-// |
-// BUFFER NEGOTIATION |
-// |
-// One of the key function of OmxOutputSink is to negotiate output buffer |
-// allocation with OmxCodec. There are two modes of operation: |
-// |
-// 1. Buffer is provided by OmxCodec. |
-// |
-// In this case ProvidesEGLImage() will return false and OmxCodec allocates |
-// output buffers during initialization. Here's a sample sequence of actions: |
-// |
-// - OmxCodec allocated buffers during initialization. |
-// - OmxOutputSink::UseThisBuffer(id, buffer) is called to assign an output |
-// buffer header to the sink component. |
-// - OmxOutputSink maps the output buffer as a texture for rendering. |
-// - OmxCodec received dynamic port reconfiguration from the hardware. |
-// - OmxOutputSink::StopUsingThisBuffer(id) is called to release the buffer. |
-// - OmxOutputSink unmaps the output buffer as texture and make sure there |
-// is not reference to it. |
-// - OmxOutputSink::UseThisBuffer(id, buffer) is called to assign a new |
-// output buffer to the sink component. |
-// - ... |
-// |
-// 1. Buffer is provided by OmxCodec as EGL image. |
-// |
-// - OmxOutputSink::AllocateEGLImages(...) is called to request an EGL image |
-// from the sink component, an associated buffer header is created. |
-// - OmxOutputSink::UseThisBuffer(id, buffer) is called to assign an output |
-// buffer header to the sink component. |
-// - OmxOutputSink maps the output buffer as a texture for rendering. |
-// - OmxCodec received dynamic port reconfiguration from the hardware. |
-// - OmxOutputSink::StopUsingThisBuffer(id) is called to release the buffer. |
-// - OmxOutputSink unmaps the output buffer as texture and make sure there |
-// is not reference to it. |
-// - OmxOutputSink::ReleaseEGLImages() is called to tell the sink component |
-// to release all allocated EGL images. |
-// - OmxOutputSink::AllocateEGLImages(...) is called to allocate EGL images. |
-// - ... |
-// |
-// BUFFER READY SIGNALING |
-// |
-// Another key part of OmxOutputSink is to process the output buffer given |
-// by OmxCodec. This is done by signaling the sink component that a |
-// particular buffer is ready. |
-// |
-// This is done through the following sequence: |
-// |
-// - Owner of this object calls BufferReady(buffer_id, callback). |
-// - OmxOutputSink uses the buffer for rendering or other operations |
-// asynchronously. |
-// - Callback provided by BufferReady() is called along with a buffer id to |
-// notify the buffer has been consumed. |
-// |
-// It is up to implementor to decide which thread this callback is executed. |
-// |
-// THREADING |
-// |
-// OmxOutputSink::BufferReady(buffer_id) is called from the owner of this |
-// object which can be made from any thread. All other methods are made on |
-// the thread where OmxCodec lives. |
-// |
-// When the sink component is notified of buffer ready and the buffer is |
-// used BufferUsedCallback is called. There is no gurantee which thread |
-// this call is made. |
-// |
-// OWNERSHIP |
-// |
-// Described in src/media/omx/omx_codec.h. |
- |
-#ifndef MEDIA_OMX_OMX_OUTPUT_SINK_ |
-#define MEDIA_OMX_OMX_OUTPUT_SINK_ |
- |
-#include <vector> |
- |
-#include "base/callback.h" |
-#include "third_party/openmax/il/OMX_Core.h" |
- |
-// TODO(hclam): This is just to get the build going. Remove this when we |
-// include the GLES header. |
-typedef void* EGLImageKHR; |
- |
-namespace media { |
- |
-class OmxOutputSink { |
- public: |
- typedef Callback1<int>::Type BufferUsedCallback; |
- virtual ~OmxOutputSink() {} |
- |
- // Returns true if this sink component provides EGL images as output |
- // buffers. |
- virtual bool ProvidesEGLImages() const = 0; |
- |
- // Returns a list of EGL images allocated by the sink component. The |
- // EGL images will then be given to the hardware decoder for port |
- // configuration. The amount of EGL images created is controlled by the |
- // sink component. The EGL image allocated is owned by the sink |
- // component. |
- // Returns true if allocate was successful. |
- // TODO(hclam): Improve this API once we know what to do with it. |
- virtual bool AllocateEGLImages(int width, int height, |
- std::vector<EGLImageKHR>* images) = 0; |
- |
- // Notify the sink component that OmxCodec has done with the EGL |
- // image allocated by AllocateEGLImages(). They can be released by |
- // the sink component any time. |
- virtual void ReleaseEGLImages( |
- const std::vector<EGLImageKHR>& images) = 0; |
- |
- // Assign a buffer header to the sink component for output. The sink |
- // component will read from the assicated buffer for the decoded frame. |
- // There is also an associated buffer id to identify the buffer. This id |
- // is used in subsequent steps for identifying the right buffer. |
- // Note that the sink component doesn't own the buffer header. |
- // Note that this method is used to assign buffer only at the |
- // initialization stage and is not used for data delivery. |
- virtual void UseThisBuffer(int buffer_id, |
- OMX_BUFFERHEADERTYPE* buffer) = 0; |
- |
- // Tell the sink component to stop using the buffer identified by the |
- // buffer id. |
- // TODO(hclam): Should accept a callback so notify the operation has |
- // completed. |
- virtual void StopUsingThisBuffer(int id) = 0; |
- |
- // Notify the sink component that the buffer identified by buffer id |
- // is ready to be consumed. When the buffer is used, |callback| is |
- // called. Ths callback can be made on any thread. |
- virtual void BufferReady(int buffer_id, |
- BufferUsedCallback* callback) = 0; |
-}; |
- |
-} |
- |
-#endif // MEDIA_OMX_OMX_OUTPUT_SINK_ |