/* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** ************************************************************************* * @file VideoEditorVideoDecoder_Internal.h * @brief StageFright shell video decoder internal header file* ************************************************************************* */ #include "M4OSA_Types.h" #include "M4OSA_Debug.h" #include "M4OSA_Memory.h" #include "M4_Common.h" #include "M4OSA_CoreID.h" #include "M4DA_Types.h" #include "M4READER_Common.h" #include "M4VIFI_FiltersAPI.h" #include "M4TOOL_VersionInfo.h" #include "M4DECODER_Common.h" #include "M4OSA_Semaphore.h" #include "VideoEditorBuffer.h" #include "M4VD_Tools.h" #include "I420ColorConverter.h" #include #include #include #include #include #include #include #include #include #include #define VIDEOEDITOR_VIDEC_SHELL_VER_MAJOR 0 #define VIDEOEDITOR_VIDEC_SHELL_VER_MINOR 0 #define VIDEOEDITOR_VIDEC_SHELL_VER_REVISION 1 /* ERRORS */ #define M4ERR_SF_DECODER_RSRC_FAIL M4OSA_ERR_CREATE(M4_ERR, 0xFF, 0x0001) namespace android { typedef enum { VIDEOEDITOR_kMpeg4VideoDec, VIDEOEDITOR_kH263VideoDec, VIDEOEDITOR_kH264VideoDec } VIDEOEDITOR_CodecType; /*typedef struct{ M4OSA_UInt32 stream_byte; M4OSA_UInt32 stream_index; M4OSA_MemAddr8 in; } VIDEOEDITOR_VIDEO_Bitstream_ctxt;*/ typedef M4VS_Bitstream_ctxt VIDEOEDITOR_VIDEO_Bitstream_ctxt; typedef struct { /** Stagefrigth params */ OMXClient mClient; /**< OMX Client session instance. */ sp mVideoDecoder; /**< Stagefright decoder instance */ sp mReaderSource; /**< Reader access > */ /* READER */ M4READER_GlobalInterface *m_pReaderGlobal; M4READER_DataInterface *m_pReader; M4_AccessUnit *m_pNextAccessUnitToDecode; /* STREAM PARAMS */ M4_VideoStreamHandler* m_pVideoStreamhandler; /* User filter params. */ M4VIFI_PlanConverterFunctionType *m_pFilter; M4OSA_Void *m_pFilterUserData; M4_MediaTime m_lastDecodedCTS; M4_MediaTime m_lastRenderCts; M4OSA_Bool mReachedEOS; VIDEOEDITOR_CodecType mDecoderType; M4DECODER_VideoSize m_VideoSize; M4DECODER_MPEG4_DecoderConfigInfo m_Dci; /**< Decoder Config info */ VIDEOEDITOR_BUFFER_Pool *m_pDecBufferPool; /**< Decoded buffer pool */ OMX_COLOR_FORMATTYPE decOuputColorFormat; M4OSA_UInt32 mNbInputFrames; M4OSA_Double mFirstInputCts; M4OSA_Double mLastInputCts; M4OSA_UInt32 mNbRenderedFrames; M4OSA_Double mFirstRenderedCts; M4OSA_Double mLastRenderedCts; M4OSA_UInt32 mNbOutputFrames; M4OSA_Double mFirstOutputCts; M4OSA_Double mLastOutputCts; M4OSA_Int32 mGivenWidth, mGivenHeight; //Used in case of //INFO_FORMAT_CHANGED ARect mCropRect; // These are obtained from kKeyCropRect. I420ColorConverter* mI420ColorConverter; // Time interval between two consequtive/neighboring video frames. M4_MediaTime mFrameIntervalMs; } VideoEditorVideoDecoder_Context; } //namespace android