• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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