From 49f42f954f02c39aa4d25520a4caa3f0b459aa40 Mon Sep 17 00:00:00 2001 From: Sarthak Aggarwal Date: Thu, 11 Aug 2011 10:06:49 +0530 Subject: Moving Bitstream buffers to ION The patch moves 1d bitstream buffers needed by video codecs from MemMngr to ION. Change-Id: I56f010f904a64ae0d36bbc8925498f3748a0ab42 Signed-Off-By:Sarthak Aggarwal --- domx/domx/Android.mk | 6 +- domx/domx/omx_proxy_common.h | 8 ++ domx/domx/omx_proxy_common/src/omx_proxy_common.c | 160 +++++++++++++++++++-- domx/omx_core/src/OMX_Core.c | 3 + domx/omx_proxy_component/Android.mk | 38 ++++- .../omx_camera/src/omx_proxy_camera.c | 2 +- .../omx_video_dec/src/omx_proxy_videodec.c | 30 +++- 7 files changed, 226 insertions(+), 21 deletions(-) (limited to 'domx') diff --git a/domx/domx/Android.mk b/domx/domx/Android.mk index a724e62..2cf7939 100644 --- a/domx/domx/Android.mk +++ b/domx/domx/Android.mk @@ -16,17 +16,19 @@ LOCAL_C_INCLUDES += \ $(LOCAL_PATH)/../mm_osal/inc \ $(HARDWARE_TI_OMAP4_BASE)/tiler/ \ $(HARDWARE_TI_OMAP4_BASE)/hwc/ \ + $(HARDWARE_TI_OMAP4_BASE)/ion/ \ system/core/include/cutils \ $(HARDWARE_TI_OMAP4_BASE)/../../libhardware/include -LOCAL_CFLAGS += -D_Android -DENABLE_GRALLOC_BUFFERS -DUSE_ENHANCED_PORTRECONFIG -DANDROID_QUIRK_LOCK_BUFFER +LOCAL_CFLAGS += -D_Android -DENABLE_GRALLOC_BUFFERS -DUSE_ENHANCED_PORTRECONFIG -DANDROID_QUIRK_LOCK_BUFFER -DUSE_ION LOCAL_SHARED_LIBRARIES := \ libmm_osal \ libc \ liblog \ - libtimemmgr + libtimemmgr \ + libion LOCAL_MODULE:= libdomx LOCAL_MODULE_TAGS:= optional diff --git a/domx/domx/omx_proxy_common.h b/domx/domx/omx_proxy_common.h index 04f2b71..2db9615 100755 --- a/domx/domx/omx_proxy_common.h +++ b/domx/domx/omx_proxy_common.h @@ -139,6 +139,9 @@ extern "C" OMX_BUFFERHEADERTYPE *pBufHeader; OMX_U32 pBufHeaderRemote; OMX_PTR pYBuffer; +#ifdef USE_ION + int mmap_fd; +#endif } PROXY_BUFFER_INFO; /*===============================================================*/ @@ -194,6 +197,11 @@ extern "C" #ifdef ANDROID_QUIRK_LOCK_BUFFER gralloc_module_t const *grallocModule; #endif +#ifdef USE_ION + int ion_fd; + OMX_BOOL bUseIon; + OMX_BOOL bMapIonBuffers; +#endif } PROXY_COMPONENT_PRIVATE; diff --git a/domx/domx/omx_proxy_common/src/omx_proxy_common.c b/domx/domx/omx_proxy_common/src/omx_proxy_common.c index ed37caa..412ba47 100644 --- a/domx/domx/omx_proxy_common/src/omx_proxy_common.c +++ b/domx/domx/omx_proxy_common/src/omx_proxy_common.c @@ -76,6 +76,14 @@ #include "tiler.h" #endif +#ifdef USE_ION +#include +#include +#include +#include +#include +#include +#endif #ifdef ENABLE_GRALLOC_BUFFERS #include "native_handle.h" @@ -119,7 +127,7 @@ static OMX_ERRORTYPE PROXY_UseBuffer(OMX_IN OMX_HANDLETYPE hComponent, OMX_IN OMX_U32 nSizeBytes, OMX_IN OMX_U8 * pBuffer); #endif -#define LINUX_PAGE_SIZE (4 * 1024) +#define LINUX_PAGE_SIZE 4096 #define MAXNAMESIZE 128 #define CORE_MAX 4 @@ -168,6 +176,49 @@ char Core_Array[][MAX_CORENAME_LENGTH] = } \ } while(0) +#ifdef USE_ION + +RPC_OMX_ERRORTYPE RPC_RegisterBuffer(OMX_HANDLETYPE hRPCCtx, int fd, + struct ion_handle **handle) +{ + int status; + struct ion_fd_data data; + RPC_OMX_CONTEXT *pRPCCtx = (RPC_OMX_CONTEXT *) hRPCCtx; + + data.fd = fd; + status = ioctl(pRPCCtx->fd_omx, ION_IOC_IMPORT, &data); + if (status < 0) + return RPC_OMX_ErrorInsufficientResources; + *handle = data.handle; + return RPC_OMX_ErrorNone; +} + +static OMX_ERRORTYPE PROXY_AllocateBufferIonCarveout(PROXY_COMPONENT_PRIVATE *pCompPrv, + size_t len, struct ion_handle **handle) +{ + int fd; + int ret; + struct ion_handle *temp; + + ret = ion_alloc(pCompPrv->ion_fd, len, 0, 1 << ION_HEAP_TYPE_CARVEOUT, &temp); + DOMX_DEBUG("ION being USED for allocation!!!!! handle = %x, ret =%x",temp,ret); + if (ret) + return OMX_ErrorInsufficientResources; + /* + ret = ion_share(pCompPrv->ion_fd, temp, &fd); + if (ret) { + ion_free(pCompPrv->ion_fd, temp); + return OMX_ErrorHardware; + } + RPC_RegisterBuffer(pCompPrv->hRemoteComp, fd, handle); + close(fd); + ion_free(pCompPrv->ion_fd, temp); + */ + *handle = temp; + return OMX_ErrorNone; +} + +#endif /* ===========================================================================*/ /** @@ -590,11 +641,15 @@ static OMX_ERRORTYPE PROXY_AllocateBuffer(OMX_IN OMX_HANDLETYPE hComponent, OMX_COMPONENTTYPE *hComp = (OMX_COMPONENTTYPE *) hComponent; OMX_U32 currentBuffer = 0, i = 0; OMX_BOOL bSlotFound = OMX_FALSE; - +#ifdef USE_ION + struct ion_handle *handle = NULL; +#endif #ifdef ALLOCATE_TILER_BUFFER_IN_PROXY // Do the tiler allocations in Proxy and call use buffers on Ducati. - OMX_U32 nSize = nSizeBytes, nStride = 0; + //Round Off the size to allocate and map to next page boundary. + OMX_U32 nSize = (nSizeBytes + LINUX_PAGE_SIZE - 1) & ~(LINUX_PAGE_SIZE - 1); + OMX_U32 nStride = 0; OMX_U8* pMemptr = NULL; OMX_CONFIG_RECTTYPE tParamRect; OMX_PARAM_PORTDEFINITIONTYPE tParamPortDef; @@ -643,6 +698,7 @@ static OMX_ERRORTYPE PROXY_AllocateBuffer(OMX_IN OMX_HANDLETYPE hComponent, blocks[1].dim.area.width = tParamRect.nWidth >> 1; blocks[1].dim.area.height = tParamRect.nHeight >> 1; blocks[1].stride = 0; + } else if(eError == OMX_ErrorUnsupportedIndex) { @@ -671,7 +727,6 @@ static OMX_ERRORTYPE PROXY_AllocateBuffer(OMX_IN OMX_HANDLETYPE hComponent, blocks[1].dim.area.width = tParamPortDef.format.video.nFrameWidth >> 1; blocks[1].dim.area.height = tParamPortDef.format.video.nFrameHeight >> 1; blocks[1].stride = 0; - } if(eError != OMX_ErrorNone) { @@ -684,6 +739,16 @@ static OMX_ERRORTYPE PROXY_AllocateBuffer(OMX_IN OMX_HANDLETYPE hComponent, DOMX_DEBUG(" Y Buffer : Allocated Width:%d, Height:%d",blocks[0].dim.area.width, blocks[0].dim.area.height); } +#ifdef USE_ION + else if (nStride == 0 && pCompPrv->bUseIon == OMX_TRUE) + { + eError = PROXY_AllocateBufferIonCarveout(pCompPrv, nSize, &handle); + pMemptr = handle; + DOMX_DEBUG ("Ion handle recieved = %x",handle); + if (eError != OMX_ErrorNone) + return eError; + } +#endif else //Allocate 1D buffer { block.fmt = PIXEL_FMT_PAGE; @@ -692,7 +757,6 @@ static OMX_ERRORTYPE PROXY_AllocateBuffer(OMX_IN OMX_HANDLETYPE hComponent, pMemptr = (OMX_U8*) MemMgr_Alloc(&block, 1); PROXY_assert((pMemptr != NULL), OMX_ErrorInsufficientResources,"MemMgr_Alloc returns NULL, abort,"); - } /*Pick up 1st empty slot */ @@ -728,6 +792,21 @@ static OMX_ERRORTYPE PROXY_AllocateBuffer(OMX_IN OMX_HANDLETYPE hComponent, pCompPrv->tBufList[currentBuffer].pYBuffer = pMemptr; } +#ifdef USE_ION + if (nStride == 0 && pCompPrv->bUseIon == OMX_TRUE && pCompPrv->bMapIonBuffers == OMX_TRUE) + { + DOMX_DEBUG("before mapping, handle = %x, nSize = %d",handle,nSize); + if (ion_map(pCompPrv->ion_fd, handle, nSize, PROT_READ | PROT_WRITE, MAP_SHARED, 0, + &((*ppBufferHdr)->pBuffer), + &(pCompPrv->tBufList[currentBuffer].mmap_fd)) < 0) + { + DOMX_ERROR("userspace mapping of ION buffers returned error"); + return OMX_ErrorInsufficientResources; + } + //ion_free(pCompPrv->ion_fd, handleToMap); + } +#endif + #else //This code is the un-changed version of original implementation. OMX_BUFFERHEADERTYPE *pBufferHeader = NULL; @@ -858,6 +937,10 @@ static OMX_ERRORTYPE PROXY_UseBuffer(OMX_IN OMX_HANDLETYPE hComponent, OMX_PTR pAuxBuf0 = pBuffer; OMX_TI_PARAM_METADATABUFFERINFO tMetaDataBuffer; MemAllocBlock block; + OMX_U32 nBufferHeight = 0; + OMX_CONFIG_RECTTYPE tParamRect; + OMX_PARAM_PORTDEFINITIONTYPE tParamPortDef; + PROXY_require((hComp->pComponentPrivate != NULL), OMX_ErrorBadParameter, NULL); @@ -943,7 +1026,51 @@ static OMX_ERRORTYPE PROXY_UseBuffer(OMX_IN OMX_HANDLETYPE hComponent, ((OMX_TI_PLATFORMPRIVATE *) pBufferHeader->pPlatformPrivate)-> pAuxBuf1 = (OMX_U8 *)(((IMG_native_handle_t*)pBuffer)->fd[1]); } +#ifdef USE_ION + else + { + tParamRect.nSize = sizeof(OMX_CONFIG_RECTTYPE); + tParamRect.nVersion.s.nVersionMajor = 1; + tParamRect.nVersion.s.nVersionMinor = 1; + tParamRect.nVersion.s.nRevision = 0; + tParamRect.nVersion.s.nStep = 0; + tParamRect.nPortIndex = nPortIndex; + + eError = PROXY_GetParameter(hComponent, (OMX_INDEXTYPE)OMX_TI_IndexParam2DBufferAllocDimension, &tParamRect); + if(eError == OMX_ErrorNone) + { + nBufferHeight = tParamRect.nHeight; + } + else if(eError == OMX_ErrorUnsupportedIndex) + { + DOMX_ERROR("Component does not support OMX_TI_IndexParam2DBufferAllocDimension, \ + reverting to OMX_PARAM_PORTDEFINITIONTYPE"); + tParamPortDef.nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); + tParamPortDef.nVersion.s.nVersionMajor = 1; + tParamPortDef.nVersion.s.nVersionMinor = 1; + tParamPortDef.nVersion.s.nRevision = 0; + tParamPortDef.nVersion.s.nStep = 0; + tParamPortDef.nPortIndex = nPortIndex; + + eError = PROXY_GetParameter(hComponent, OMX_IndexParamPortDefinition, &tParamPortDef); + if(eError != OMX_ErrorNone) + { + DOMX_ERROR("PROXY_GetParameter returns err %d (0x%x)", eError, eError); + return eError; + } + + nBufferHeight = tParamPortDef.format.video.nFrameHeight; + } + if(eError != OMX_ErrorNone) + { + DOMX_ERROR("PROXY_GetParameter returns err %d (0x%x)", eError, eError); + return eError; + } + ((OMX_TI_PLATFORMPRIVATE *) pBufferHeader->pPlatformPrivate)-> + pAuxBuf1 = (OMX_U8*) ((OMX_U32)pBuffer + (LINUX_PAGE_SIZE*nBufferHeight)); + } +#endif if(pCompPrv->proxyPortBuffers[nPortIndex].proxyBufferType == EncoderMetadataPointers) { ((OMX_TI_PLATFORMPRIVATE *) pBufferHeader->pPlatformPrivate)-> @@ -1030,7 +1157,7 @@ static OMX_ERRORTYPE PROXY_FreeBuffer(OMX_IN OMX_HANDLETYPE hComponent, PROXY_COMPONENT_PRIVATE *pCompPrv = NULL; RPC_OMX_ERRORTYPE eRPCError = RPC_OMX_ErrorNone, eTmpRPCError = RPC_OMX_ErrorNone; - OMX_U32 count = 0; + OMX_U32 count = 0, nStride = 0; OMX_U32 pBuffer = 0; OMX_PTR pMetaDataBuffer = NULL; @@ -1072,6 +1199,19 @@ static OMX_ERRORTYPE PROXY_FreeBuffer(OMX_IN OMX_HANDLETYPE hComponent, if (pCompPrv->tBufList[count].pBufHeader) { +#ifdef USE_ION + (void)RPC_UTIL_GetStride(pCompPrv->hRemoteComp, nPortIndex, &nStride); + if (nStride == 0 && pCompPrv->bUseIon == OMX_TRUE) + { + if(pCompPrv->bMapIonBuffers == OMX_TRUE) + { + munmap(pBufferHdr->pBuffer, pBufferHdr->nSize); + close(pCompPrv->tBufList[count].mmap_fd); + } + ion_free(pCompPrv->ion_fd, pCompPrv->tBufList[count].pYBuffer); + pCompPrv->tBufList[count].pYBuffer = NULL; + } +#endif #ifdef ALLOCATE_TILER_BUFFER_IN_PROXY if(pCompPrv->tBufList[count].pYBuffer) { @@ -1732,7 +1872,7 @@ OMX_ERRORTYPE PROXY_ComponentDeInit(OMX_HANDLETYPE hComponent) RPC_OMX_ErrorNone; PROXY_COMPONENT_PRIVATE *pCompPrv; OMX_COMPONENTTYPE *hComp = (OMX_COMPONENTTYPE *) hComponent; - OMX_U32 count = 0; + OMX_U32 count = 0, nStride = 0; DOMX_ENTER("hComponent = %p", hComponent); @@ -1741,6 +1881,8 @@ OMX_ERRORTYPE PROXY_ComponentDeInit(OMX_HANDLETYPE hComponent) pCompPrv = (PROXY_COMPONENT_PRIVATE *) hComp->pComponentPrivate; + ion_close(pCompPrv->ion_fd); + for (count = 0; count < pCompPrv->nTotalBuffers; count++) { if (pCompPrv->tBufList[count].pBufHeader) @@ -1865,8 +2007,8 @@ OMX_ERRORTYPE OMX_ProxyCommonInit(OMX_HANDLETYPE hComponent) pCompPrv->bMapIonBuffers = OMX_TRUE; pCompPrv->ion_fd = ion_open(); - if(pCompPrv->ion_fd < 0) - { + if(pCompPrv->ion_fd == 0) + { DOMX_ERROR("ion_open failed!!!"); return OMX_ErrorInsufficientResources; } diff --git a/domx/omx_core/src/OMX_Core.c b/domx/omx_core/src/OMX_Core.c index 9022415..fc439db 100755 --- a/domx/omx_core/src/OMX_Core.c +++ b/domx/omx_core/src/OMX_Core.c @@ -81,6 +81,9 @@ char *tComponentName[MAXCOMP][MAX_ROLES] = { "video_decoder.wmv", "video_decoder.vp6", "video_decoder.vp7", NULL}, + {"OMX.TI.DUCATI1.VIDEO.DECODER.secure", "video_decoder.mpeg4", + "video_decoder.avc", + "video_decoder.h263", NULL}, {"OMX.TI.DUCATI1.VIDEO.H264D", "video_decoder.avc", NULL}, {"OMX.TI.DUCATI1.VIDEO.H264E", "video_encoder.avc", NULL}, {"OMX.TI.DUCATI1.VIDEO.MPEG4D", "video_decoder.mpeg4", NULL}, diff --git a/domx/omx_proxy_component/Android.mk b/domx/omx_proxy_component/Android.mk index 8a0d150..f1752d5 100644 --- a/domx/omx_proxy_component/Android.mk +++ b/domx/omx_proxy_component/Android.mk @@ -23,7 +23,7 @@ LOCAL_SHARED_LIBRARIES := \ libhardware LOCAL_CFLAGS += -DLINUX -DTMS32060 -D_DB_TIOMAP -DSYSLINK_USE_SYSMGR -DSYSLINK_USE_LOADER -LOCAL_CFLAGS += -D_Android -DSET_STRIDE_PADDING_FROM_PROXY -DANDROID_QUIRCK_CHANGE_PORT_VALUES -DUSE_ENHANCED_PORTRECONFIG -DANDROID_QUIRK_LOCK_BUFFER +LOCAL_CFLAGS += -D_Android -DSET_STRIDE_PADDING_FROM_PROXY -DANDROID_QUIRCK_CHANGE_PORT_VALUES -DUSE_ENHANCED_PORTRECONFIG -DANDROID_QUIRK_LOCK_BUFFER -DUSE_ION LOCAL_MODULE_TAGS:= optional LOCAL_SRC_FILES:= omx_video_dec/src/omx_proxy_videodec.c @@ -50,7 +50,7 @@ LOCAL_SHARED_LIBRARIES := \ libdomx LOCAL_CFLAGS += -DTMS32060 -D_DB_TIOMAP -DSYSLINK_USE_SYSMGR -DSYSLINK_USE_LOADER -LOCAL_CFLAGS += -D_Android -DSET_STRIDE_PADDING_FROM_PROXY -DANDROID_QUIRCK_CHANGE_PORT_VALUES -DUSE_ENHANCED_PORTRECONFIG +LOCAL_CFLAGS += -D_Android -DSET_STRIDE_PADDING_FROM_PROXY -DANDROID_QUIRCK_CHANGE_PORT_VALUES -DUSE_ENHANCED_PORTRECONFIG -DANDROID_QUIRK_LOCK_BUFFER -DUSE_ION LOCAL_MODULE_TAGS:= optional LOCAL_SRC_FILES:= omx_sample/src/omx_proxy_sample.c @@ -80,7 +80,7 @@ LOCAL_SHARED_LIBRARIES := \ libdomx LOCAL_CFLAGS += -DTMS32060 -D_DB_TIOMAP -DSYSLINK_USE_SYSMGR -DSYSLINK_USE_LOADER -LOCAL_CFLAGS += -D_Android -DSET_STRIDE_PADDING_FROM_PROXY -DANDROID_QUIRCK_CHANGE_PORT_VALUES -DUSE_ENHANCED_PORTRECONFIG +LOCAL_CFLAGS += -D_Android -DSET_STRIDE_PADDING_FROM_PROXY -DANDROID_QUIRCK_CHANGE_PORT_VALUES -DUSE_ENHANCED_PORTRECONFIG -DANDROID_QUIRK_LOCK_BUFFER -DUSE_ION LOCAL_MODULE_TAGS:= optional LOCAL_SRC_FILES:= omx_camera/src/omx_proxy_camera.c @@ -112,10 +112,40 @@ LOCAL_SHARED_LIBRARIES := \ LOCAL_CFLAGS += -DLINUX -DTMS32060 -D_DB_TIOMAP -DSYSLINK_USE_SYSMGR -DSYSLINK_USE_LOADER -LOCAL_CFLAGS += -D_Android -DSET_STRIDE_PADDING_FROM_PROXY -DANDROID_QUIRCK_CHANGE_PORT_VALUES -DUSE_ENHANCED_PORTRECONFIG -DENABLE_GRALLOC_BUFFER +LOCAL_CFLAGS += -D_Android -DSET_STRIDE_PADDING_FROM_PROXY -DANDROID_QUIRCK_CHANGE_PORT_VALUES -DUSE_ENHANCED_PORTRECONFIG -DENABLE_GRALLOC_BUFFER -DANDROID_QUIRK_LOCK_BUFFER -DUSE_ION LOCAL_MODULE_TAGS:= optional LOCAL_SRC_FILES:= omx_h264_enc/src/omx_proxy_h264enc.c LOCAL_MODULE:= libOMX.TI.DUCATI1.VIDEO.H264E include $(BUILD_HEAPTRACKED_SHARED_LIBRARY) + +# +# libOMX.TI.DUCATI1.VIDEO.DECODER.secure +# + +include $(CLEAR_VARS) + +LOCAL_C_INCLUDES += \ + $(LOCAL_PATH)/../omx_core/inc \ + $(LOCAL_PATH)/../mm_osal/inc \ + $(LOCAL_PATH)/../domx \ + $(LOCAL_PATH)/../domx/omx_rpc/inc \ + $(LOCAL_PATH)/../domx \ + $(LOCAL_PATH)/../mm_osal/inc + +LOCAL_SHARED_LIBRARIES := \ + libc \ + libmm_osal \ + libOMX_Core \ + liblog \ + libOMX.TI.DUCATI1.VIDEO.DECODER + +LOCAL_CFLAGS += -DLINUX -DTMS32060 -D_DB_TIOMAP -DSYSLINK_USE_SYSMGR -DSYSLINK_USE_LOADER -DANDROID_QUIRK_LOCK_BUFFER -DUSE_ION +LOCAL_CFLAGS += -D_Android +LOCAL_MODULE_TAGS:= optional + +LOCAL_SRC_FILES:= omx_video_dec/src/omx_proxy_videodec_secure.c +LOCAL_MODULE:= libOMX.TI.DUCATI1.VIDEO.DECODER.secure +include $(BUILD_HEAPTRACKED_SHARED_LIBRARY) + diff --git a/domx/omx_proxy_component/omx_camera/src/omx_proxy_camera.c b/domx/omx_proxy_component/omx_camera/src/omx_proxy_camera.c index fb1a7de..b29c5f4 100755 --- a/domx/omx_proxy_component/omx_camera/src/omx_proxy_camera.c +++ b/domx/omx_proxy_component/omx_camera/src/omx_proxy_camera.c @@ -402,7 +402,7 @@ OMX_ERRORTYPE DCC_Init(OMX_HANDLETYPE hComponent) PROXY_assert(dcc_dir[nIndex] != NULL, OMX_ErrorInsufficientResources, "Malloc failed"); strcpy(dcc_dir[nIndex], DCC_PATH); - strcat(dcc_dir[nIndex], (OMX_STRING) param.sDCCURI); + strncat(dcc_dir[nIndex], (OMX_STRING) param.sDCCURI, MAX_URI_LENGTH); strcat(dcc_dir[nIndex], "/"); } } diff --git a/domx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec.c b/domx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec.c index 29dd06f..18e1d2e 100755 --- a/domx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec.c +++ b/domx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec.c @@ -120,12 +120,7 @@ OMX_ERRORTYPE OMX_ComponentInit(OMX_HANDLETYPE hComponent) OMX_COMPONENTTYPE *pHandle = NULL; PROXY_COMPONENT_PRIVATE *pComponentPrivate = NULL; pHandle = (OMX_COMPONENTTYPE *) hComponent; - OMX_TI_PARAM_ENHANCEDPORTRECONFIG tParamStruct; -#ifdef ANDROID_QUIRK_LOCK_BUFFER - OMX_U32 err; - hw_module_t const* module; -#endif DOMX_ENTER(""); DOMX_DEBUG("Component name provided is %s", COMPONENT_NAME); @@ -160,6 +155,31 @@ OMX_ERRORTYPE OMX_ComponentInit(OMX_HANDLETYPE hComponent) TIMM_OSAL_Memcpy(pComponentPrivate->cCompName, COMPONENT_NAME, strlen(COMPONENT_NAME) + 1); + eError = OMX_ProxyViddecInit(hComponent); + + EXIT: + return eError; +} + +OMX_ERRORTYPE OMX_ProxyViddecInit(OMX_HANDLETYPE hComponent) +{ + OMX_ERRORTYPE eError = OMX_ErrorNone; + OMX_COMPONENTTYPE *pHandle = NULL; + PROXY_COMPONENT_PRIVATE *pComponentPrivate = NULL; + pHandle = (OMX_COMPONENTTYPE *) hComponent; + OMX_TI_PARAM_ENHANCEDPORTRECONFIG tParamStruct; + +#ifdef ANDROID_QUIRK_LOCK_BUFFER + OMX_U32 err; + hw_module_t const* module; +#endif + DOMX_ENTER(""); + + DOMX_DEBUG("Component name provided is %s", COMPONENT_NAME); + + pComponentPrivate = + (PROXY_COMPONENT_PRIVATE *) pHandle->pComponentPrivate; + eError = OMX_ProxyCommonInit(hComponent); // Calling Proxy Common Init() #ifdef ANDROID_QUIRCK_CHANGE_PORT_VALUES pHandle->SetParameter = PROXY_VIDDEC_SetParameter; -- cgit v1.1