10c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi/* 20c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project 30c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi * 40c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License"); 50c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi * you may not use this file except in compliance with the License. 60c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi * You may obtain a copy of the License at 70c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi * 80c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi * http://www.apache.org/licenses/LICENSE-2.0 90c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi * 100c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi * Unless required by applicable law or agreed to in writing, software 110c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS, 120c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi * See the License for the specific language governing permissions and 140c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi * limitations under the License. 150c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi */ 160c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 170c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi/** 180c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi************************************************************************* 190c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi* @file VideoEditorVideoDecoder_Internal.h 200c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi* @brief StageFright shell video decoder internal header file* 210c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi************************************************************************* 220c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi*/ 230c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 240c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include "M4OSA_Types.h" 250c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include "M4OSA_Debug.h" 260c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include "M4OSA_Memory.h" 270c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include "M4_Common.h" 280c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include "M4OSA_CoreID.h" 290c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 300c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include "M4DA_Types.h" 310c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include "M4READER_Common.h" 320c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include "M4VIFI_FiltersAPI.h" 330c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include "M4TOOL_VersionInfo.h" 340c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include "M4DECODER_Common.h" 350c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include "M4OSA_Semaphore.h" 360c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include "VideoEditorBuffer.h" 370c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include "M4VD_Tools.h" 38d928e772c68a948e3353358eee7a834dc4fb6e43Chih-Chung Chang#include "I420ColorConverter.h" 390c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 400c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include <utils/RefBase.h> 419fc976cb8842a6b147e25f137086ef394b059c76Chih-Chung Chang#include <android/rect.h> 420c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include <OMX_Video.h> 430c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include <media/stagefright/MediaErrors.h> 440c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include <media/stagefright/OMXCodec.h> 450c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include <media/stagefright/OMXClient.h> 460c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include <media/stagefright/MediaSource.h> 470c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include <media/stagefright/MediaBuffer.h> 480c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include <media/stagefright/MediaBufferGroup.h> 490c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#include <media/stagefright/MediaDefs.h> 500c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 510c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#define VIDEOEDITOR_VIDEC_SHELL_VER_MAJOR 0 520c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#define VIDEOEDITOR_VIDEC_SHELL_VER_MINOR 0 530c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#define VIDEOEDITOR_VIDEC_SHELL_VER_REVISION 1 540c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 550c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi/* ERRORS */ 560c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi#define M4ERR_SF_DECODER_RSRC_FAIL M4OSA_ERR_CREATE(M4_ERR, 0xFF, 0x0001) 570c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 580c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundarginamespace android { 590c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 600c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargitypedef enum { 610c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi VIDEOEDITOR_kMpeg4VideoDec, 620c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi VIDEOEDITOR_kH263VideoDec, 630c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi VIDEOEDITOR_kH264VideoDec 640c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi} VIDEOEDITOR_CodecType; 650c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 660c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 670c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi/*typedef struct{ 680c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4OSA_UInt32 stream_byte; 690c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4OSA_UInt32 stream_index; 700c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4OSA_MemAddr8 in; 710c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 720c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi} VIDEOEDITOR_VIDEO_Bitstream_ctxt;*/ 730c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 740c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargitypedef M4VS_Bitstream_ctxt VIDEOEDITOR_VIDEO_Bitstream_ctxt; 750c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 760c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargitypedef struct { 770c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 780c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi /** Stagefrigth params */ 790c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi OMXClient mClient; /**< OMX Client session instance. */ 800c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi sp<MediaSource> mVideoDecoder; /**< Stagefright decoder instance */ 810c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi sp<MediaSource> mReaderSource; /**< Reader access > */ 820c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 830c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi /* READER */ 84b37a9417647c43d6d2713807ed441737c32629f3Chih-Chung Chang M4READER_GlobalInterface *m_pReaderGlobal; 850c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4READER_DataInterface *m_pReader; 860c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4_AccessUnit *m_pNextAccessUnitToDecode; 870c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 880c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi /* STREAM PARAMS */ 890c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4_VideoStreamHandler* m_pVideoStreamhandler; 900c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 910c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi /* User filter params. */ 920c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4VIFI_PlanConverterFunctionType *m_pFilter; 930c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4OSA_Void *m_pFilterUserData; 940c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 950c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4_MediaTime m_lastDecodedCTS; 960c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4_MediaTime m_lastRenderCts; 970c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4OSA_Bool mReachedEOS; 980c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi VIDEOEDITOR_CodecType mDecoderType; 990c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4DECODER_VideoSize m_VideoSize; 1000c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4DECODER_MPEG4_DecoderConfigInfo m_Dci; /**< Decoder Config info */ 1010c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi VIDEOEDITOR_BUFFER_Pool *m_pDecBufferPool; /**< Decoded buffer pool */ 1020c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi OMX_COLOR_FORMATTYPE decOuputColorFormat; 1030c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 1040c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4OSA_UInt32 mNbInputFrames; 1050c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4OSA_Double mFirstInputCts; 1060c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4OSA_Double mLastInputCts; 1070c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4OSA_UInt32 mNbRenderedFrames; 1080c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4OSA_Double mFirstRenderedCts; 1090c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4OSA_Double mLastRenderedCts; 1100c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4OSA_UInt32 mNbOutputFrames; 1110c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4OSA_Double mFirstOutputCts; 1120c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi M4OSA_Double mLastOutputCts; 113eb69601111ca9b14e58c4d1f6738bfde2db422afDharmaray Kundargi M4OSA_Int32 mGivenWidth, mGivenHeight; //Used in case of 114eb69601111ca9b14e58c4d1f6738bfde2db422afDharmaray Kundargi //INFO_FORMAT_CHANGED 1159fc976cb8842a6b147e25f137086ef394b059c76Chih-Chung Chang ARect mCropRect; // These are obtained from kKeyCropRect. 116d928e772c68a948e3353358eee7a834dc4fb6e43Chih-Chung Chang I420ColorConverter* mI420ColorConverter; 1170c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 1180c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi} VideoEditorVideoDecoder_Context; 1190c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi 1200c1c027b0a0b386482d18fac0c35f2b7385d1924Dharmaray Kundargi} //namespace android 121