17c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* 27c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project 37c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 47c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License"); 57c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * you may not use this file except in compliance with the License. 67c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * You may obtain a copy of the License at 77c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 87c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * http://www.apache.org/licenses/LICENSE-2.0 97c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Unless required by applicable law or agreed to in writing, software 117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS, 127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * See the License for the specific language governing permissions and 147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * limitations under the License. 157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */ 167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi************************************************************************* 197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi* @file VideoEditorVideoDecoder_Internal.h 207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi* @brief StageFright shell video decoder internal header file* 217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi************************************************************************* 227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/ 237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Types.h" 257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Debug.h" 267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Memory.h" 277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4_Common.h" 287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_CoreID.h" 297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4DA_Types.h" 317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4READER_Common.h" 327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4VIFI_FiltersAPI.h" 337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4TOOL_VersionInfo.h" 347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4DECODER_Common.h" 357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Semaphore.h" 367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "VideoEditorBuffer.h" 377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4VD_Tools.h" 382aa01fd002bba1dde45791c1138c1f71a8d0aa53Chih-Chung Chang#include "I420ColorConverter.h" 397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include <utils/RefBase.h> 417efb8efc88ba529c1c57366a305855c2051ebb8bChih-Chung Chang#include <android/rect.h> 427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include <OMX_Video.h> 437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include <media/stagefright/MediaErrors.h> 447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include <media/stagefright/OMXCodec.h> 457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include <media/stagefright/OMXClient.h> 467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include <media/stagefright/MediaSource.h> 477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include <media/stagefright/MediaBuffer.h> 487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include <media/stagefright/MediaBufferGroup.h> 497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include <media/stagefright/MediaDefs.h> 507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define VIDEOEDITOR_VIDEC_SHELL_VER_MAJOR 0 527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define VIDEOEDITOR_VIDEC_SHELL_VER_MINOR 0 537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define VIDEOEDITOR_VIDEC_SHELL_VER_REVISION 1 547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* ERRORS */ 567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4ERR_SF_DECODER_RSRC_FAIL M4OSA_ERR_CREATE(M4_ERR, 0xFF, 0x0001) 577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundarginamespace android { 597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum { 617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi VIDEOEDITOR_kMpeg4VideoDec, 627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi VIDEOEDITOR_kH263VideoDec, 637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi VIDEOEDITOR_kH264VideoDec 647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} VIDEOEDITOR_CodecType; 657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*typedef struct{ 687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 stream_byte; 697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 stream_index; 707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_MemAddr8 in; 717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} VIDEOEDITOR_VIDEO_Bitstream_ctxt;*/ 737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4VS_Bitstream_ctxt VIDEOEDITOR_VIDEO_Bitstream_ctxt; 757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct { 777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /** Stagefrigth params */ 797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi OMXClient mClient; /**< OMX Client session instance. */ 807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi sp<MediaSource> mVideoDecoder; /**< Stagefright decoder instance */ 817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi sp<MediaSource> mReaderSource; /**< Reader access > */ 827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* READER */ 84b3626dda1df18de2398d6c91647c9d544dd5f6dcChih-Chung Chang M4READER_GlobalInterface *m_pReaderGlobal; 857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4READER_DataInterface *m_pReader; 867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4_AccessUnit *m_pNextAccessUnitToDecode; 877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* STREAM PARAMS */ 897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4_VideoStreamHandler* m_pVideoStreamhandler; 907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* User filter params. */ 927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VIFI_PlanConverterFunctionType *m_pFilter; 937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Void *m_pFilterUserData; 947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4_MediaTime m_lastDecodedCTS; 967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4_MediaTime m_lastRenderCts; 977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool mReachedEOS; 987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi VIDEOEDITOR_CodecType mDecoderType; 997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4DECODER_VideoSize m_VideoSize; 1007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4DECODER_MPEG4_DecoderConfigInfo m_Dci; /**< Decoder Config info */ 1017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi VIDEOEDITOR_BUFFER_Pool *m_pDecBufferPool; /**< Decoded buffer pool */ 1027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi OMX_COLOR_FORMATTYPE decOuputColorFormat; 1037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 mNbInputFrames; 1057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Double mFirstInputCts; 1067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Double mLastInputCts; 1077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 mNbRenderedFrames; 1087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Double mFirstRenderedCts; 1097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Double mLastRenderedCts; 1107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 mNbOutputFrames; 1117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Double mFirstOutputCts; 1127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Double mLastOutputCts; 11335cb2de64cb6482a08f446e80733e7d344a0dcacDharmaray Kundargi M4OSA_Int32 mGivenWidth, mGivenHeight; //Used in case of 11435cb2de64cb6482a08f446e80733e7d344a0dcacDharmaray Kundargi //INFO_FORMAT_CHANGED 1157efb8efc88ba529c1c57366a305855c2051ebb8bChih-Chung Chang ARect mCropRect; // These are obtained from kKeyCropRect. 1162aa01fd002bba1dde45791c1138c1f71a8d0aa53Chih-Chung Chang I420ColorConverter* mI420ColorConverter; 1177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1183e1e78ccd5936111f31a709592f11aa7c677c42dJames Dong // Time interval between two consequtive/neighboring video frames. 1193e1e78ccd5936111f31a709592f11aa7c677c42dJames Dong M4_MediaTime mFrameIntervalMs; 1203e1e78ccd5936111f31a709592f11aa7c677c42dJames Dong 1217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} VideoEditorVideoDecoder_Context; 1227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} //namespace android 124