Home | History | Annotate | Download | only in inc
      1 
      2 /*
      3  * Copyright (C) Texas Instruments - http://www.ti.com/
      4  *
      5  * This library is free software; you can redistribute it and/or
      6  * modify it under the terms of the GNU Lesser General Public
      7  * License as published by the Free Software Foundation; either
      8  * version 2.1 of the License, or (at your option) any later version.
      9  *
     10  *
     11  * This library is distributed in the hope that it will be useful,
     12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14  * Lesser General Public License for more details.
     15  *
     16  *
     17  * You should have received a copy of the GNU Lesser General Public
     18  * License along with this library; if not, write to the Free Software
     19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
     20  */
     21 #ifndef OMX_VPP_UTILS__H
     22 #define OMX_VPP_UTILS__H
     23 
     24 #include <OMX_Component.h>
     25 #include "LCML_DspCodec.h"
     26 #ifdef RESOURCE_MANAGER_ENABLED
     27 #include <ResourceManagerProxyAPI.h>
     28 #endif
     29 #include <OMX_TI_Common.h>
     30 
     31 #ifdef __PERF_INSTRUMENTATION__
     32 #include "perf.h"
     33 #endif
     34 
     35 #define KHRONOS_1_2
     36 
     37 /*Linked List */
     38 
     39 typedef struct Node {
     40     struct Node *pNextNode;
     41     void *pValue;
     42 } Node;
     43 
     44 typedef struct LinkedList {
     45     Node *pRoot;
     46 }   LinkedList;
     47 
     48 LinkedList AllocList;
     49 
     50 void LinkedList_Create(LinkedList *LinkedList);
     51 void LinkedList_AddElement(LinkedList *LinkedList, void *pValue);
     52 void LinkedList_FreeElement(LinkedList *LinkedList, void *pValue);
     53 void LinkedList_FreeAll(LinkedList *LinkedList);
     54 void LinkedList_DisplayAll(LinkedList *LinkedList);
     55 void LinkedList_Destroy(LinkedList *LinkedList);
     56 
     57 /*
     58  *     M A C R O S
     59  */
     60 /* configuration numbers */
     61 
     62 /*difine for Khronos 1.1*/
     63 #define KHRONOS_1_1
     64 
     65 /*#define VPP_DEBUG*/
     66 
     67 #define VPP_MAJOR_VER 0x01
     68 /*#ifdef  KHRONOS_1_1
     69 #define VPP_MINOR_VER 0x01
     70 #else*/
     71 #define VPP_MINOR_VER 0x00
     72 /*#endif*/
     73 #define VPP_REVISION  0x00
     74 #define VPP_STEP      0x00
     75 
     76 #define NORMAL_BUFFER      0
     77 #define OMX_NOPORT         0xFFFFFFFE
     78 #define NUM_OF_PORTS       4
     79 
     80 #define NUM_OF_VPP_BUFFERS (4)
     81 #define MAX_VPP_BUFFERS    (4)
     82 #define NUM_OF_VPP_PORTS   (4)
     83 #define MIN_NUM_OF_VPP_BUFFERS 1
     84 
     85 #define DEFAULT_WIDTH      (176)
     86 #define DEFAULT_HEIGHT     (144)
     87 
     88 #define VPP_ZERO                0
     89 #define VPP_DSPSTOP          0x01
     90 #define VPP_BUFFERBACK    0x02
     91 #define VPP_IDLEREADY      ( VPP_DSPSTOP | VPP_BUFFERBACK )
     92 
     93 #define DSP_MMU_FAULT_HANDLING
     94 
     95 #ifdef UNDER_CE
     96 #define USN_DLL_NAME "/windows/usn.dll64P"
     97 #define VPP_NODE_DLL "/windows/vpp_sn.dll64P"
     98 #else
     99 #define USN_DLL_NAME "usn.dll64P"
    100 #define VPP_NODE_DLL "vpp_sn.dll64P"
    101 #endif
    102 
    103 #ifdef UNDER_CE
    104   #include <oaf_debug.h> /* defines VPP_DPRINT*/
    105 #else
    106     #ifdef  VPP_DEBUG
    107         #define VPP_DPRINT(...) fprintf(stderr,__VA_ARGS__)
    108     #else
    109         #define VPP_DPRINT(...)
    110     #endif
    111 #endif
    112 
    113 #define OMX_INIT_STRUCT(_s_, _name_)  \
    114 { \
    115     memset((_s_), 0x0, sizeof(_name_));  \
    116     (_s_)->nSize = sizeof(_name_);    \
    117     (_s_)->nVersion.s.nVersionMajor = VPP_MAJOR_VER;  \
    118     (_s_)->nVersion.s.nVersionMinor = VPP_MINOR_VER;  \
    119     (_s_)->nVersion.s.nRevision = VPP_REVISION;    \
    120     (_s_)->nVersion.s.nStep = VPP_STEP; \
    121 }
    122 
    123 #define OMX_CHECK_CMD(_ptr1, _ptr2, _ptr3)  \
    124 {            \
    125     if(!_ptr1 || !_ptr2 || !_ptr3){    \
    126         eError = OMX_ErrorBadParameter;    \
    127         goto EXIT;      \
    128     }            \
    129 }
    130 
    131 #define OMX_SET_ERROR_BAIL(_eError, _eCode)\
    132 {            \
    133     _eError = _eCode;        \
    134     goto EXIT;      \
    135 }
    136 
    137 #define OMX_MALLOC(_pStruct_, _size_)   \
    138     _pStruct_ = malloc(_size_);  \
    139     if(_pStruct_ == NULL){  \
    140         eError = OMX_ErrorInsufficientResources;    \
    141         goto EXIT;  \
    142     } \
    143     memset(_pStruct_, 0, _size_);\
    144     LinkedList_AddElement(&AllocList, _pStruct_);
    145 
    146 #define OMX_FREE(_ptr)   \
    147 {                     \
    148     if (_ptr != NULL) { \
    149         LinkedList_FreeElement(&AllocList, _ptr);\
    150         _ptr = NULL; \
    151     }                \
    152 }
    153 
    154 #define OMX_FREEALL()   \
    155 {                     \
    156     LinkedList_FreeAll(&AllocList);\
    157 }
    158 
    159 
    160 /**********************************************************************
    161  *    GPP Internal data type
    162  **********************************************************************
    163  */
    164 
    165 typedef enum OMX_VPP_PORT_NUMBER_TYPE {
    166     OMX_VPP_INPUT_PORT         = 0,
    167     OMX_VPP_INPUT_OVERLAY_PORT = 1,
    168     OMX_VPP_RGB_OUTPUT_PORT    = 2,
    169     OMX_VPP_YUV_OUTPUT_PORT    = 3,
    170     OMX_VPP_MAXPORT_NUM = 3
    171 } OMX_VPP_PORT_NUMBER_TYPE;
    172 
    173 typedef enum {
    174     IUALG_CMD_SETCOEFF = 100,
    175     IUALG_CMD_SETIO
    176 }IUALG_VppCmd;
    177 
    178 typedef enum VPP_BUFFER_OWNER
    179 {
    180     VPP_BUFFER_CLIENT = 0x0,
    181     VPP_BUFFER_COMPONENT_IN,
    182     VPP_BUFFER_COMPONENT_OUT,
    183     VPP_BUFFER_DSP,
    184     VPP_BUFFER_TUNNEL_COMPONENT
    185 } VPP_BUFFER_OWNER;
    186 typedef enum OMX_INDEXVPPTYPE
    187 {
    188 #ifdef KHRONOS_1_2
    189     OMX_IndexCustomSetZoomFactor = (OMX_IndexVendorStartUnused + 1),
    190 #else
    191     OMX_IndexCustomSetZoomFactor = (OMX_IndexIndexVendorStartUnused + 1),
    192 #endif
    193     OMX_IndexCustomSetZoomLimit,
    194     OMX_IndexCustomSetZoomSpeed,
    195     OMX_IndexCustomSetZoomXoffsetFromCenter16,
    196     OMX_IndexCustomSetZoomYoffsetFromCenter16,
    197     OMX_IndexCustomSetFrostedGlassOvly,
    198     OMX_IndexCustomVideoColorRange,
    199     OMX_IndexCustomRGB4ColorFormat,
    200     OMX_IndexCustomConfigInputSize
    201 } OMX_INDEXVPPTYPE;
    202 
    203 
    204 typedef enum VGPOP_IORange {
    205     VGPOP_IN_16_235_OUT_16_235,     /*limited range to limited range*/
    206     VGPOP_IN_00_255_OUT_00_255,      /*full range to full range*/
    207     VGPOP_IN_00_255_OUT_16_235,         /*full range to limited range*/
    208     VGPOP_IN_16_235_OUT_00_255          /*limited range to full range*/
    209 } VGPOP_IORange;
    210 
    211 
    212  /* Parameter buffer which needs to be passed to DSP */
    213 
    214 typedef struct GPPToVPPInputFrameStatus {
    215 
    216     /* INPUT FRAME */
    217 
    218     /* input size*/
    219     OMX_U32      ulInWidth;          /*  picture buffer width          */
    220     OMX_U32      ulInHeight;         /*  picture buffer height         */
    221     OMX_U32      ulCInOffset;        /* offset of the C frame in the   *
    222                                     * buffer (equal to zero if there *
    223                                     * is no C frame)                 */
    224 
    225     /* PROCESSING PARAMETERS */
    226 
    227     /*    crop           */
    228     OMX_U32      ulInXstart;          /*  Hin active start             */
    229     OMX_U32      ulInXsize;           /*  Hin active width             */
    230     OMX_U32      ulInYstart;          /*  Vin active start             */
    231     OMX_U32      ulInYsize;           /* Vin active height             */
    232 
    233     /*   zoom            */
    234     OMX_U32      ulZoomFactor;        /*zooming ratio (/1024)          */
    235     OMX_U32      ulZoomLimit;         /* zooming ratio limit (/1024)   */
    236     OMX_U32      ulZoomSpeed;         /* speed of ratio change         */
    237 
    238     /*  stabilisation             */
    239     OMX_U32      ulXoffsetFromCenter16;    /*  add 1/16/th accuracy offset */
    240     OMX_U32      ulYoffsetFromCenter16;    /* add 1/16/th accuracy offset  */
    241 
    242     /*  gain and contrast             */
    243     OMX_U32      ulContrastType;      /*    Contrast method            */
    244     OMX_U32      ulVideoGain;         /* gain on video (Y and C)       */
    245 
    246     /*  effect             */
    247     OMX_U32      ulFrostedGlassOvly;  /*  Frosted glass effect overlay          */
    248     OMX_U32      ulLightChroma;       /*  Light chrominance process             */
    249     OMX_U32      ulLockedRatio;       /*  keep H/V ratio                        */
    250     OMX_U32      ulMirror;            /*  to mirror the picture                 */
    251     OMX_U32      ulRGBRotation;          /*  0, 90, 180, 270 deg.                  */
    252     OMX_U32      ulYUVRotation;          /*  0, 90, 180, 270 deg.                  */
    253 
    254 #ifndef _55_
    255     OMX_U32     eIORange;              /*  Video Color Range Conversion */
    256     OMX_U32     ulDithering;           /*  dithering                             */
    257     OMX_U32     ulOutPitch;                 /* output pitch (in bytes)*/
    258     OMX_U32     ulAlphaRGB;                 /* Global A value of an ARGB output*/
    259 #endif
    260 
    261 }GPPToVPPInputFrameStatus;
    262 
    263 
    264 /* OUTPPUT BUFFER */
    265 
    266 typedef struct GPPToVPPOutputFrameStatus {
    267 
    268     OMX_U32      ulOutWidth;          /*  RGB/YUV picture buffer width           */
    269     OMX_U32      ulOutHeight;         /*  RGB/YUV picture buffer height          */
    270     OMX_U32      ulCOutOffset;        /*  Offset of the C frame in the buffer (equal to 0 if there is no C frame)             */
    271 
    272 }GPPToVPPOutputFrameStatus;
    273 
    274 /* ALG CONTROL*/
    275 
    276 typedef struct VPPIOConf {
    277 
    278     /*   Optionnal input             */
    279     OMX_U32 overlayInputImage;
    280     /*  Optionnal output             */
    281     OMX_U32 RGBOutputImage;
    282     OMX_U32 YUVOutputImage;
    283 
    284 } VPPIOConf;
    285 
    286 /* UUID structure for DSP/BIOS Bridge nodes. COMMON_TI_UUID*/
    287 static const struct DSP_UUID COMMON_TI_UUID = {
    288         0x79A3C8B3, 0x95F2, 0x403F, 0x9A, 0x4B, {
    289         0xCF, 0x80, 0x57, 0x73, 0x05, 0x41
    290     }
    291 };
    292 
    293 
    294 
    295 /*===================================================================*/
    296 /**
    297  * OMX_VPP_PORT_NUMBER_TYPE enumeration for ports supported by
    298  * this component.
    299  */
    300 /*===================================================================*/
    301 typedef struct VPP_OVERLAY {
    302     OMX_U8  *iRBuff ;
    303     OMX_U8  *iGBuff;
    304     OMX_U8  *iBBuff ;
    305     OMX_U8  *iOvlyConvBufPtr ;
    306     OMX_U8  iRKey;
    307     OMX_U8  iGKey;
    308     OMX_U8  iBKey;
    309     OMX_U8  iAlign ;
    310 }VPP_OVERLAY;
    311 
    312 /* Component buffer */
    313 typedef struct OMX_VPP_COMPONENT_BUFFER {
    314     OMX_BUFFERHEADERTYPE  *pBufHeader;
    315     OMX_U32                   nIndex;
    316     OMX_BOOL                bSelfAllocated;
    317     OMX_BOOL                bHolding;
    318     VPP_BUFFER_OWNER  eBufferOwner;
    319     OMX_U8                      *pBufferStart;
    320 } OMX_VPP_COMPONENT_BUFFER;
    321 
    322 typedef struct VPP_BUFFERDATA_PROPAGATION {
    323     OMX_U32 flag;
    324     OMX_U32 buffer_idYUV;
    325     OMX_U32 buffer_idRGB;
    326     OMX_HANDLETYPE hMarkTargetComponent;
    327     OMX_PTR pMarkData;
    328     OMX_U32 nTickCount;
    329     OMX_TICKS nTimeStamp;
    330 } VPP_BUFFERDATA_PROPAGATION;
    331 
    332 /* Component Port Context */
    333 typedef struct VPP_PORT_TYPE
    334 {
    335     OMX_HANDLETYPE               hTunnelComponent;
    336     OMX_U32                      nTunnelPort;
    337     OMX_BUFFERSUPPLIERTYPE       eSupplierSetting;
    338     OMX_BUFFERSUPPLIERTYPE       eSupplierPreference;
    339     OMX_U32                      nPortIndex;
    340     OMX_U32                      nBufferCount;
    341     OMX_VPP_COMPONENT_BUFFER     pVPPBufHeader[NUM_OF_VPP_BUFFERS];
    342     VPP_BUFFERDATA_PROPAGATION sBufferDataProp[NUM_OF_VPP_BUFFERS];
    343     OMX_PARAM_PORTDEFINITIONTYPE pPortDef;
    344     OMX_BOOL                     nBufSupplier;
    345     OMX_U32                         nReturnedBufferCount; /*For tunneling*/
    346     OMX_MIRRORTYPE          eMirror;
    347 } VPP_PORT_TYPE;
    348 
    349 typedef struct VPP_COMPONENT_PRIVATE
    350 {
    351     /** Array of pointers to BUFFERHEADERTYPE structues
    352        This pBufHeader[INPUT_PORT] will point to all the
    353        BUFFERHEADERTYPE structures related to input port,
    354        not just one structure. Same is for output port
    355        also. */
    356 
    357 
    358     VPP_PORT_TYPE                   sCompPorts[NUM_OF_VPP_PORTS];
    359 
    360     OMX_CALLBACKTYPE                cbInfo;
    361     /** Handle for use with async callbacks */
    362 
    363     /** This will contain info like how many buffers
    364         are there for input/output ports, their size etc, but not
    365         BUFFERHEADERTYPE POINTERS. */
    366 
    367     OMX_PORT_PARAM_TYPE                 *pPortParamTypeImage;
    368     OMX_PORT_PARAM_TYPE                 *pPortParamTypeAudio;
    369     OMX_PORT_PARAM_TYPE                 *pPortParamTypeVideo;
    370     OMX_PORT_PARAM_TYPE                 *pPortParamTypeOthers;
    371 
    372     OMX_VIDEO_PARAM_PORTFORMATTYPE  *pInPortFormat;
    373     OMX_VIDEO_PARAM_PORTFORMATTYPE  *pInPortOverlayFormat;
    374     OMX_VIDEO_PARAM_PORTFORMATTYPE  *pOutPortRGBFormat;
    375     OMX_VIDEO_PARAM_PORTFORMATTYPE  *pOutPortYUVFormat;
    376     OMX_PRIORITYMGMTTYPE            *pPriorityMgmt;
    377 
    378     /** This is component handle */
    379     OMX_COMPONENTTYPE               *pHandle;
    380 
    381     /** Current state of this component */
    382     OMX_STATETYPE   curState;
    383 
    384     /** The state to go **/
    385     OMX_STATETYPE   toState;
    386 
    387     OMX_STRING      cComponentName;
    388     OMX_VERSIONTYPE ComponentVersion;
    389     OMX_VERSIONTYPE SpecVersion;
    390 
    391     /** The component thread handle */
    392     pthread_t       ComponentThread;
    393     LCML_DSP_INTERFACE* pLCML;
    394 	void * pDllHandle;
    395 
    396     /** The pipes for sending commands to the thread */
    397     int            cmdPipe[2];
    398     int            nCmdDataPipe[2];
    399     /** The pipes for sending buffers to the thread */
    400 
    401     /*The Pipe to send empty output buffers to component*/
    402     int            nFree_oPipe[2];
    403     /*The pipe for sending Filled Input buffers to component*/
    404     int            nFilled_iPipe[2];
    405 
    406     /** Set to indicate component is stopping */
    407     OMX_U32        bIsStopping;
    408 
    409     OMX_U32        bIsEOFSent;
    410     OMX_U32        lcml_compID;
    411     OMX_U32        NumofOutputPort;
    412     OMX_U32        IsYUVdataout;
    413     OMX_U32         IsRGBdataout;
    414     OMX_U32        IsOverlay;
    415     OMX_CONFIG_RECTTYPE     *pCrop;
    416     OMX_U8         ExeToIdleFlag;  /* StateCheck */
    417     OMX_HANDLETYPE pLcmlHandle;
    418     VPP_OVERLAY    *overlay;
    419     OMX_U8         *RGBbuffer ;
    420     OMX_U8         *colorKey;
    421 
    422 #ifdef __PERF_INSTRUMENTATION__
    423     PERF_OBJHANDLE pPERF, pPERFcomp;
    424 #endif
    425 
    426     OMX_U32        lcml_nCntIp;
    427     OMX_U32        lcml_nCntOpReceived;
    428     OMX_U32         nInputFrame; /*Buffer data propagation*/
    429     OMX_U32         nOverlayFrame; /*Buffer data propagation*/
    430     OMX_U32        nInYUVBufferCount; /*Buffer data propagation*/
    431     OMX_U32         nInRGBBufferCount; /*Buffer data propagation*/
    432     OMX_U32        nOutYUVBufferCount; /*Buffer data propagation*/
    433     OMX_U32        nOutRGBBufferCount; /*Buffer data propagation*/
    434     OMX_PTR        pMarkData;                   /*Buffer data propagation*/
    435     OMX_HANDLETYPE hMarkTargetComponent; /*Buffer data propagation*/
    436     VPPIOConf     *tVPPIOConf;
    437     GPPToVPPInputFrameStatus  *pIpFrameStatus;
    438     GPPToVPPOutputFrameStatus *pOpYUVFrameStatus;
    439     GPPToVPPOutputFrameStatus *pOpRGBFrameStatus;
    440     OMX_CONFIG_SCALEFACTORTYPE      sScale;
    441     OMX_U8         CodecAlgCtrlAck;
    442     OMX_BOOL	   bFlushComplete;
    443 	OMX_U32		   nFlushPort;
    444     OMX_BOOL       bDisable;
    445     OMX_BOOL       bDisableIncomplete[NUM_OF_VPP_PORTS];
    446 #ifdef RESOURCE_MANAGER_ENABLED
    447     RMPROXY_CALLBACKTYPE rmproxyCallback;
    448 #endif
    449     OMX_BOOL bPreempted;
    450 
    451 
    452 	pthread_mutex_t buf_mutex;
    453 	pthread_mutex_t vpp_mutex;
    454 	pthread_cond_t  stop_cond;
    455 
    456 #ifdef KHRONOS_1_1
    457     OMX_PARAM_COMPONENTROLETYPE componentRole;
    458 #endif
    459 } VPP_COMPONENT_PRIVATE;
    460 
    461 /* structures for custom commands */
    462 typedef struct _VPP_CUSTOM_PARAM_DEFINITION
    463 {
    464     OMX_U8 cCustomParamName[128];
    465     OMX_INDEXTYPE nCustomParamIndex;
    466 } VPP_CUSTOM_PARAM_DEFINITION;
    467 
    468 /* Function ProtoType */
    469 
    470 OMX_ERRORTYPE VPP_Fill_LCMLInitParams(OMX_HANDLETYPE pHandle, OMX_U16 arr[], LCML_DSP *plcml_Init);
    471 
    472 OMX_ERRORTYPE VPP_GetBufferDirection(OMX_BUFFERHEADERTYPE *pBufHeader, OMX_DIRTYPE *eDir, OMX_U32 Index);
    473 
    474 OMX_ERRORTYPE VPP_LCML_Callback (TUsnCodecEvent event,void * args [10]);
    475 
    476 OMX_ERRORTYPE VPP_HandleCommand (VPP_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 nParam1);
    477 
    478 OMX_ERRORTYPE VPP_HandleDataBuf_FromApp(OMX_BUFFERHEADERTYPE *pBufHeader, VPP_COMPONENT_PRIVATE *pComponentPrivate);
    479 
    480 
    481 OMX_ERRORTYPE VPP_IsValidBuffer(OMX_BUFFERHEADERTYPE *pBufHeader,
    482                             VPP_COMPONENT_PRIVATE *pComponentPrivate,
    483                             OMX_U32 pIndex,
    484                             OMX_U32 *pCount);
    485 
    486 
    487 OMX_ERRORTYPE VPP_GetPortDefFromBufHeader(OMX_BUFFERHEADERTYPE *pBufHeader, OMX_PARAM_PORTDEFINITIONTYPE **portDef );
    488 
    489 OMX_ERRORTYPE VPP_HandleDataBuf_FromLCML(VPP_COMPONENT_PRIVATE* pComponentPrivate);
    490 
    491 OMX_HANDLETYPE VPP_GetLCMLHandle(VPP_COMPONENT_PRIVATE *pComponentPrivate);
    492 
    493 OMX_ERRORTYPE VPP_GetCorresponding_LCMLHeader(VPP_COMPONENT_PRIVATE *pComponentPrivate,
    494                                               OMX_U8 *pBuffer,
    495                                               OMX_DIRTYPE eDir,
    496                                               OMX_VPP_COMPONENT_BUFFER **ppCmpBuf,
    497                                               OMX_U32 Index);
    498 
    499 OMX_ERRORTYPE VPP_Free_ComponentResources(OMX_HANDLETYPE pComponent);
    500 
    501 OMX_ERRORTYPE ComputeTiOverlayImgFormat (VPP_COMPONENT_PRIVATE *pComponentPrivate,
    502                                          OMX_U8* aPictureArray,
    503                                          OMX_U8* aOutImagePtr,
    504                                          OMX_U8* aTransparencyKey);
    505 
    506 OMX_ERRORTYPE VPP_Start_ComponentThread(OMX_HANDLETYPE pHandle);
    507 
    508 OMX_ERRORTYPE VPP_Stop_ComponentThread(OMX_HANDLETYPE pHandle);
    509 
    510 OMX_ERRORTYPE VPP_DisablePort (VPP_COMPONENT_PRIVATE* pComponentPrivate, OMX_U32 nParam1);
    511 
    512 OMX_ERRORTYPE VPP_EnablePort (VPP_COMPONENT_PRIVATE* pComponentPrivate, OMX_U32 nParam1);
    513 
    514 OMX_ERRORTYPE VPP_HandleCommandFlush (VPP_COMPONENT_PRIVATE* pComponentPrivate, OMX_U32 nParam1, OMX_BOOL return_event);
    515 
    516 OMX_ERRORTYPE VPP_Process_FilledInBuf(VPP_COMPONENT_PRIVATE* pComponentPrivate);
    517 
    518 OMX_ERRORTYPE VPP_Process_FilledOutBuf(VPP_COMPONENT_PRIVATE* pComponentPrivate,
    519                                        OMX_VPP_COMPONENT_BUFFER *pComponentBuf);
    520 
    521 OMX_ERRORTYPE VPP_Process_FreeInBuf(VPP_COMPONENT_PRIVATE* pComponentPrivate,
    522                                     OMX_VPP_COMPONENT_BUFFER *pComponentBuf);
    523 
    524 OMX_ERRORTYPE VPP_Process_FreeOutBuf(VPP_COMPONENT_PRIVATE* pComponentPrivate);
    525 
    526 OMX_ERRORTYPE VPP_Initialize_PrivateStruct(VPP_COMPONENT_PRIVATE *pComponentPrivate);
    527 
    528 OMX_BOOL IsTIOMXComponent(OMX_HANDLETYPE hComp);
    529 
    530 void VPP_InitBufferDataPropagation(VPP_COMPONENT_PRIVATE * pComponentPrivate, OMX_U32 nPortIndex);
    531 
    532 #endif
    533