Home | History | Annotate | Download | only in src
      1 /* ------------------------------------------------------------------
      2  * Copyright (C) 1998-2009 PacketVideo
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
     13  * express or implied.
     14  * See the License for the specific language governing permissions
     15  * and limitations under the License.
     16  * -------------------------------------------------------------------
     17  */
     18 
     19 #ifndef OMX_PROXY_INTERFACE_H_INCLUDED
     20 #define OMX_PROXY_INTERFACE_H_INCLUDED
     21 
     22 #ifndef OMX_Types_h
     23 #include "OMX_Types.h"
     24 #endif
     25 
     26 #ifndef OMX_Core_h
     27 #include "OMX_Core.h"
     28 #endif
     29 
     30 #ifndef OMX_Audio_h
     31 #include "OMX_Audio.h"
     32 #endif
     33 
     34 #ifndef OMX_Video_h
     35 #include "OMX_Video.h"
     36 #endif
     37 
     38 #ifndef OMX_Image_h
     39 #include "OMX_Image.h"
     40 #endif
     41 
     42 #ifndef OMX_Other_h
     43 #include "OMX_Other.h"
     44 #endif
     45 
     46 #ifndef PV_OMXDEFS_H_INCLUDED
     47 #include "pv_omxdefs.h"
     48 #endif
     49 
     50 #ifndef PV_OMX_INTERFACE_PROXY_H_INCLUDED
     51 #include "pv_omx_interface_proxy.h"
     52 #endif
     53 
     54 #ifndef PV_OMX_PROXIED_INTERFACE_H_INCLUDED
     55 #include "pv_omx_proxied_interface.h"
     56 #endif
     57 
     58 #ifndef OSCL_SCHEDULER_H_INCLUDED
     59 #include "oscl_scheduler.h"
     60 #endif
     61 
     62 #ifndef PVLOGGER_STDERR_APPENDER_H_INCLUDED
     63 #include "pvlogger_stderr_appender.h"
     64 #endif
     65 
     66 #ifndef PVLOGGER_TIME_AND_ID_LAYOUT_H_INCLUDED
     67 #include "pvlogger_time_and_id_layout.h"
     68 #endif
     69 
     70 class ThreadSafeMemPoolFixedChunkAllocator;
     71 
     72 #if PROXY_INTERFACE
     73 
     74 #define TERM_PROXY_ID 773
     75 
     76 #define GET_PARAMS 0
     77 #define SET_PARAMS 1
     78 #define GET_CONFIG 2
     79 #define SET_CONFIG 3
     80 #define GET_EXT    4
     81 #define GET_ST     5
     82 #define USE_BUF    6
     83 #define ALLOC_BUF  7
     84 #define FREE_BUF   8
     85 #define SET_CALL   9
     86 #define SEND_COMM  10
     87 #define EMPTY_BUF  11
     88 #define FILL_BUF   12
     89 #define GET_HANDLE  13
     90 #define FREE_HANDLE 14
     91 
     92 
     93 
     94 void CreateAppenders();
     95 
     96 class ProxyApplication_OMX
     97         : public PVProxiedEngine_OMX
     98         , public PVProxiedInterfaceServer_OMX
     99         , public PVProxiedInterfaceClient_OMX
    100 {
    101     public:
    102         OSCL_IMPORT_REF ProxyApplication_OMX();
    103         OSCL_IMPORT_REF virtual ~ProxyApplication_OMX();
    104         OSCL_IMPORT_REF bool Start();
    105         OSCL_IMPORT_REF void Exit();
    106         void TermCmd();
    107 
    108         void CreateLoggerAppenders()
    109         {
    110             iNumCreateAppenders++;
    111             CreateAppenders();
    112         }
    113         //from PVProxiedApplication
    114         void PVThreadLogon(PVMainProxy_OMX&);
    115         void PVThreadLogoff(PVMainProxy_OMX&);
    116 
    117         //from PVProxiedInterfaceServer
    118         void HandleCommand(TPVProxyMsgId , TPVCommandId, OsclAny* aData);
    119         void CleanupNotification(TPVProxyMsgId , OsclAny* aData);
    120 
    121         //from PVProxiedInterfaceClient
    122         void HandleNotification(TPVProxyMsgId , OsclAny* aData);
    123         void CleanupCommand(TPVProxyMsgId , OsclAny* aData);
    124 
    125         OSCL_IMPORT_REF OMX_ERRORTYPE ProxyGetConfig(
    126             OMX_IN  OMX_HANDLETYPE hComponent,
    127             OMX_IN  OMX_INDEXTYPE nIndex,
    128             OMX_INOUT OMX_PTR pComponentConfigStructure);
    129 
    130         OSCL_IMPORT_REF OMX_ERRORTYPE ProxySetConfig(
    131             OMX_IN  OMX_HANDLETYPE hComponent,
    132             OMX_IN  OMX_INDEXTYPE nIndex,
    133             OMX_IN  OMX_PTR pComponentConfigStructure);
    134 
    135         OSCL_IMPORT_REF OMX_ERRORTYPE ProxyGetExtensionIndex(
    136             OMX_IN  OMX_HANDLETYPE hComponent,
    137             OMX_IN  OMX_STRING cParameterName,
    138             OMX_OUT OMX_INDEXTYPE* pIndexType) ;
    139 
    140         OSCL_IMPORT_REF OMX_ERRORTYPE ProxyGetState(
    141             OMX_IN  OMX_HANDLETYPE hComponent,
    142             OMX_OUT OMX_STATETYPE* pState);
    143 
    144         OSCL_IMPORT_REF OMX_ERRORTYPE ProxyGetParameter(
    145             OMX_IN  OMX_HANDLETYPE hComponent,
    146             OMX_IN  OMX_INDEXTYPE nParamIndex,
    147             OMX_INOUT OMX_PTR ComponentParameterStructure);
    148 
    149         OSCL_IMPORT_REF OMX_ERRORTYPE ProxySetParameter(
    150             OMX_IN  OMX_HANDLETYPE hComponent,
    151             OMX_IN  OMX_INDEXTYPE nParamIndex,
    152             OMX_IN  OMX_PTR ComponentParameterStructure);
    153 
    154         OSCL_IMPORT_REF OMX_ERRORTYPE ProxyUseBuffer(
    155             OMX_IN OMX_HANDLETYPE hComponent,
    156             OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr,
    157             OMX_IN OMX_U32 nPortIndex,
    158             OMX_IN OMX_PTR pAppPrivate,
    159             OMX_IN OMX_U32 nSizeBytes,
    160             OMX_IN OMX_U8* pBuffer);
    161 
    162         OSCL_IMPORT_REF OMX_ERRORTYPE ProxyAllocateBuffer(
    163             OMX_IN OMX_HANDLETYPE hComponent,
    164             OMX_INOUT OMX_BUFFERHEADERTYPE** pBuffer,
    165             OMX_IN OMX_U32 nPortIndex,
    166             OMX_IN OMX_PTR pAppPrivate,
    167             OMX_IN OMX_U32 nSizeBytes);
    168 
    169         OSCL_IMPORT_REF OMX_ERRORTYPE ProxyFreeBuffer(
    170             OMX_IN  OMX_HANDLETYPE hComponent,
    171             OMX_IN  OMX_U32 nPortIndex,
    172             OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
    173 
    174         OSCL_IMPORT_REF OMX_ERRORTYPE ProxySetCallbacks(
    175             OMX_IN  OMX_HANDLETYPE hComponent,
    176             OMX_IN  OMX_CALLBACKTYPE* pCallbacks,
    177             OMX_IN  OMX_PTR pAppData);
    178 
    179         OSCL_IMPORT_REF OMX_ERRORTYPE ProxySendCommand(
    180             OMX_IN  OMX_HANDLETYPE hComponent,
    181             OMX_IN  OMX_COMMANDTYPE Cmd,
    182             OMX_IN  OMX_U32 nParam,
    183             OMX_IN  OMX_PTR pCmdData);
    184 
    185         OSCL_IMPORT_REF OMX_ERRORTYPE ProxyEmptyThisBuffer(
    186             OMX_IN  OMX_HANDLETYPE hComponent,
    187             OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
    188 
    189         OSCL_IMPORT_REF OMX_ERRORTYPE ProxyFillThisBuffer(
    190             OMX_IN  OMX_HANDLETYPE hComponent,
    191             OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
    192 
    193         OSCL_IMPORT_REF OMX_ERRORTYPE ProxyGetHandle(
    194             OMX_OUT OMX_HANDLETYPE* pHandle,
    195             OMX_IN  OMX_STRING cComponentName,
    196             OMX_IN  OMX_PTR pAppData,
    197             OMX_IN  OMX_CALLBACKTYPE* pCallBacks);
    198 
    199         OSCL_IMPORT_REF OMX_ERRORTYPE ProxyFreeHandle(
    200             OMX_IN OMX_HANDLETYPE hComponent);
    201 
    202         /************************
    203          * Function pointers that will point to corresponding component's
    204          * OpenmaxAO class functions to be called later from ProcessMessage()
    205          * of ProxyApplication Class
    206          ************************/
    207 
    208         OMX_ERRORTYPE(*ComponentGetConfig)(
    209             OMX_IN  OMX_HANDLETYPE hComponent,
    210             OMX_IN  OMX_INDEXTYPE nIndex,
    211             OMX_INOUT OMX_PTR pComponentConfigStructure);
    212 
    213         OMX_ERRORTYPE(*ComponentSetConfig)(
    214             OMX_IN  OMX_HANDLETYPE hComponent,
    215             OMX_IN  OMX_INDEXTYPE nIndex,
    216             OMX_IN  OMX_PTR pComponentConfigStructure);
    217 
    218         OMX_ERRORTYPE(*ComponentGetExtensionIndex)(
    219             OMX_IN  OMX_HANDLETYPE hComponent,
    220             OMX_IN  OMX_STRING cParameterName,
    221             OMX_OUT OMX_INDEXTYPE* pIndexType) ;
    222 
    223         OMX_ERRORTYPE(*ComponentGetState)(
    224             OMX_IN  OMX_HANDLETYPE hComponent,
    225             OMX_OUT OMX_STATETYPE* pState);
    226 
    227         OMX_ERRORTYPE(*ComponentGetParameter)(
    228             OMX_IN  OMX_HANDLETYPE hComponent,
    229             OMX_IN  OMX_INDEXTYPE nParamIndex,
    230             OMX_INOUT OMX_PTR ComponentParameterStructure);
    231 
    232         OMX_ERRORTYPE(*ComponentSetParameter)(
    233             OMX_IN  OMX_HANDLETYPE hComponent,
    234             OMX_IN  OMX_INDEXTYPE nParamIndex,
    235             OMX_IN  OMX_PTR ComponentParameterStructure);
    236 
    237         OMX_ERRORTYPE(*ComponentUseBuffer)(
    238             OMX_IN OMX_HANDLETYPE hComponent,
    239             OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr,
    240             OMX_IN OMX_U32 nPortIndex,
    241             OMX_IN OMX_PTR pAppPrivate,
    242             OMX_IN OMX_U32 nSizeBytes,
    243             OMX_IN OMX_U8* pBuffer);
    244 
    245         OMX_ERRORTYPE(*ComponentAllocateBuffer)(
    246             OMX_IN OMX_HANDLETYPE hComponent,
    247             OMX_INOUT OMX_BUFFERHEADERTYPE** pBuffer,
    248             OMX_IN OMX_U32 nPortIndex,
    249             OMX_IN OMX_PTR pAppPrivate,
    250             OMX_IN OMX_U32 nSizeBytes);
    251 
    252         OMX_ERRORTYPE(*ComponentFreeBuffer)(
    253             OMX_IN  OMX_HANDLETYPE hComponent,
    254             OMX_IN  OMX_U32 nPortIndex,
    255             OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
    256 
    257         OMX_ERRORTYPE(*ComponentSetCallbacks)(
    258             OMX_IN  OMX_HANDLETYPE hComponent,
    259             OMX_IN  OMX_CALLBACKTYPE* pCallbacks,
    260             OMX_IN  OMX_PTR pAppData);
    261 
    262         OMX_ERRORTYPE(*ComponentSendCommand)(
    263             OMX_IN  OMX_HANDLETYPE hComponent,
    264             OMX_IN  OMX_COMMANDTYPE Cmd,
    265             OMX_IN  OMX_U32 nParam,
    266             OMX_IN  OMX_PTR pCmdData);
    267 
    268         OMX_ERRORTYPE(*ComponentEmptyThisBuffer)(
    269             OMX_IN  OMX_HANDLETYPE hComponent,
    270             OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
    271 
    272         OMX_ERRORTYPE(*ComponentFillThisBuffer)(
    273             OMX_IN  OMX_HANDLETYPE hComponent,
    274             OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
    275 
    276         OsclAny *GetMemPoolPtr()
    277         {
    278             return (OsclAny*) iMemoryPool;
    279         };
    280 
    281 
    282     private:
    283         TPVProxyId iProxyId;
    284         CPVInterfaceProxy_OMX* ipProxy;
    285         int32 iNumMessage;
    286         int32 iNumNotice;
    287         int32 iMemCmd, iMemResp;
    288         int32 iNumClientMsg;
    289         int32 iNumCreate, iNumCreateAppenders, iNumDelete;
    290         void ProcessMessage(TPVCommandId, OsclAny*);
    291         void CleanupMessage(OsclAny*);
    292         OsclSemaphore iInitSemOmx;
    293         OMX_ERRORTYPE ReturnValueOmxApi;
    294         ThreadSafeMemPoolFixedChunkAllocator *iMemoryPool;
    295 };
    296 
    297 /*********************************
    298 Command/Message classes for each openmax API
    299 **********************************/
    300 
    301 class GetParameterMsg
    302 {
    303     public:
    304         GetParameterMsg(OMX_HANDLETYPE hComp, OMX_INDEXTYPE nParams, OMX_PTR CompStr)
    305                 : hComponent(hComp), nParamIndex(nParams), ComponentParameterStructure(CompStr)
    306         {}
    307         ~GetParameterMsg()
    308         {}
    309 
    310         OMX_HANDLETYPE hComponent;
    311         OMX_INDEXTYPE nParamIndex;
    312         OMX_PTR ComponentParameterStructure;
    313 };
    314 
    315 class SetParameterMsg
    316 {
    317     public:
    318         SetParameterMsg(OMX_HANDLETYPE hComp, OMX_INDEXTYPE nParams, OMX_PTR CompStr)
    319                 : hComponent(hComp), nParamIndex(nParams), ComponentParameterStructure(CompStr)
    320         {}
    321         ~SetParameterMsg()
    322         {}
    323 
    324         OMX_HANDLETYPE hComponent;
    325         OMX_INDEXTYPE nParamIndex;
    326         OMX_PTR ComponentParameterStructure;
    327 };
    328 
    329 class GetConfigMsg
    330 {
    331     public:
    332         GetConfigMsg(OMX_HANDLETYPE hComp, OMX_INDEXTYPE nInd, OMX_PTR pCompConfig)
    333                 : hComponent(hComp), nIndex(nInd), pComponentConfigStructure(pCompConfig)
    334         {}
    335         ~GetConfigMsg()
    336         {}
    337 
    338         OMX_HANDLETYPE hComponent;
    339         OMX_INDEXTYPE nIndex;
    340         OMX_PTR pComponentConfigStructure;
    341 };
    342 
    343 class SetConfigMsg
    344 {
    345     public:
    346         SetConfigMsg(OMX_HANDLETYPE hComp, OMX_INDEXTYPE nInd, OMX_PTR pCompConfig)
    347                 : hComponent(hComp), nIndex(nInd), pComponentConfigStructure(pCompConfig)
    348         {}
    349         ~SetConfigMsg()
    350         {}
    351 
    352         OMX_HANDLETYPE hComponent;
    353         OMX_INDEXTYPE nIndex;
    354         OMX_PTR pComponentConfigStructure;
    355 };
    356 
    357 class GetExtMsg
    358 {
    359     public:
    360         GetExtMsg(OMX_HANDLETYPE hComp, OMX_STRING cParam, OMX_INDEXTYPE* pInd)
    361                 : hComponent(hComp), cParameterName(cParam), pIndexType(pInd)
    362         {}
    363         ~GetExtMsg()
    364         {}
    365 
    366         OMX_HANDLETYPE hComponent;
    367         OMX_STRING cParameterName;
    368         OMX_INDEXTYPE* pIndexType;
    369 };
    370 
    371 class GetStateMsg
    372 {
    373     public:
    374         GetStateMsg(OMX_HANDLETYPE hComp, OMX_STATETYPE* pSt)
    375                 : hComponent(hComp), pState(pSt)
    376         {}
    377         ~GetStateMsg()
    378         {}
    379 
    380         OMX_HANDLETYPE hComponent;
    381         OMX_STATETYPE* pState;
    382 };
    383 
    384 class UseBufMsg
    385 {
    386     public:
    387         UseBufMsg(OMX_HANDLETYPE hComp, OMX_BUFFERHEADERTYPE** ppBuf, OMX_U32 nPtIndex, OMX_PTR pApPrv, OMX_U32 nSz, OMX_U8* pBuf)
    388                 : hComponent(hComp), ppBufferHdr(ppBuf), nPortIndex(nPtIndex), pAppPrivate(pApPrv), nSizeBytes(nSz), pBuffer(pBuf)
    389         {}
    390         ~UseBufMsg()
    391         {}
    392 
    393         OMX_HANDLETYPE hComponent;
    394         OMX_BUFFERHEADERTYPE** ppBufferHdr;
    395         OMX_U32 nPortIndex;
    396         OMX_PTR pAppPrivate;
    397         OMX_U32 nSizeBytes;
    398         OMX_U8* pBuffer;
    399 
    400 };
    401 
    402 class AllocBufMsg
    403 {
    404     public:
    405         AllocBufMsg(OMX_HANDLETYPE hComp, OMX_BUFFERHEADERTYPE** ppBuf, OMX_U32 nPtIndex, OMX_PTR pApPrv, OMX_U32 nSz)
    406                 : hComponent(hComp), pBuffer(ppBuf), nPortIndex(nPtIndex), pAppPrivate(pApPrv), nSizeBytes(nSz)
    407         {}
    408         ~AllocBufMsg()
    409         {}
    410 
    411         OMX_HANDLETYPE hComponent;
    412         OMX_BUFFERHEADERTYPE** pBuffer;
    413         OMX_U32 nPortIndex;
    414         OMX_PTR pAppPrivate;
    415         OMX_U32 nSizeBytes;
    416 
    417 };
    418 
    419 class FreeBufMsg
    420 {
    421     public:
    422         FreeBufMsg(OMX_HANDLETYPE hComp, OMX_U32 nPtInd, OMX_BUFFERHEADERTYPE* pBuf)
    423                 : hComponent(hComp), nPortIndex(nPtInd), pBuffer(pBuf)
    424         {}
    425         ~FreeBufMsg()
    426         {}
    427 
    428         OMX_HANDLETYPE hComponent;
    429         OMX_U32 nPortIndex;
    430         OMX_BUFFERHEADERTYPE* pBuffer;
    431 
    432 };
    433 
    434 class SetCallMsg
    435 {
    436     public:
    437         SetCallMsg(OMX_HANDLETYPE hComp, OMX_CALLBACKTYPE* pCallb, OMX_PTR pAppD)
    438                 : hComponent(hComp), pCallbacks(pCallb), pAppData(pAppD)
    439         {}
    440         ~SetCallMsg()
    441         {}
    442 
    443         OMX_HANDLETYPE hComponent;
    444         OMX_CALLBACKTYPE* pCallbacks;
    445         OMX_PTR pAppData;
    446 
    447 };
    448 
    449 class SetCommMsg
    450 {
    451     public:
    452         SetCommMsg(OMX_HANDLETYPE hComp, OMX_COMMANDTYPE cmdtype, OMX_U32 nPar, OMX_PTR pCmdD)
    453                 : hComponent(hComp), Cmd(cmdtype), nParam(nPar), pCmdData(pCmdD)
    454         {}
    455         ~SetCommMsg()
    456         {}
    457 
    458         OMX_HANDLETYPE hComponent;
    459         OMX_COMMANDTYPE Cmd;
    460         OMX_U32 nParam;
    461         OMX_PTR pCmdData;
    462 };
    463 
    464 class EmptyBufMsg
    465 {
    466     public:
    467         EmptyBufMsg(OMX_HANDLETYPE hComp, OMX_BUFFERHEADERTYPE* pBuf)
    468                 : hComponent(hComp), pBuffer(pBuf)
    469         {}
    470         ~EmptyBufMsg()
    471         {}
    472 
    473         OMX_HANDLETYPE hComponent;
    474         OMX_BUFFERHEADERTYPE* pBuffer;
    475 
    476 };
    477 
    478 class FillBufMsg
    479 {
    480     public:
    481         FillBufMsg(OMX_HANDLETYPE hComp, OMX_BUFFERHEADERTYPE* pBuf)
    482                 : hComponent(hComp), pBuffer(pBuf)
    483         {}
    484         ~FillBufMsg()
    485         {}
    486 
    487         OMX_HANDLETYPE hComponent;
    488         OMX_BUFFERHEADERTYPE* pBuffer;
    489 
    490 };
    491 
    492 class GetHandleMsg
    493 {
    494     public:
    495         GetHandleMsg(OMX_HANDLETYPE* pHan, OMX_STRING cCompName,
    496                      OMX_PTR pAppD, OMX_CALLBACKTYPE* pCallB)
    497                 : pHandle(pHan), cComponentName(cCompName), pAppData(pAppD), pCallBacks(pCallB)
    498         {}
    499         ~GetHandleMsg()
    500         {}
    501 
    502         OMX_HANDLETYPE* pHandle;
    503         OMX_STRING cComponentName;
    504         OMX_PTR pAppData;
    505         OMX_CALLBACKTYPE* pCallBacks;
    506 
    507 };
    508 
    509 class FreeHandleMsg
    510 {
    511     public:
    512         FreeHandleMsg(OMX_HANDLETYPE hComp)
    513                 : hComponent(hComp)
    514         {}
    515         ~FreeHandleMsg()
    516         {}
    517 
    518         OMX_HANDLETYPE hComponent;
    519 
    520 };
    521 
    522 
    523 /******************************************/
    524 
    525 //Taken from pv's thread messaging folder
    526 #define COMMANDDATA 999
    527 class proxyApplicationCommand
    528 {
    529     public:
    530         proxyApplicationCommand()
    531         {
    532             data = 999;
    533         }
    534         bool IsValid()
    535         {
    536             return data == COMMANDDATA;
    537         }
    538         int32 data;
    539 };
    540 
    541 #define RESPONSEDATA 99
    542 class proxyApplicationResponse
    543 {
    544     public:
    545         proxyApplicationResponse()
    546         {
    547             data = RESPONSEDATA;
    548         }
    549         bool IsValid()
    550         {
    551             return data == RESPONSEDATA;
    552         }
    553         int32 data;
    554 };
    555 
    556 class BasicDestructDealloc : public OsclDestructDealloc
    557 {
    558     public:
    559         virtual void destruct_and_dealloc(OsclAny* ptr)
    560         {
    561             delete(PVLoggerAppender*)ptr;
    562         }
    563 };
    564 
    565 
    566 /*Component Handle Functions*/
    567 OMX_API OMX_ERRORTYPE OMX_APIENTRY GlobalProxyComponentGetHandle(
    568     OMX_OUT OMX_HANDLETYPE* pHandle,
    569     OMX_IN  OMX_STRING cComponentName, OMX_IN  OMX_PTR pAppData,
    570     OMX_IN  OMX_CALLBACKTYPE* pCallBacks,
    571     OMX_IN  OMX_PTR pProxy);
    572 
    573 OMX_API OMX_ERRORTYPE OMX_APIENTRY GlobalProxyComponentFreeHandle(
    574     OMX_IN OMX_HANDLETYPE hComponent);
    575 
    576 #endif // PROXY_INTERFACE
    577 
    578 #endif //OMX_PROXY_INTERFACE_H_INCLUDED
    579 
    580