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 CreateLoggerAppenders()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 GetMemPoolPtr()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: GetParameterMsg(OMX_HANDLETYPE hComp,OMX_INDEXTYPE nParams,OMX_PTR CompStr)304 GetParameterMsg(OMX_HANDLETYPE hComp, OMX_INDEXTYPE nParams, OMX_PTR CompStr) 305 : hComponent(hComp), nParamIndex(nParams), ComponentParameterStructure(CompStr) 306 {} ~GetParameterMsg()307 ~GetParameterMsg() 308 {} 309 310 OMX_HANDLETYPE hComponent; 311 OMX_INDEXTYPE nParamIndex; 312 OMX_PTR ComponentParameterStructure; 313 }; 314 315 class SetParameterMsg 316 { 317 public: SetParameterMsg(OMX_HANDLETYPE hComp,OMX_INDEXTYPE nParams,OMX_PTR CompStr)318 SetParameterMsg(OMX_HANDLETYPE hComp, OMX_INDEXTYPE nParams, OMX_PTR CompStr) 319 : hComponent(hComp), nParamIndex(nParams), ComponentParameterStructure(CompStr) 320 {} ~SetParameterMsg()321 ~SetParameterMsg() 322 {} 323 324 OMX_HANDLETYPE hComponent; 325 OMX_INDEXTYPE nParamIndex; 326 OMX_PTR ComponentParameterStructure; 327 }; 328 329 class GetConfigMsg 330 { 331 public: GetConfigMsg(OMX_HANDLETYPE hComp,OMX_INDEXTYPE nInd,OMX_PTR pCompConfig)332 GetConfigMsg(OMX_HANDLETYPE hComp, OMX_INDEXTYPE nInd, OMX_PTR pCompConfig) 333 : hComponent(hComp), nIndex(nInd), pComponentConfigStructure(pCompConfig) 334 {} ~GetConfigMsg()335 ~GetConfigMsg() 336 {} 337 338 OMX_HANDLETYPE hComponent; 339 OMX_INDEXTYPE nIndex; 340 OMX_PTR pComponentConfigStructure; 341 }; 342 343 class SetConfigMsg 344 { 345 public: SetConfigMsg(OMX_HANDLETYPE hComp,OMX_INDEXTYPE nInd,OMX_PTR pCompConfig)346 SetConfigMsg(OMX_HANDLETYPE hComp, OMX_INDEXTYPE nInd, OMX_PTR pCompConfig) 347 : hComponent(hComp), nIndex(nInd), pComponentConfigStructure(pCompConfig) 348 {} ~SetConfigMsg()349 ~SetConfigMsg() 350 {} 351 352 OMX_HANDLETYPE hComponent; 353 OMX_INDEXTYPE nIndex; 354 OMX_PTR pComponentConfigStructure; 355 }; 356 357 class GetExtMsg 358 { 359 public: GetExtMsg(OMX_HANDLETYPE hComp,OMX_STRING cParam,OMX_INDEXTYPE * pInd)360 GetExtMsg(OMX_HANDLETYPE hComp, OMX_STRING cParam, OMX_INDEXTYPE* pInd) 361 : hComponent(hComp), cParameterName(cParam), pIndexType(pInd) 362 {} ~GetExtMsg()363 ~GetExtMsg() 364 {} 365 366 OMX_HANDLETYPE hComponent; 367 OMX_STRING cParameterName; 368 OMX_INDEXTYPE* pIndexType; 369 }; 370 371 class GetStateMsg 372 { 373 public: GetStateMsg(OMX_HANDLETYPE hComp,OMX_STATETYPE * pSt)374 GetStateMsg(OMX_HANDLETYPE hComp, OMX_STATETYPE* pSt) 375 : hComponent(hComp), pState(pSt) 376 {} ~GetStateMsg()377 ~GetStateMsg() 378 {} 379 380 OMX_HANDLETYPE hComponent; 381 OMX_STATETYPE* pState; 382 }; 383 384 class UseBufMsg 385 { 386 public: UseBufMsg(OMX_HANDLETYPE hComp,OMX_BUFFERHEADERTYPE ** ppBuf,OMX_U32 nPtIndex,OMX_PTR pApPrv,OMX_U32 nSz,OMX_U8 * pBuf)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 {} ~UseBufMsg()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: AllocBufMsg(OMX_HANDLETYPE hComp,OMX_BUFFERHEADERTYPE ** ppBuf,OMX_U32 nPtIndex,OMX_PTR pApPrv,OMX_U32 nSz)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 {} ~AllocBufMsg()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: FreeBufMsg(OMX_HANDLETYPE hComp,OMX_U32 nPtInd,OMX_BUFFERHEADERTYPE * pBuf)422 FreeBufMsg(OMX_HANDLETYPE hComp, OMX_U32 nPtInd, OMX_BUFFERHEADERTYPE* pBuf) 423 : hComponent(hComp), nPortIndex(nPtInd), pBuffer(pBuf) 424 {} ~FreeBufMsg()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: SetCallMsg(OMX_HANDLETYPE hComp,OMX_CALLBACKTYPE * pCallb,OMX_PTR pAppD)437 SetCallMsg(OMX_HANDLETYPE hComp, OMX_CALLBACKTYPE* pCallb, OMX_PTR pAppD) 438 : hComponent(hComp), pCallbacks(pCallb), pAppData(pAppD) 439 {} ~SetCallMsg()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: SetCommMsg(OMX_HANDLETYPE hComp,OMX_COMMANDTYPE cmdtype,OMX_U32 nPar,OMX_PTR pCmdD)452 SetCommMsg(OMX_HANDLETYPE hComp, OMX_COMMANDTYPE cmdtype, OMX_U32 nPar, OMX_PTR pCmdD) 453 : hComponent(hComp), Cmd(cmdtype), nParam(nPar), pCmdData(pCmdD) 454 {} ~SetCommMsg()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: EmptyBufMsg(OMX_HANDLETYPE hComp,OMX_BUFFERHEADERTYPE * pBuf)467 EmptyBufMsg(OMX_HANDLETYPE hComp, OMX_BUFFERHEADERTYPE* pBuf) 468 : hComponent(hComp), pBuffer(pBuf) 469 {} ~EmptyBufMsg()470 ~EmptyBufMsg() 471 {} 472 473 OMX_HANDLETYPE hComponent; 474 OMX_BUFFERHEADERTYPE* pBuffer; 475 476 }; 477 478 class FillBufMsg 479 { 480 public: FillBufMsg(OMX_HANDLETYPE hComp,OMX_BUFFERHEADERTYPE * pBuf)481 FillBufMsg(OMX_HANDLETYPE hComp, OMX_BUFFERHEADERTYPE* pBuf) 482 : hComponent(hComp), pBuffer(pBuf) 483 {} ~FillBufMsg()484 ~FillBufMsg() 485 {} 486 487 OMX_HANDLETYPE hComponent; 488 OMX_BUFFERHEADERTYPE* pBuffer; 489 490 }; 491 492 class GetHandleMsg 493 { 494 public: GetHandleMsg(OMX_HANDLETYPE * pHan,OMX_STRING cCompName,OMX_PTR pAppD,OMX_CALLBACKTYPE * pCallB)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 {} ~GetHandleMsg()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: FreeHandleMsg(OMX_HANDLETYPE hComp)512 FreeHandleMsg(OMX_HANDLETYPE hComp) 513 : hComponent(hComp) 514 {} ~FreeHandleMsg()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: proxyApplicationCommand()530 proxyApplicationCommand() 531 { 532 data = 999; 533 } IsValid()534 bool IsValid() 535 { 536 return data == COMMANDDATA; 537 } 538 int32 data; 539 }; 540 541 #define RESPONSEDATA 99 542 class proxyApplicationResponse 543 { 544 public: proxyApplicationResponse()545 proxyApplicationResponse() 546 { 547 data = RESPONSEDATA; 548 } IsValid()549 bool IsValid() 550 { 551 return data == RESPONSEDATA; 552 } 553 int32 data; 554 }; 555 556 class BasicDestructDealloc : public OsclDestructDealloc 557 { 558 public: destruct_and_dealloc(OsclAny * ptr)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