1/* 2 * Copyright (c) 2010, Texas Instruments Incorporated 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * * Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * * Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * * Neither the name of Texas Instruments Incorporated nor the names of 17 * its contributors may be used to endorse or promote products derived 18 * from this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 27 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 28 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 30 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33/** 34 * @file omx_rpc_skel.c 35 * This file contains methods that provides the functionality for 36 * the OpenMAX1.1 DOMX Framework RPC Skeleton implementations. 37 * 38 * @path \WTSD_DucatiMMSW\framework\domx\omx_rpc\src 39 * 40 * @rev 1.0 41 */ 42 43/*============================================================== 44 *! Revision History 45 *! ============================ 46 *! 29-Mar-2010 Abhishek Ranka : Revamped DOMX implementation 47 *! 48 *! 19-August-2009 B Ravi Kiran ravi.kiran@ti.com: Initial Version 49 *================================================================*/ 50 51/****************************************************************** 52 * INCLUDE FILES 53 ******************************************************************/ 54 55#include <stdio.h> 56#include <string.h> 57 58#include <timm_osal_interfaces.h> 59#include <OMX_TI_Common.h> 60 61#include "omx_rpc.h" 62#include "omx_proxy_common.h" 63#include "omx_rpc_skel.h" 64#include "omx_rpc_utils.h" 65#include "omx_rpc_internal.h" 66 67/* FUNCTION LIST*/ 68/* 69RPC_OMX_ERRORTYPE RPC_SKEL_EmptyBufferDone(uint32_t size, uint32_t *data) 70RPC_OMX_ERRORTYPE RPC_SKEL_FillBufferDone(uint32_t size, uint32_t *data) 71RPC_OMX_ERRORTYPE RPC_SKEL_EventHandler(uint32_t size, uint32_t *data) 72*/ 73 74 75/* ===========================================================================*/ 76/** 77 * @name RPC_SKEL_FillBufferDone() 78 * @brief Skeleton for OMX_AllocateBuffer() 79 * @param size : Size of the incoming RCM message (parameter used in the RCM alloc call) 80 * @param *data : Pointer to the RCM message/buffer received 81 * @return RPC_OMX_ErrorNone = Successful 82 * @sa TBD 83 * 84 */ 85/* ===========================================================================*/ 86RPC_OMX_ERRORTYPE RPC_SKEL_EmptyBufferDone(void *data) 87{ 88 89 OMX_HANDLETYPE hComp; 90 RPC_OMX_ERRORTYPE tRPCError = RPC_OMX_ErrorNone; 91 OMX_U32 nfilledLen = 0; 92 OMX_U32 nOffset = 0; 93 OMX_U32 nFlags = 0; 94 OMX_U32 bufferHdr; 95 OMX_COMPONENTTYPE *pHandle = NULL; 96 PROXY_COMPONENT_PRIVATE *pCompPrv = NULL; 97 OMX_U32 nPos = 0; 98 //RPC_OMX_MESSAGE *recdMsg; 99 OMX_U8 *pMsgBody = NULL; 100 //recdMsg = (RPC_OMX_MESSAGE *) (data); 101 102 pMsgBody = data; //&recdMsg->msgBody[0]; 103 104 DOMX_ENTER(""); 105 106 //Marshalled:[>hComp|>bufferHdr|>nFilledLen|>nOffset|>nFlags] 107 108 RPC_GETFIELDVALUE(pMsgBody, nPos, hComp, OMX_HANDLETYPE); 109 pHandle = (OMX_COMPONENTTYPE *) hComp; 110 pCompPrv = (PROXY_COMPONENT_PRIVATE *) pHandle->pComponentPrivate; 111 112 RPC_GETFIELDVALUE(pMsgBody, nPos, bufferHdr, OMX_U32); 113 114 RPC_GETFIELDVALUE(pMsgBody, nPos, nfilledLen, OMX_U32); 115 RPC_GETFIELDVALUE(pMsgBody, nPos, nOffset, OMX_U32); 116 RPC_GETFIELDVALUE(pMsgBody, nPos, nFlags, OMX_U32); 117 118 tRPCError = 119 pCompPrv->proxyEmptyBufferDone(hComp, bufferHdr, nfilledLen, 120 nOffset, nFlags); 121 122 DOMX_EXIT(""); 123 return tRPCError; 124} 125 126/* ===========================================================================*/ 127/** 128 * @name RPC_SKEL_FillBufferDone() 129 * @brief Skeleton for OMX_AllocateBuffer() 130 * @param size : Size of the incoming RCM message (parameter used in the RCM alloc call) 131 * @param *data : Pointer to the RCM message/buffer received 132 * @return RPC_OMX_ErrorNone = Successful 133 * @sa TBD 134 * 135 */ 136/* ===========================================================================*/ 137RPC_OMX_ERRORTYPE RPC_SKEL_FillBufferDone(void *data) 138{ 139 140 OMX_HANDLETYPE hComp; 141 RPC_OMX_ERRORTYPE tRPCError = RPC_OMX_ErrorNone; 142 OMX_U32 nfilledLen = 0; 143 OMX_U32 nOffset = 0; 144 OMX_U32 nFlags = 0; 145 OMX_TICKS nTimeStamp; 146 OMX_U32 bufferHdr; 147 OMX_COMPONENTTYPE *pHandle = NULL; 148 PROXY_COMPONENT_PRIVATE *pCompPrv = NULL; 149 OMX_U32 nPos = 0; 150 //RPC_OMX_MESSAGE *recdMsg; 151 OMX_U8 *pMsgBody = NULL; 152 OMX_HANDLETYPE hMarkTargetComponent = NULL; 153 OMX_PTR pMarkData = NULL; 154 //recdMsg = (RPC_OMX_MESSAGE *) (data); 155 156 pMsgBody = data; //&recdMsg->msgBody[0]; 157 158 DOMX_ENTER(""); 159 160 //Marshalled:[>hComp|>bufferHdr|>nFilledLen|>nOffset|>nFlags|>nTimeStamp] 161 162 RPC_GETFIELDVALUE(pMsgBody, nPos, hComp, OMX_HANDLETYPE); 163 pHandle = (OMX_COMPONENTTYPE *) hComp; 164 pCompPrv = (PROXY_COMPONENT_PRIVATE *) pHandle->pComponentPrivate; 165 166 RPC_GETFIELDVALUE(pMsgBody, nPos, bufferHdr, OMX_U32); 167 RPC_GETFIELDVALUE(pMsgBody, nPos, nfilledLen, OMX_U32); 168 RPC_GETFIELDVALUE(pMsgBody, nPos, nOffset, OMX_U32); 169 RPC_GETFIELDVALUE(pMsgBody, nPos, nFlags, OMX_U32); 170 RPC_GETFIELDVALUE(pMsgBody, nPos, nTimeStamp, OMX_TICKS); 171 RPC_GETFIELDVALUE(pMsgBody, nPos, hMarkTargetComponent, 172 OMX_HANDLETYPE); 173 RPC_GETFIELDVALUE(pMsgBody, nPos, pMarkData, OMX_PTR); 174 175 tRPCError = 176 pCompPrv->proxyFillBufferDone(hComp, bufferHdr, nfilledLen, 177 nOffset, nFlags, nTimeStamp, hMarkTargetComponent, pMarkData); 178 179 DOMX_EXIT(""); 180 return tRPCError; 181} 182 183 184 185/* ===========================================================================*/ 186/** 187 * @name RPC_SKEL_EventHandler() 188 * @brief Skeleton for OMX_AllocateBuffer() 189 * @param size : Size of the incoming RCM message (parameter used in the RCM alloc call) 190 * @param *data : Pointer to the RCM message/buffer received 191 * @return RPC_OMX_ErrorNone = Successful 192 * @sa TBD 193 * 194 */ 195/* ===========================================================================*/ 196RPC_OMX_ERRORTYPE RPC_SKEL_EventHandler(void *data) 197{ 198 OMX_HANDLETYPE hComp; 199 RPC_OMX_ERRORTYPE tRPCError = RPC_OMX_ErrorNone; 200 OMX_COMPONENTTYPE *pHandle = NULL; 201 PROXY_COMPONENT_PRIVATE *pCompPrv = NULL; 202 OMX_EVENTTYPE eEvent; 203 OMX_U32 nData1; 204 OMX_U32 nData2; 205 OMX_PTR pEventData; 206 OMX_U32 nPos = 0; 207 //RPC_OMX_MESSAGE *recdMsg; 208 OMX_U8 *pMsgBody = NULL; 209 //recdMsg = (RPC_OMX_MESSAGE *) (data); 210 pMsgBody = data; //&recdMsg->msgBody[0]; 211 212 DOMX_ENTER(""); 213 214 //Marshalled:[>hComp|>eEvent|>nData1|>nData2|>pEventData] 215 216 RPC_GETFIELDVALUE(pMsgBody, nPos, hComp, OMX_HANDLETYPE); 217 pHandle = (OMX_COMPONENTTYPE *) hComp; 218 pCompPrv = (PROXY_COMPONENT_PRIVATE *) pHandle->pComponentPrivate; 219 220 RPC_GETFIELDVALUE(pMsgBody, nPos, eEvent, OMX_EVENTTYPE); 221 RPC_GETFIELDVALUE(pMsgBody, nPos, nData1, OMX_U32); 222 RPC_GETFIELDVALUE(pMsgBody, nPos, nData2, OMX_U32); 223 RPC_GETFIELDVALUE(pMsgBody, nPos, pEventData, OMX_PTR); 224 225 DOMX_DEBUG 226 ("\n**__**Got eventhandler from Remote Core succesffuly - values are : **__**"); 227 DOMX_DEBUG 228 ("hComp :0x%x,eEvent: 0x%x,nData1: 0x%x,nData2: 0x%x,pEventData: 0x%x", 229 hComp, eEvent, nData1, nData2, pEventData); 230 DOMX_DEBUG("Just Before Entering Proxy Event handler call"); 231 232 tRPCError = 233 pCompPrv->proxyEventHandler(hComp, pCompPrv->pILAppData, eEvent, 234 nData1, nData2, pEventData); 235 236 DOMX_EXIT(""); 237 return tRPCError; 238 239} 240 241/* ===========================================================================*/ 242/** 243 * @name EMPTY-SKEL 244 * @brief 245 * @param 246 * @return 247 * 248 */ 249/* ===========================================================================*/ 250RPC_OMX_ERRORTYPE RPC_SKEL_GetHandle(uint32_t size, uint32_t * data) 251{ 252 return RPC_OMX_ErrorNone; 253} 254 255RPC_OMX_ERRORTYPE RPC_SKEL_SetParameter(uint32_t size, uint32_t * data) 256{ 257 return RPC_OMX_ErrorNone; 258} 259 260RPC_OMX_ERRORTYPE RPC_SKEL_GetParameter(uint32_t size, uint32_t * data) 261{ 262 return RPC_OMX_ErrorNone; 263} 264 265RPC_OMX_ERRORTYPE RPC_SKEL_FreeHandle(uint32_t size, uint32_t * data) 266{ 267 return RPC_OMX_ErrorNone; 268} 269 270RPC_OMX_ERRORTYPE RPC_SKEL_EmptyThisBuffer(uint32_t size, uint32_t * data) 271{ 272 return RPC_OMX_ErrorNone; 273} 274 275RPC_OMX_ERRORTYPE RPC_SKEL_FillThisBuffer(uint32_t size, uint32_t * data) 276{ 277 return RPC_OMX_ErrorNone; 278} 279 280RPC_OMX_ERRORTYPE RPC_SKEL_UseBuffer(uint32_t size, uint32_t * data) 281{ 282 return RPC_OMX_ErrorNone; 283} 284 285RPC_OMX_ERRORTYPE RPC_SKEL_FreeBuffer(uint32_t size, uint32_t * data) 286{ 287 return RPC_OMX_ErrorNone; 288} 289 290RPC_OMX_ERRORTYPE RPC_SKEL_SetConfig(uint32_t size, uint32_t * data) 291{ 292 return RPC_OMX_ErrorNone; 293} 294 295RPC_OMX_ERRORTYPE RPC_SKEL_GetConfig(uint32_t size, uint32_t * data) 296{ 297 return RPC_OMX_ErrorNone; 298} 299 300RPC_OMX_ERRORTYPE RPC_SKEL_GetState(uint32_t size, uint32_t * data) 301{ 302 return RPC_OMX_ErrorNone; 303} 304 305RPC_OMX_ERRORTYPE RPC_SKEL_SendCommand(uint32_t size, uint32_t * data) 306{ 307 return RPC_OMX_ErrorNone; 308} 309 310RPC_OMX_ERRORTYPE RPC_SKEL_GetComponentVersion(uint32_t size, uint32_t * data) 311{ 312 return RPC_OMX_ErrorNone; 313} 314 315RPC_OMX_ERRORTYPE RPC_SKEL_GetExtensionIndex(uint32_t size, uint32_t * data) 316{ 317 return RPC_OMX_ErrorNone; 318} 319 320RPC_OMX_ERRORTYPE RPC_SKEL_AllocateBuffer(uint32_t size, uint32_t * data) 321{ 322 return RPC_OMX_ErrorNone; 323} 324 325RPC_OMX_ERRORTYPE RPC_SKEL_ComponentTunnelRequest(uint32_t size, 326 uint32_t * data) 327{ 328 return RPC_OMX_ErrorNone; 329} 330