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_sample.c 35c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * This file contains methods that provides the functionality for 36c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * the OpenMAX1.1 DOMX Framework Tunnel Proxy component. 37c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev ********************************************************************************************* 38c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev This is the proxy specific wrapper that passes the component name to the generic proxy init() 39c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev The proxy wrapper also does some runtime/static time onfig on per proxy basis 40c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev This is a thin wrapper that is called when componentiit() of the proxy is called 41c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev static OMX_ERRORTYPE PROXY_Wrapper_init(OMX_HANDLETYPE hComponent, OMX_PTR pAppData); 42c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev this layer gets called first whenever a proxy s get handle is called 43c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev ************************************************************************************************ 44c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @path WTSD_DucatiMMSW\omx\omx_il_1_x\omx_proxy_component\src 45c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * 46c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @rev 1.0 47c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 48c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 49c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*============================================================== 50c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *! Revision History 51c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *! ============================ 52c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *! 19-August-2009 B Ravi Kiran ravi.kiran@ti.com: Initial Version 53c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *================================================================*/ 54c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 55c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/****************************************************************** 56c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * INCLUDE FILES 57c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev ******************************************************************/ 58c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <stdio.h> 59c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <string.h> 60c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <assert.h> 61c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include "omx_proxy_common.h" 62c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <timm_osal_interfaces.h> 63c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev//change to ducati1 later 64c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define COMPONENT_NAME "OMX.TI.DUCATI1.MISC.SAMPLE" // needs to be specific for every configuration wrapper 65c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 66c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevOMX_ERRORTYPE OMX_ComponentInit(OMX_HANDLETYPE hComponent) 67c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 68c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE eError = OMX_ErrorNone; 69c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_COMPONENTTYPE *pHandle = NULL; 70c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev PROXY_COMPONENT_PRIVATE *pComponentPrivate; 71c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pHandle = (OMX_COMPONENTTYPE *) hComponent; 72c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 73c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev DOMX_DEBUG 74c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev ("_____________________INSISDE PROXY WRAPPER__________________________\n"); 75c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 76c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pHandle->pComponentPrivate = 77c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (PROXY_COMPONENT_PRIVATE *) 78c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Malloc(sizeof(PROXY_COMPONENT_PRIVATE), TIMM_OSAL_TRUE, 79c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 0, TIMMOSAL_MEM_SEGMENT_INT); 80c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 81c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pComponentPrivate = 82c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (PROXY_COMPONENT_PRIVATE *) pHandle->pComponentPrivate; 83c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pHandle->pComponentPrivate == NULL) 84c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 85c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev DOMX_DEBUG 86c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (" ERROR IN ALLOCATING PROXY COMPONENT PRIVATE STRUCTURE"); 87c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = OMX_ErrorInsufficientResources; 88c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev goto EXIT; 89c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 90c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pComponentPrivate->cCompName = 91c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Malloc(MAX_COMPONENT_NAME_LENGTH * sizeof(OMX_U8), 92c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_TRUE, 0, TIMMOSAL_MEM_SEGMENT_INT); 93c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev // Copying component Name - this will be picked up in the proxy common 94c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev assert(strlen(COMPONENT_NAME) + 1 < MAX_COMPONENT_NAME_LENGTH); 95c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Memcpy(pComponentPrivate->cCompName, COMPONENT_NAME, 96c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev strlen(COMPONENT_NAME) + 1); 97c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = OMX_ProxyCommonInit(hComponent); // Calling Proxy Common Init() 98c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 99c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (eError != OMX_ErrorNone) 100c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 101c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev DOMX_DEBUG("\Error in Initializing Proxy"); 102c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Free(pComponentPrivate->cCompName); 103c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Free(pComponentPrivate); 104c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 105c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 106c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 107c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev EXIT: 108c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev return eError; 109c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} 110