Index: media/video/omx_video_decode_engine.h |
diff --git a/media/video/omx_video_decode_engine.h b/media/video/omx_video_decode_engine.h |
deleted file mode 100644 |
index e9cc756ecfe278a2d2805609fe36dd700317a365..0000000000000000000000000000000000000000 |
--- a/media/video/omx_video_decode_engine.h |
+++ /dev/null |
@@ -1,246 +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 MEDIA_VIDEO_OMX_VIDEO_DECODE_ENGINE_H_ |
-#define MEDIA_VIDEO_OMX_VIDEO_DECODE_ENGINE_H_ |
- |
-#include <queue> |
-#include <utility> |
-#include <vector> |
- |
-#include "base/callback_old.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "media/omx/omx_configurator.h" |
-#include "media/video/video_decode_engine.h" |
-#include "third_party/openmax/il/OMX_Component.h" |
-#include "third_party/openmax/il/OMX_Core.h" |
-#include "third_party/openmax/il/OMX_Video.h" |
- |
-namespace media { |
- |
-class OmxVideoDecodeEngine : public VideoDecodeEngine { |
- public: |
- OmxVideoDecodeEngine(); |
- virtual ~OmxVideoDecodeEngine(); |
- |
- // Implementation of the VideoDecodeEngine Interface. |
- virtual void Initialize(MessageLoop* message_loop, |
- VideoDecodeEngine::EventHandler* event_handler, |
- VideoDecodeContext* context, |
- const VideoDecoderConfig& config); |
- virtual void ConsumeVideoSample(scoped_refptr<Buffer> buffer); |
- virtual void ProduceVideoFrame(scoped_refptr<VideoFrame> frame); |
- virtual void Uninitialize(); |
- virtual void Flush(); |
- virtual void Seek(); |
- |
- // Subclass can provide a different value. |
- virtual int current_omx_spec_version() const; |
- |
- private: |
- enum OmxIlState { |
- kIlNone, |
- kIlLoaded, |
- kIlIdle, |
- kIlExecuting, |
- kIlPause, |
- kIlInvalid, |
- kIlUnknown, |
- }; |
- |
- enum OmxIlClientState { |
- kClientNotInitialized, |
- kClientInitializing, |
- kClientRunning, |
- kClientStopping, |
- kClientStopped, |
- kClientPausing, |
- kClientFlushing, |
- kClientError, |
- }; |
- |
- enum OmxIlPortState { |
- kPortDisabled, |
- kPortEnabling, |
- kPortEnabled, |
- kPortDisabling, |
- }; |
- |
- typedef Callback0::Type Callback; |
- |
- // calls into other classes |
- void FinishEmptyBuffer(scoped_refptr<Buffer> buffer); |
- void FinishFillBuffer(OMX_BUFFERHEADERTYPE* buffer); |
- // Helper method to perform tasks when this object is stopped. |
- void OnStopDone(); |
- |
- // Transition method sequence for initialization |
- bool CreateComponent(); |
- void DoneSetStateIdle(OMX_STATETYPE state); |
- void DoneSetStateExecuting(OMX_STATETYPE state); |
- void OnPortSettingsChangedRun(int port, OMX_INDEXTYPE index); |
- void OnPortDisableEventRun(int port); |
- void SetupOutputPort(); |
- void OnPortEnableEventRun(int port); |
- |
- // Transition methods for shutdown |
- void DeinitFromExecuting(OMX_STATETYPE state); |
- void DeinitFromIdle(OMX_STATETYPE state); |
- void DeinitFromLoaded(OMX_STATETYPE state); |
- void PauseFromExecuting(OMX_STATETYPE state); |
- void StartFlush(); |
- void PortFlushDone(int port); |
- void ComponentFlushDone(); |
- |
- void StopOnError(); |
- |
- void InitializeTask(); |
- |
- // Methods to free input and output buffers. |
- bool AllocateInputBuffers(); |
- bool AllocateOutputBuffers(); |
- void FreeInputBuffers(); |
- void FreeOutputBuffers(); |
- void FreeInputQueue(); |
- |
- // Helper method to configure port format at LOADED state. |
- bool ConfigureIOPorts(); |
- |
- // Determine whether we can issue fill buffer or empty buffer |
- // to the decoder based on the current state and port state. |
- bool CanEmptyBuffer(); |
- bool CanFillBuffer(); |
- |
- // Determine whether we can use |input_queue_| and |output_queue_| |
- // based on the current state. |
- bool CanAcceptInput(); |
- bool CanAcceptOutput(); |
- |
- bool InputPortFlushed(); |
- bool OutputPortFlushed(); |
- |
- // Method to send input buffers to component |
- void EmptyBufferTask(); |
- |
- // Method doing initial reads to get bit stream from demuxer. |
- void InitialReadBuffer(); |
- |
- // Method doing initial fills to kick start the decoding process. |
- void InitialFillBuffer(); |
- |
- // helper functions |
- void ChangePort(OMX_COMMANDTYPE cmd, int port_index); |
- OMX_BUFFERHEADERTYPE* FindOmxBuffer(scoped_refptr<VideoFrame> video_frame); |
- OMX_STATETYPE GetComponentState(); |
- void SendOutputBufferToComponent(OMX_BUFFERHEADERTYPE *omx_buffer); |
- bool TransitionToState(OMX_STATETYPE new_state); |
- virtual VideoFrame::Format GetSurfaceFormat() const; |
- |
- // Method to handle events |
- void EventHandlerCompleteTask(OMX_EVENTTYPE event, |
- OMX_U32 data1, |
- OMX_U32 data2); |
- |
- // Method to receive buffers from component's input port |
- void EmptyBufferDoneTask(OMX_BUFFERHEADERTYPE* buffer); |
- |
- // Method to receive buffers from component's output port |
- void FillBufferDoneTask(OMX_BUFFERHEADERTYPE* buffer); |
- |
- // The following three methods are static callback methods |
- // for the OMX component. When these callbacks are received, the |
- // call is delegated to the three internal methods above. |
- static OMX_ERRORTYPE EventHandler(OMX_HANDLETYPE component, |
- OMX_PTR priv_data, |
- OMX_EVENTTYPE event, |
- OMX_U32 data1, OMX_U32 data2, |
- OMX_PTR event_data); |
- |
- static OMX_ERRORTYPE EmptyBufferCallback(OMX_HANDLETYPE component, |
- OMX_PTR priv_data, |
- OMX_BUFFERHEADERTYPE* buffer); |
- |
- static OMX_ERRORTYPE FillBufferCallback(OMX_HANDLETYPE component, |
- OMX_PTR priv_data, |
- OMX_BUFFERHEADERTYPE* buffer); |
- |
- // Member function pointers to respond to events |
- void (OmxVideoDecodeEngine::*OnPortDisableEventFunc)(int port); |
- void (OmxVideoDecodeEngine::*OnPortEnableEventFunc)(int port); |
- void (OmxVideoDecodeEngine::*OnStateSetEventFunc)(OMX_STATETYPE state); |
- void (OmxVideoDecodeEngine::*OnFlushEventFunc)(int port); |
- |
- // Helper function |
- scoped_refptr<VideoFrame> CreateOmxBufferVideoFrame( |
- OMX_BUFFERHEADERTYPE* omx_buffer); |
- |
- int width_; |
- int height_; |
- |
- MessageLoop* message_loop_; |
- |
- std::vector<OMX_BUFFERHEADERTYPE*> input_buffers_; |
- int input_buffer_count_; |
- int input_buffer_size_; |
- int input_port_; |
- int input_buffers_at_component_; |
- int input_pending_request_; |
- bool input_queue_has_eos_; |
- bool input_has_fed_eos_; |
- bool input_port_flushed_; |
- |
- int output_buffer_count_; |
- int output_buffer_size_; |
- int output_port_; |
- int output_buffers_at_component_; |
- int output_pending_request_; |
- bool output_eos_; |
- bool output_port_flushed_; |
- bool uses_egl_image_; |
- base::TimeDelta last_pts_; |
- |
- // |il_state_| records the current component state. During state transition |
- // |expected_il_state_| is the next state that the component will transition |
- // to. After a state transition is completed, |il_state_| equals |
- // |expected_il_state_|. Inequality can be used to detect a state transition. |
- // These two members are read and written only on |message_loop_|. |
- OmxIlState il_state_; |
- OmxIlState expected_il_state_; |
- OmxIlClientState client_state_; |
- |
- OMX_HANDLETYPE component_handle_; |
- scoped_ptr<media::OmxConfigurator> configurator_; |
- |
- // Free input OpenMAX buffers that can be used to take input bitstream from |
- // demuxer. |
- std::queue<OMX_BUFFERHEADERTYPE*> free_input_buffers_; |
- |
- // Available input OpenMAX buffers that we can use to issue |
- // OMX_EmptyThisBuffer() call. |
- std::queue<OMX_BUFFERHEADERTYPE*> available_input_buffers_; |
- |
- // flag for freeing input/output buffers |
- bool need_free_input_buffers_; |
- bool need_free_output_buffers_; |
- |
- // for calling flush callback only once. |
- bool flush_pending_; |
- |
- // For output buffer recycling cases. |
- typedef std::pair<scoped_refptr<VideoFrame>, |
- OMX_BUFFERHEADERTYPE*> OutputFrame; |
- std::vector<OutputFrame> output_frames_; |
- bool output_frames_allocated_; |
- |
- // port related |
- bool need_setup_output_port_; |
- OmxIlPortState output_port_state_; |
- VideoDecodeEngine::EventHandler* event_handler_; |
- |
- DISALLOW_COPY_AND_ASSIGN(OmxVideoDecodeEngine); |
-}; |
- |
-} // namespace media |
- |
-#endif // MEDIA_VIDEO_OMX_VIDEO_DECODE_ENGINE_H_ |