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