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