1c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*
2c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Copyright (c) 2010, Texas Instruments Incorporated
3c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * All rights reserved.
4c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
5c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Redistribution and use in source and binary forms, with or without
6c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * modification, are permitted provided that the following conditions
7c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * are met:
8c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
9c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * *  Redistributions of source code must retain the above copyright
10c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *    notice, this list of conditions and the following disclaimer.
11c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
12c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * *  Redistributions in binary form must reproduce the above copyright
13c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *    notice, this list of conditions and the following disclaimer in the
14c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *    documentation and/or other materials provided with the distribution.
15c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
16c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * *  Neither the name of Texas Instruments Incorporated nor the names of
17c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *    its contributors may be used to endorse or promote products derived
18c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *    from this software without specific prior written permission.
19c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
20c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
32c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
33c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
34c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  @file  omx_proxy_common.h
35c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *         This file contains methods that provides the functionality for
36c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *         the OpenMAX1.1 DOMX Framework OMX Common Proxy.
37c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
38c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  @path \WTSD_DucatiMMSW\framework\domx\omx_proxy_common\
39c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
40c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  @rev 1.0
41c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
42c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
43c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*==============================================================
44c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *! Revision History
45c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *! ============================
46c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *! 29-Mar-2010 Abhishek Ranka : Revamped DOMX implementation
47c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *!
48c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *! 19-August-2009 B Ravi Kiran ravi.kiran@ti.com: Initial Version
49c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *================================================================*/
50c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
51c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef ANDROID_QUIRK_LOCK_BUFFER
52c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <hardware/gralloc.h>
53c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif
54c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
55c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifndef OMX_PROXY_H
56c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_PROXY_H
57c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
58c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef __cplusplus
59c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevextern "C"
60c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
61c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif				/* __cplusplus */
62c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
63c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ------compilation control switches ----------------------------------------*/
64c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
65c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/******************************************************************
66c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *   INCLUDE FILES
67c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev ******************************************************************/
68c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ----- system and platform files ----------------------------*/
69c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <OMX_Core.h>
70c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*-------program files ----------------------------------------*/
71c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include "omx_rpc.h"
72c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include "omx_rpc_internal.h"
73c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include "omx_rpc_utils.h"
74c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
75c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/****************************************************************
76c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * PUBLIC DECLARATIONS Defined here, used elsewhere
77c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev ****************************************************************/
78c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*--------data declarations -----------------------------------*/
79c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*OMX versions supported by DOMX*/
80c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_VER_MAJOR 0x1
81c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_VER_MINOR 0x1
82c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
83c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define MAX_NUM_PROXY_BUFFERS             32
84c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define MAX_COMPONENT_NAME_LENGTH         128
85c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define PROXY_MAXNUMOFPORTS               8
86c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
87c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/******************************************************************
88c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *   MACROS - ASSERTS
89c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev ******************************************************************/
90c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define PROXY_assert  PROXY_paramCheck
91c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define PROXY_require PROXY_paramCheck
92c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define PROXY_ensure  PROXY_paramCheck
93c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
94c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define PROXY_paramCheck(C, V, S) do {\
95c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    if (!(C)) { eError = V;\
96c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    if(S) DOMX_ERROR("failed check:" #C" - returning error: 0x%x - %s",V,S);\
97c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    else DOMX_ERROR("failed check:" #C" - returning error: 0x%x",C, V); \
98c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    goto EXIT; }\
99c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    } while(0)
100c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
101c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define PROXY_CHK_VERSION(_pStruct_, _sName_) do { \
102c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    PROXY_require((((_sName_ *)_pStruct_)->nSize == sizeof(_sName_)), \
103c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                  OMX_ErrorBadParameter, "Incorrect nSize"); \
104c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    PROXY_require(((((_sName_ *)_pStruct_)->nVersion.s.nVersionMajor == \
105c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                  OMX_VER_MAJOR) && \
1069e964f98a366c756b96a97809b31579fdcc43e97Lakshman Gowda                  ((((_sName_ *)_pStruct_)->nVersion.s.nVersionMinor == \
1079e964f98a366c756b96a97809b31579fdcc43e97Lakshman Gowda                  OMX_VER_MINOR) || \
108c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                  (((_sName_ *)_pStruct_)->nVersion.s.nVersionMinor == \
1099e964f98a366c756b96a97809b31579fdcc43e97Lakshman Gowda                  0))), \
110c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                  OMX_ErrorVersionMismatch, NULL); \
111c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    } while(0)
112c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
113c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
114c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	typedef OMX_ERRORTYPE(*PROXY_EMPTYBUFFER_DONE) (OMX_HANDLETYPE
115c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    hComponent, OMX_U32 remoteBufHdr, OMX_U32 nfilledLen,
116c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    OMX_U32 nOffset, OMX_U32 nFlags);
117c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
118c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	typedef OMX_ERRORTYPE(*PROXY_FILLBUFFER_DONE) (OMX_HANDLETYPE
119c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    hComponent, OMX_U32 remoteBufHdr, OMX_U32 nfilledLen,
120c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    OMX_U32 nOffset, OMX_U32 nFlags, OMX_TICKS nTimeStamp,
121c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    OMX_HANDLETYPE hMarkTargetComponent, OMX_PTR pMarkData);
122c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
123c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	typedef OMX_ERRORTYPE(*PROXY_EVENTHANDLER) (OMX_HANDLETYPE hComponent,
124c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    OMX_PTR pAppData, OMX_EVENTTYPE eEvent, OMX_U32 nData1,
125c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    OMX_U32 nData2, OMX_PTR pEventData);
126c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
127c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*******************************************************************************
128c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev* Structures
129c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev*******************************************************************************/
130c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*===============================================================*/
131c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** PROXY_BUFFER_INFO        : This structure maintains a table of A9 and
132c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                             Ducati side buffers and headers.
133c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
134c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @param pBufHeader         : This is a pointer to the A9 bufferheader.
135c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
136c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @param pBufHeaderRemote   : This is pointer to Ducati side bufferheader.
137c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
138c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*===============================================================*/
139c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	typedef struct PROXY_BUFFER_INFO
140c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	{
141c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		OMX_BUFFERHEADERTYPE *pBufHeader;
142c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		OMX_U32 pBufHeaderRemote;
143c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		OMX_PTR pYBuffer;
144a05ce708888256c4798c419007cee864a60cd526Sarthak Aggarwal		OMX_PTR pMetaDataBuffer;
14549f42f954f02c39aa4d25520a4caa3f0b459aa40Sarthak Aggarwal#ifdef USE_ION
14649f42f954f02c39aa4d25520a4caa3f0b459aa40Sarthak Aggarwal		int mmap_fd;
147a05ce708888256c4798c419007cee864a60cd526Sarthak Aggarwal		int mmap_fd_metadata_buff;
14849f42f954f02c39aa4d25520a4caa3f0b459aa40Sarthak Aggarwal#endif
149c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	} PROXY_BUFFER_INFO;
150c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
151c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*===============================================================*/
152c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** PROXY_BUFFER_TYPE        : This enumeration tells the type of buffer pointers coming to OMX in
153c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev				UseBuffer call.
154c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
155c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*===============================================================*/
156c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	typedef enum PROXY_BUFFER_TYPE
157c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	{
158c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		VirtualPointers,   /*Used when buffer pointers come from the normal A9 virtual space */
159c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		GrallocPointers,   /*Used when buffer pointers come from Gralloc allocations */
160c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		IONPointers,       /*Used when buffer pointers come from ION allocations */
161c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		EncoderMetadataPointers		/*Used when buffer pointers come from Stagefright in camcorder usecase */
162c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	} PROXY_BUFFER_TYPE;
163c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
164c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*===============================================================*/
165c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** PROXY_BUFFER_TYPE        : This enumeration tells the type of buffer pointers coming to OMX in
166c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                               UseBuffer call.
167c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
168c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*===============================================================*/
169c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	typedef struct PROXY_PORT_TYPE
170c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	{
171c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		PROXY_BUFFER_TYPE proxyBufferType;   /*Used when buffer pointers come from the normal A9 virtual space */
172c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		OMX_U32 IsBuffer2D;   /*Used when buffer pointers come from Gralloc allocations */
173c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	} PROXY_PORT_TYPE;
174c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
175c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ========================================================================== */
176c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
177c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev* PROXY_COMPONENT_PRIVATE
178c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev*
179c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev*/
180c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ========================================================================== */
181c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	typedef struct PROXY_COMPONENT_PRIVATE
182c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	{
183c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		/* OMX Related Information */
184c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		OMX_CALLBACKTYPE tCBFunc;
185c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		OMX_PTR pILAppData;
186c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		OMX_HANDLETYPE hRemoteComp;
187c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
188c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		PROXY_BUFFER_INFO tBufList[MAX_NUM_PROXY_BUFFERS];
189c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		PROXY_PORT_TYPE proxyPortBuffers[PROXY_MAXNUMOFPORTS];
190c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		OMX_BOOL IsLoadedState;
191c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		OMX_U32 nTotalBuffers;
192c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		OMX_U32 nAllocatedBuffers;
193c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
194c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		/* PROXY specific data - PROXY PRIVATE DATA */
195e5d86ac2b8d0b0172944bb46c7a5d2c6b659b2a9Lakshman Gowda		OMX_PTR pCompProxyPrv;
196c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		char *cCompName;
197c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
198c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		PROXY_EMPTYBUFFER_DONE proxyEmptyBufferDone;
199c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		PROXY_FILLBUFFER_DONE proxyFillBufferDone;
200c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		PROXY_EVENTHANDLER proxyEventHandler;
201c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
202c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef ANDROID_QUIRK_LOCK_BUFFER
203c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		gralloc_module_t const *grallocModule;
204c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif
20549f42f954f02c39aa4d25520a4caa3f0b459aa40Sarthak Aggarwal#ifdef USE_ION
20649f42f954f02c39aa4d25520a4caa3f0b459aa40Sarthak Aggarwal		int ion_fd;
20749f42f954f02c39aa4d25520a4caa3f0b459aa40Sarthak Aggarwal		OMX_BOOL bUseIon;
20849f42f954f02c39aa4d25520a4caa3f0b459aa40Sarthak Aggarwal		OMX_BOOL bMapIonBuffers;
20949f42f954f02c39aa4d25520a4caa3f0b459aa40Sarthak Aggarwal#endif
2103cf002e003ada481d0aae4ba77bb05f95be216c7Sarthak Aggarwal		int secure_misc_drv_fd;
211c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	} PROXY_COMPONENT_PRIVATE;
212c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
213c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
214c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
215c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*===============================================================*/
216c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** PROXY_MARK_DATA        : A pointer to this structure is sent as mark data to
217c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                           the remote core when a MarkBuffer command is made.
218c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
219c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @param hComponentActual : This is the actual handle of the component to be
220c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                           marked. When marked buffers come from the remote
221c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                           to the local core then remote handle of the mark
222c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                           component is replaced by this in the header.
223c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
224c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @param pMarkdataActual : This is the mark data set by the client.
225c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
226c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*===============================================================*/
227c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	typedef struct PROXY_MARK_DATA
228c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	{
229c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		OMX_HANDLETYPE hComponentActual;
230c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		OMX_PTR pMarkDataActual;
231c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	} PROXY_MARK_DATA;
232c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*******************************************************************************
233c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev* Functions
234c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev*******************************************************************************/
235c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_ERRORTYPE OMX_ProxyCommonInit(OMX_HANDLETYPE hComponent);
236c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_ERRORTYPE PROXY_GetParameter(OMX_IN OMX_HANDLETYPE hComponent,
237c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    OMX_IN OMX_INDEXTYPE nParamIndex, OMX_INOUT OMX_PTR pParamStruct);
238c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_ERRORTYPE PROXY_SetParameter(OMX_IN OMX_HANDLETYPE hComponent,
239c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    OMX_IN OMX_INDEXTYPE nParamIndex, OMX_INOUT OMX_PTR pParamStruct);
240c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_ERRORTYPE PROXY_EventHandler(OMX_HANDLETYPE hComponent,
241c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    OMX_PTR pAppData, OMX_EVENTTYPE eEvent, OMX_U32 nData1, OMX_U32 nData2,
242c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    OMX_PTR pEventData);
243c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_ERRORTYPE PROXY_SendCommand(OMX_IN OMX_HANDLETYPE hComponent,
244c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    OMX_IN OMX_COMMANDTYPE eCmd,
245c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    OMX_IN OMX_U32 nParam, OMX_IN OMX_PTR pCmdData);
246c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_ERRORTYPE PROXY_EmptyThisBuffer(OMX_HANDLETYPE hComponent,
247c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    OMX_BUFFERHEADERTYPE * pBufferHdr);
248c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_ERRORTYPE PROXY_GetExtensionIndex(OMX_IN OMX_HANDLETYPE hComponent,
249c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    OMX_IN OMX_STRING cParameterName, OMX_OUT OMX_INDEXTYPE * pIndexType);
250c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_ERRORTYPE PROXY_FillBufferDone(OMX_HANDLETYPE hComponent,
251c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_U32 remoteBufHdr, OMX_U32 nfilledLen, OMX_U32 nOffset, OMX_U32 nFlags,
252c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    OMX_TICKS nTimeStamp, OMX_HANDLETYPE hMarkTargetComponent,
253c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    OMX_PTR pMarkData);
254c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_ERRORTYPE PROXY_FillThisBuffer(OMX_HANDLETYPE hComponent,
255c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    OMX_BUFFERHEADERTYPE * pBufferHdr);
256e5d86ac2b8d0b0172944bb46c7a5d2c6b659b2a9Lakshman Gowda	OMX_ERRORTYPE PROXY_AllocateBuffer(OMX_IN OMX_HANDLETYPE hComponent,
257e5d86ac2b8d0b0172944bb46c7a5d2c6b659b2a9Lakshman Gowda	    OMX_INOUT OMX_BUFFERHEADERTYPE ** ppBufferHdr,OMX_IN OMX_U32 nPortIndex,
258e5d86ac2b8d0b0172944bb46c7a5d2c6b659b2a9Lakshman Gowda	    OMX_IN OMX_PTR pAppPrivate, OMX_IN OMX_U32 nSizeBytes);
259e5d86ac2b8d0b0172944bb46c7a5d2c6b659b2a9Lakshman Gowda	OMX_ERRORTYPE PROXY_FreeBuffer(OMX_IN OMX_HANDLETYPE hComponent,
260e5d86ac2b8d0b0172944bb46c7a5d2c6b659b2a9Lakshman Gowda	    OMX_IN OMX_U32 nPortIndex, OMX_IN OMX_BUFFERHEADERTYPE * pBufferHdr);
261e5d86ac2b8d0b0172944bb46c7a5d2c6b659b2a9Lakshman Gowda	OMX_ERRORTYPE PROXY_ComponentDeInit(OMX_HANDLETYPE hComponent);
262c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
263c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
264c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef __cplusplus
265c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}
266c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif				/* __cplusplus */
267c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
268c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif
269