summaryrefslogtreecommitdiffstats
path: root/domx
diff options
context:
space:
mode:
authorSarthak Aggarwal <sarthak@ti.com>2011-08-11 10:06:49 +0530
committerIliyan Malchev <malchev@google.com>2011-08-24 18:25:37 -0700
commit49f42f954f02c39aa4d25520a4caa3f0b459aa40 (patch)
tree5f2e0852533ece653db69798ab6a44ad44acab1c /domx
parent03187db146a199f5274a89261e3a6372587c483e (diff)
downloadhardware_ti_omap4xxx-49f42f954f02c39aa4d25520a4caa3f0b459aa40.zip
hardware_ti_omap4xxx-49f42f954f02c39aa4d25520a4caa3f0b459aa40.tar.gz
hardware_ti_omap4xxx-49f42f954f02c39aa4d25520a4caa3f0b459aa40.tar.bz2
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<sarthak@ti.com>
Diffstat (limited to 'domx')
-rw-r--r--domx/domx/Android.mk6
-rwxr-xr-xdomx/domx/omx_proxy_common.h8
-rw-r--r--domx/domx/omx_proxy_common/src/omx_proxy_common.c160
-rwxr-xr-xdomx/omx_core/src/OMX_Core.c3
-rw-r--r--domx/omx_proxy_component/Android.mk38
-rwxr-xr-xdomx/omx_proxy_component/omx_camera/src/omx_proxy_camera.c2
-rwxr-xr-xdomx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec.c30
7 files changed, 226 insertions, 21 deletions
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 <unistd.h>
+#include <ion.h>
+#include <sys/ioctl.h>
+#include <sys/mman.h>
+#include <sys/eventfd.h>
+#include <fcntl.h>
+#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;