Index: media/filters/omx_video_decode_engine.h |
diff --git a/media/filters/omx_video_decode_engine.h b/media/filters/omx_video_decode_engine.h |
index 7b5e0134c41523d27c65535de015a7a80906046d..da3fe52d4cd17b5f196182c7ac9d17a5e7193973 100644 |
--- a/media/filters/omx_video_decode_engine.h |
+++ b/media/filters/omx_video_decode_engine.h |
@@ -5,8 +5,6 @@ |
#ifndef MEDIA_FILTERS_OMX_VIDEO_DECODE_ENGINE_H_ |
#define MEDIA_FILTERS_OMX_VIDEO_DECODE_ENGINE_H_ |
-#include <functional> |
-#include <list> |
#include <queue> |
#include <vector> |
@@ -20,15 +18,8 @@ |
#include "third_party/openmax/il/OMX_Core.h" |
#include "third_party/openmax/il/OMX_Video.h" |
-class MessageLoop; |
- |
-// FFmpeg types. |
-struct AVStream; |
- |
namespace media { |
-class Buffer; |
- |
class OmxVideoDecodeEngine : public VideoDecodeEngine { |
public: |
OmxVideoDecodeEngine(); |
@@ -80,9 +71,6 @@ class OmxVideoDecodeEngine : public VideoDecodeEngine { |
// calls into other classes |
void FinishEmptyBuffer(scoped_refptr<Buffer> buffer); |
- void OnFormatChange( |
- const OmxConfigurator::MediaFormat& input_format, |
- const OmxConfigurator::MediaFormat& output_format); |
void FinishFillBuffer(OMX_BUFFERHEADERTYPE* buffer); |
// Helper method to perform tasks when this object is stopped. |
void OnStopDone(); |
@@ -135,9 +123,6 @@ class OmxVideoDecodeEngine : public VideoDecodeEngine { |
// Method to send input buffers to component |
void EmptyBufferTask(); |
- // Take one decoded buffer to fulfill one read request. |
- void FulfillOneRead(); |
- |
// Method doing initial reads to get bit stream from demuxer. |
void InitialReadBuffer(); |
@@ -186,6 +171,10 @@ class OmxVideoDecodeEngine : public VideoDecodeEngine { |
void (OmxVideoDecodeEngine::*OnStateSetEventFunc)(OMX_STATETYPE state); |
void (OmxVideoDecodeEngine::*OnFlushEventFunc)(int port); |
+ // Helper function |
+ scoped_refptr<VideoFrame> CreateOmxBufferVideoFrame( |
+ OMX_BUFFERHEADERTYPE* omx_buffer); |
+ |
size_t width_; |
size_t height_; |
@@ -201,10 +190,11 @@ class OmxVideoDecodeEngine : public VideoDecodeEngine { |
bool input_has_fed_eos_; |
bool input_port_flushed_; |
- std::vector<OMX_BUFFERHEADERTYPE*> output_buffers_; |
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_; |
@@ -230,19 +220,20 @@ class OmxVideoDecodeEngine : public VideoDecodeEngine { |
// OMX_EmptyThisBuffer() call. |
std::queue<OMX_BUFFERHEADERTYPE*> available_input_buffers_; |
- // flag for freeing 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_; |
- std::queue<OMX_BUFFERHEADERTYPE*> available_output_frames_; |
- std::queue<OMX_BUFFERHEADERTYPE*> output_frames_ready_; |
bool output_frames_allocated_; |
// port related |
- bool input_port_enabled_; |
bool need_setup_output_port_; |
OmxIlPortState output_port_state_; |
VideoDecodeEngine::EventHandler* event_handler_; |