diff options
author | naveen kumar penda <a0393443@ti.com> | 2011-10-25 23:04:21 +0530 |
---|---|---|
committer | Pradeep Venkatasubbarao <pradeepv@ti.com> | 2011-11-03 13:21:24 +0530 |
commit | 6db0bb65f51641f3821a3e5b192504cf88199abf (patch) | |
tree | d426c5eafa91bfe4d8c65a27861cc858ceba2d99 | |
parent | 85859770aad0bdb4c02521d1ce4019dbaad580f9 (diff) | |
download | hardware_ti_omap4-6db0bb65f51641f3821a3e5b192504cf88199abf.zip hardware_ti_omap4-6db0bb65f51641f3821a3e5b192504cf88199abf.tar.gz hardware_ti_omap4-6db0bb65f51641f3821a3e5b192504cf88199abf.tar.bz2 |
now DCC loading happens during loaded->Idle
Signed-off-by: naveen kumar penda <a0393443@ti.com>
This patch provides
a. DCC loading happens during loaded -> Idle state transition
b. For Mem-Mem, intelligence added on Ducati side so that no Sensor
Detect and DCC loading will be executed.
Ducati side patch:
https://android.dal.design.ti.com/#change,4029
OMX interface changes are taken care:
http://review.omapzoom.org/#change,15842
Change-Id: Icfd874b86993315648227efb67da34dd121c2699
-rwxr-xr-x | omx_proxy_component/omx_camera/src/omx_proxy_camera.c | 90 |
1 files changed, 55 insertions, 35 deletions
diff --git a/omx_proxy_component/omx_camera/src/omx_proxy_camera.c b/omx_proxy_component/omx_camera/src/omx_proxy_camera.c index 19d9533..911b589 100755 --- a/omx_proxy_component/omx_camera/src/omx_proxy_camera.c +++ b/omx_proxy_component/omx_camera/src/omx_proxy_camera.c @@ -136,6 +136,8 @@ OMX_ERRORTYPE __PROXY_SetParameter(OMX_IN OMX_HANDLETYPE, OMX_INDEXTYPE, OMX_PTR, OMX_PTR); OMX_ERRORTYPE __PROXY_GetParameter(OMX_IN OMX_HANDLETYPE, OMX_INDEXTYPE, OMX_PTR, OMX_PTR); +OMX_ERRORTYPE PROXY_SendCommand(OMX_HANDLETYPE, OMX_COMMANDTYPE, + OMX_U32,OMX_PTR); OMX_ERRORTYPE CameraMaptoTilerDuc(OMX_TI_CONFIG_SHAREDBUFFER *, OMX_PTR *); //COREID TARGET_CORE_ID = CORE_APPM3; @@ -166,6 +168,58 @@ static OMX_ERRORTYPE ComponentPrivateDeInit(OMX_IN OMX_HANDLETYPE hComponent) return eError; } +static OMX_ERRORTYPE Camera_SendCommand(OMX_IN OMX_HANDLETYPE hComponent, + OMX_IN OMX_COMMANDTYPE eCmd, + OMX_IN OMX_U32 nParam, OMX_IN OMX_PTR pCmdData) + +{ + OMX_ERRORTYPE eError = OMX_ErrorNone, eCompReturn; + RPC_OMX_ERRORTYPE eRPCError = RPC_OMX_ErrorNone; + PROXY_COMPONENT_PRIVATE *pCompPrv; + OMX_COMPONENTTYPE *hComp = (OMX_COMPONENTTYPE *) hComponent; + static OMX_BOOL dcc_loaded = OMX_FALSE; + + OMX_ERRORTYPE dcc_eError = OMX_ErrorNone; + TIMM_OSAL_ERRORTYPE eOsalError = TIMM_OSAL_ERR_NONE; + OMX_U32 i; + + pCompPrv = (PROXY_COMPONENT_PRIVATE *) hComp->pComponentPrivate; + + if ((eCmd == OMX_CommandStateSet) && + (nParam == (OMX_STATETYPE) OMX_StateIdle)) + { + if (!dcc_loaded) + { + dcc_eError = DCC_Init(hComponent); + if (dcc_eError != OMX_ErrorNone) + { + DOMX_ERROR(" Error in DCC Init"); + } + /* Configure Ducati to use DCC buffer from A9 side + *ONLY* if DCC_Init is successful. */ + if (dcc_eError == OMX_ErrorNone) + { + dcc_eError = send_DCCBufPtr(hComponent); + if (dcc_eError != OMX_ErrorNone) + { + DOMX_ERROR(" Error in Sending DCC Buf ptr"); + } + DCC_DeInit(); + } + dcc_loaded = OMX_TRUE; + } + } + + eError = + PROXY_SendCommand(hComponent,eCmd,nParam,pCmdData); + +EXIT: + + DOMX_EXIT("eError: %d", eError); + return eError; + +} + /* ===========================================================================*/ /** * @name CameraGetConfig() @@ -335,42 +389,8 @@ OMX_ERRORTYPE OMX_ComponentInit(OMX_HANDLETYPE hComponent) pHandle->ComponentDeInit = ComponentPrivateDeInit; pHandle->GetConfig = CameraGetConfig; pHandle->SetConfig = CameraSetConfig; - char *val = getenv("SET_DCC"); - dcc_flag = val ? strtol(val, NULL, 0) : DEFAULT_DCC; - DOMX_DEBUG(" DCC: 0 - disabled 1 - enabled : val: %d", dcc_flag); - - if (dcc_flag) - { - eOsalError = - TIMM_OSAL_MutexObtain(cam_mutex, TIMM_OSAL_SUSPEND); - PROXY_assert(eOsalError == TIMM_OSAL_ERR_NONE, - OMX_ErrorInsufficientResources, "Mutex lock failed"); - - if (numofInstance == 0) - { - dcc_eError = DCC_Init(hComponent); - if (dcc_eError != OMX_ErrorNone) - { - DOMX_DEBUG(" Error in DCC Init"); - } + pHandle->SendCommand = Camera_SendCommand; - /* Configure Ducati to use DCC buffer from A9 side - *ONLY* if DCC_Init is successful. */ - if (dcc_eError == OMX_ErrorNone) - { - dcc_eError = send_DCCBufPtr(hComponent); - if (dcc_eError != OMX_ErrorNone) - { - DOMX_DEBUG(" Error in Sending DCC Buf ptr"); - } - DCC_DeInit(); - } - } - numofInstance = numofInstance + 1; - eOsalError = TIMM_OSAL_MutexRelease(cam_mutex); - PROXY_assert(eOsalError == TIMM_OSAL_ERR_NONE, - OMX_ErrorInsufficientResources, "Mutex release failed"); - } EXIT: return eError; } |