fixed coverity issues
[platform/adaptation/ap_samsung/libomxil-e3250-v4l2.git] / openmax / component / video / enc / h264 / Exynos_OMX_H264enc.c
old mode 100644 (file)
new mode 100755 (executable)
index b9f10da..66ba582
@@ -40,6 +40,7 @@
 //#include "ExynosVideoApi.h"
 #include "Exynos_OSAL_SharedMemory.h"
 #include "Exynos_OSAL_Event.h"
+#include "Exynos_OMX_VencControl.h"
 
 /* To use CSC_METHOD_HW in EXYNOS OMX, gralloc should allocate physical memory using FIMC */
 /* It means GRALLOC_USAGE_HW_FIMC1 should be set on Native Window usage */
@@ -251,7 +252,7 @@ static void Set_H264Enc_Param(EXYNOS_OMX_BASECOMPONENT *pExynosComponent)
     pCommonParam->CbPadVal     = 0;
     pCommonParam->CrPadVal     = 0;
 
-    switch ((EXYNOS_OMX_COLOR_FORMATTYPE)pExynosInputPort->portDefinition.format.video.eColorFormat) {
+    switch ((int)pExynosInputPort->portDefinition.format.video.eColorFormat) {
     case OMX_COLOR_FormatYUV420SemiPlanar:
     case OMX_COLOR_FormatYUV420Planar: /* Converted to NV12 in Exynos_Preprocessor_InputData */
     case OMX_SEC_COLOR_FormatNV12L_DmaBuf_Fd:
@@ -285,7 +286,7 @@ static void Set_H264Enc_Param(EXYNOS_OMX_BASECOMPONENT *pExynosComponent)
     pH264Param->NumberBFrames = 0;    /* 0 ~ 2 */
     pH264Param->NumberReferenceFrames = 1;
     pH264Param->NumberRefForPframes   = 1;
-#ifdef SLP_PLATFORM /* for B2 camera */
+#ifdef TIZEN_FEATURE_E3250 /* for B2 camera */
     pH264Param->LoopFilterDisable     = 0;    /* 1: Loop Filter Disable, 0: Filter Enable */
 #else
     pH264Param->LoopFilterDisable     = 1;    /* 1: Loop Filter Disable, 0: Filter Enable */
@@ -376,10 +377,7 @@ static void Change_H264Enc_Param(EXYNOS_OMX_BASECOMPONENT *pExynosComponent)
 
 OMX_ERRORTYPE GetCodecInputPrivateData(OMX_PTR codecBuffer, OMX_PTR addr[], OMX_U32 size[])
 {
-    OMX_ERRORTYPE       ret = OMX_ErrorNone;
-
-EXIT:
-    return ret;
+    return OMX_ErrorNone;
 }
 
 OMX_ERRORTYPE GetCodecOutputPrivateData(OMX_PTR codecBuffer, OMX_PTR *pVirtAddr, OMX_U32 *dataSize)
@@ -558,7 +556,6 @@ OMX_ERRORTYPE H264CodecStart(OMX_COMPONENTTYPE *pOMXComponent, OMX_U32 nPortInde
 {
     OMX_ERRORTYPE            ret = OMX_ErrorNone;
     void                    *hMFCHandle = NULL;
-    ExynosVideoEncOps       *pEncOps    = NULL;
     ExynosVideoEncBufferOps *pInbufOps  = NULL;
     ExynosVideoEncBufferOps *pOutbufOps = NULL;
     EXYNOS_OMX_VIDEOENC_COMPONENT *pVideoEnc = NULL;
@@ -584,7 +581,6 @@ OMX_ERRORTYPE H264CodecStart(OMX_COMPONENTTYPE *pOMXComponent, OMX_U32 nPortInde
     }
 
     hMFCHandle = pH264Enc->hMFCH264Handle.hMFCHandle;
-    pEncOps    = pH264Enc->hMFCH264Handle.pEncOps;
     pInbufOps  = pH264Enc->hMFCH264Handle.pInbufOps;
     pOutbufOps = pH264Enc->hMFCH264Handle.pOutbufOps;
 
@@ -604,10 +600,10 @@ EXIT:
 OMX_ERRORTYPE H264CodecStop(OMX_COMPONENTTYPE *pOMXComponent, OMX_U32 nPortIndex)
 {
     OMX_ERRORTYPE            ret = OMX_ErrorNone;
-    void                    *hMFCHandle = NULL;
-    ExynosVideoEncOps       *pEncOps    = NULL;
-    ExynosVideoEncBufferOps *pInbufOps  = NULL;
+
+       void                    *hMFCHandle = NULL;
     ExynosVideoEncBufferOps *pOutbufOps = NULL;
+    ExynosVideoEncBufferOps *pInbufOps  = NULL;
     EXYNOS_OMX_VIDEOENC_COMPONENT *pVideoEnc = NULL;
     EXYNOS_H264ENC_HANDLE   *pH264Enc = NULL;
 
@@ -628,9 +624,7 @@ OMX_ERRORTYPE H264CodecStop(OMX_COMPONENTTYPE *pOMXComponent, OMX_U32 nPortIndex
         ret = OMX_ErrorBadParameter;
         goto EXIT;
     }
-
     hMFCHandle = pH264Enc->hMFCH264Handle.hMFCHandle;
-    pEncOps    = pH264Enc->hMFCH264Handle.pEncOps;
     pInbufOps  = pH264Enc->hMFCH264Handle.pInbufOps;
     pOutbufOps = pH264Enc->hMFCH264Handle.pOutbufOps;
 
@@ -656,16 +650,14 @@ OMX_ERRORTYPE H264CodecSrcInit(OMX_COMPONENTTYPE *pOMXComponent)
     EXYNOS_MFC_H264ENC_HANDLE     *pMFCH264Handle    = &pH264Enc->hMFCH264Handle;
     void                          *hMFCHandle = pMFCH264Handle->hMFCHandle;
     EXYNOS_OMX_BASEPORT           *pExynosInputPort = &pExynosComponent->pExynosPort[INPUT_PORT_INDEX];
-    EXYNOS_OMX_BASEPORT           *pExynosOutputPort = &pExynosComponent->pExynosPort[OUTPUT_PORT_INDEX];
 
     ExynosVideoEncOps       *pEncOps    = pH264Enc->hMFCH264Handle.pEncOps;
     ExynosVideoEncBufferOps *pInbufOps  = pH264Enc->hMFCH264Handle.pInbufOps;
-    ExynosVideoEncBufferOps *pOutbufOps = pH264Enc->hMFCH264Handle.pOutbufOps;
     ExynosVideoEncParam     *pEncParam    = NULL;
 
     ExynosVideoGeometry      bufferConf;
     OMX_U32                  inputBufferNumber = 0;
-    int i, nOutbufs;
+    int i;
 
     FunctionIn();
 
@@ -778,7 +770,7 @@ OMX_ERRORTYPE H264CodecSrcInit(OMX_COMPONENTTYPE *pOMXComponent)
             /*************/
             /* Does not require any actions. */
         } else {
-#ifndef SLP_PLATFORM /* slp platform can go into here */
+#ifndef TIZEN_FEATURE_E3250 /* slp platform can go into here */
             Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "Failed to get input buffer info");
             ret = OMX_ErrorNotImplemented;
             goto EXIT;
@@ -795,10 +787,6 @@ EXIT:
 OMX_ERRORTYPE H264CodecOutputBufferProcessRun(OMX_COMPONENTTYPE *pOMXComponent, OMX_U32 nPortIndex)
 {
     OMX_ERRORTYPE            ret = OMX_ErrorNone;
-    void                    *hMFCHandle = NULL;
-    ExynosVideoEncOps       *pEncOps    = NULL;
-    ExynosVideoEncBufferOps *pInbufOps  = NULL;
-    ExynosVideoEncBufferOps *pOutbufOps = NULL;
     EXYNOS_OMX_VIDEOENC_COMPONENT *pVideoEnc = NULL;
     EXYNOS_H264ENC_HANDLE   *pH264Enc = NULL;
 
@@ -820,11 +808,6 @@ OMX_ERRORTYPE H264CodecOutputBufferProcessRun(OMX_COMPONENTTYPE *pOMXComponent,
         goto EXIT;
     }
 
-    hMFCHandle = pH264Enc->hMFCH264Handle.hMFCHandle;
-    pEncOps    = pH264Enc->hMFCH264Handle.pEncOps;
-    pInbufOps  = pH264Enc->hMFCH264Handle.pInbufOps;
-    pOutbufOps = pH264Enc->hMFCH264Handle.pOutbufOps;
-
     if (nPortIndex == INPUT_PORT_INDEX) {
         if (pH264Enc->bSourceStart == OMX_FALSE) {
             Exynos_OSAL_SignalSet(pH264Enc->hSourceStartEvent);
@@ -854,11 +837,8 @@ OMX_ERRORTYPE H264CodecEnqueueAllBuffer(OMX_COMPONENTTYPE *pOMXComponent, OMX_U3
     EXYNOS_OMX_VIDEOENC_COMPONENT *pVideoEnc = (EXYNOS_OMX_VIDEOENC_COMPONENT *)pExynosComponent->hComponentHandle;
     EXYNOS_H264ENC_HANDLE         *pH264Enc = (EXYNOS_H264ENC_HANDLE *)((EXYNOS_OMX_VIDEOENC_COMPONENT *)pExynosComponent->hComponentHandle)->hCodecHandle;
     void                          *hMFCHandle = pH264Enc->hMFCH264Handle.hMFCHandle;
-    EXYNOS_OMX_BASEPORT           *pExynosInputPort = &pExynosComponent->pExynosPort[INPUT_PORT_INDEX];
-    EXYNOS_OMX_BASEPORT           *pExynosOutputPort = &pExynosComponent->pExynosPort[OUTPUT_PORT_INDEX];
-    int i, nOutbufs;
+    int i;
 
-    ExynosVideoEncOps       *pEncOps    = pH264Enc->hMFCH264Handle.pEncOps;
     ExynosVideoEncBufferOps *pInbufOps  = pH264Enc->hMFCH264Handle.pInbufOps;
     ExynosVideoEncBufferOps *pOutbufOps = pH264Enc->hMFCH264Handle.pOutbufOps;
 
@@ -884,7 +864,6 @@ OMX_ERRORTYPE H264CodecEnqueueAllBuffer(OMX_COMPONENTTYPE *pOMXComponent, OMX_U3
         pInbufOps->Clear_Queue(hMFCHandle);
     } else if ((nPortIndex == OUTPUT_PORT_INDEX) &&
                (pH264Enc->bDestinationStart == OMX_TRUE)) {
-        OMX_U32 dataLen[2] = {0, 0};
         ExynosVideoBuffer *pBuffer = NULL;
 
         Exynos_CodecBufferReset(pExynosComponent, OUTPUT_PORT_INDEX);
@@ -909,23 +888,10 @@ OMX_ERRORTYPE H264CodecSrcSetup(OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_OMX_DAT
 {
     OMX_ERRORTYPE                  ret = OMX_ErrorNone;
     EXYNOS_OMX_BASECOMPONENT      *pExynosComponent = (EXYNOS_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-    EXYNOS_OMX_VIDEOENC_COMPONENT *pVideoEnc = (EXYNOS_OMX_VIDEOENC_COMPONENT *)pExynosComponent->hComponentHandle;
     EXYNOS_H264ENC_HANDLE         *pH264Enc = (EXYNOS_H264ENC_HANDLE *)((EXYNOS_OMX_VIDEOENC_COMPONENT *)pExynosComponent->hComponentHandle)->hCodecHandle;
-    EXYNOS_MFC_H264ENC_HANDLE     *pMFCH264Handle    = &pH264Enc->hMFCH264Handle;
-    void                          *hMFCHandle = pMFCH264Handle->hMFCHandle;
     EXYNOS_OMX_BASEPORT           *pExynosInputPort = &pExynosComponent->pExynosPort[INPUT_PORT_INDEX];
-    EXYNOS_OMX_BASEPORT           *pExynosOutputPort = &pExynosComponent->pExynosPort[OUTPUT_PORT_INDEX];
     OMX_U32                        oneFrameSize = pSrcInputData->dataLen;
 
-    ExynosVideoEncOps       *pEncOps    = pH264Enc->hMFCH264Handle.pEncOps;
-    ExynosVideoEncBufferOps *pInbufOps  = pH264Enc->hMFCH264Handle.pInbufOps;
-    ExynosVideoEncBufferOps *pOutbufOps = pH264Enc->hMFCH264Handle.pOutbufOps;
-    ExynosVideoEncParam     *pEncParam    = NULL;
-
-    ExynosVideoGeometry      bufferConf;
-    OMX_U32                  inputBufferNumber = 0;
-    int i, nOutbufs;
-
     FunctionIn();
 
     if ((oneFrameSize <= 0) && (pSrcInputData->nFlags & OMX_BUFFERFLAG_EOS)) {
@@ -969,14 +935,11 @@ OMX_ERRORTYPE H264CodecDstSetup(OMX_COMPONENTTYPE *pOMXComponent)
     EXYNOS_H264ENC_HANDLE         *pH264Enc = (EXYNOS_H264ENC_HANDLE *)((EXYNOS_OMX_VIDEOENC_COMPONENT *)pExynosComponent->hComponentHandle)->hCodecHandle;
     EXYNOS_MFC_H264ENC_HANDLE     *pMFCH264Handle    = &pH264Enc->hMFCH264Handle;
     void                          *hMFCHandle = pMFCH264Handle->hMFCHandle;
-    EXYNOS_OMX_BASEPORT           *pExynosInputPort = &pExynosComponent->pExynosPort[INPUT_PORT_INDEX];
     EXYNOS_OMX_BASEPORT           *pExynosOutputPort = &pExynosComponent->pExynosPort[OUTPUT_PORT_INDEX];
 
-    ExynosVideoEncOps       *pEncOps    = pH264Enc->hMFCH264Handle.pEncOps;
-    ExynosVideoEncBufferOps *pInbufOps  = pH264Enc->hMFCH264Handle.pInbufOps;
     ExynosVideoEncBufferOps *pOutbufOps = pH264Enc->hMFCH264Handle.pOutbufOps;
     ExynosVideoGeometry      bufferConf;
-    int i, nOutbufs, nPlanes, OutBufferSize;
+    int i,nPlanes, OutBufferSize;
 
     FunctionIn();
 
@@ -1060,6 +1023,11 @@ OMX_ERRORTYPE H264CodecDstSetup(OMX_COMPONENTTYPE *pOMXComponent)
 
                 pVideoEnc->pMFCEncOutputBuffer[i] = (CODEC_ENC_BUFFER *)Exynos_OSAL_Malloc(sizeof(CODEC_ENC_BUFFER));
 
+                if (!pVideoEnc->pMFCEncOutputBuffer[i]) {
+                    ret = OMX_ErrorInsufficientResources;
+                    goto ALLOC_FAILED;
+                }
+
                 if (pOutbufOps->Get_Buffer) {
                      if (pOutbufOps->Get_Buffer(pH264Enc->hMFCH264Handle.hMFCHandle, i, &pBuffer) != VIDEO_ERROR_NONE) {
                          Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "Failed to get Output buffer info");
@@ -1112,6 +1080,16 @@ EXIT:
     FunctionOut();
 
     return ret;
+
+ALLOC_FAILED:
+    for (i = 0; i < MFC_OUTPUT_BUFFER_NUM_MAX; i++) {
+        if (pVideoEnc->pMFCEncOutputBuffer[i])
+            Exynos_OSAL_Free(pVideoEnc->pMFCEncOutputBuffer[i]);
+    }
+    Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "Failed to allocate buffers");
+    FunctionOut();
+
+    return ret;
 }
 
 OMX_ERRORTYPE Exynos_H264Enc_GetParameter(
@@ -1168,7 +1146,7 @@ OMX_ERRORTYPE Exynos_H264Enc_GetParameter(
         Exynos_OSAL_Memcpy(pDstAVCComponent, pSrcAVCComponent, sizeof(OMX_VIDEO_PARAM_AVCTYPE));
     }
         break;
-               
+
     case  OMX_IndexParamVideoSliceFMO:
     {
         OMX_VIDEO_PARAM_AVCSLICEFMO *pDstSliceFmo = (OMX_VIDEO_PARAM_AVCSLICEFMO *)pComponentParameterStructure;
@@ -1312,7 +1290,7 @@ OMX_ERRORTYPE Exynos_H264Enc_SetParameter(
         goto EXIT;
     }
 
-    switch (nIndex) {
+    switch ((int)nIndex) {
     case OMX_IndexParamVideoAvc:
     {
         OMX_VIDEO_PARAM_AVCTYPE *pDstAVCComponent = NULL;
@@ -1428,7 +1406,7 @@ OMX_ERRORTYPE Exynos_H264Enc_SetParameter(
     }
         break;
 #endif
-#ifdef SLP_PLATFORM
+#ifdef TIZEN_FEATURE_E3250
     case OMX_IndexParamSharedOutputFD:
     {
         EXYNOS_OMX_VIDEOENC_COMPONENT *pVideoEnc = NULL;
@@ -1542,10 +1520,9 @@ OMX_ERRORTYPE Exynos_H264Enc_SetConfig(
     pVideoEnc = (EXYNOS_OMX_VIDEOENC_COMPONENT *)pExynosComponent->hComponentHandle;
     pH264Enc = (EXYNOS_H264ENC_HANDLE *)((EXYNOS_OMX_VIDEOENC_COMPONENT *)pExynosComponent->hComponentHandle)->hCodecHandle;
 
-    switch (nIndex) {
+    switch ((int)nIndex) {
     case OMX_IndexConfigVideoIntraPeriod:
     {
-        EXYNOS_OMX_VIDEOENC_COMPONENT *pVEncBase = ((EXYNOS_OMX_VIDEOENC_COMPONENT *)pExynosComponent->hComponentHandle);
         OMX_U32 nPFrames = (*((OMX_U32 *)pComponentConfigStructure)) - 1;
 
         pH264Enc->AVCComponent[OUTPUT_PORT_INDEX].nPFrames = nPFrames;
@@ -1621,7 +1598,7 @@ OMX_ERRORTYPE Exynos_H264Enc_GetExtensionIndex(
     if (Exynos_OSAL_Strcmp(cParameterName, EXYNOS_INDEX_CONFIG_VIDEO_INTRAPERIOD) == 0) {
         *pIndexType = OMX_IndexConfigVideoIntraPeriod;
         ret = OMX_ErrorNone;
-#ifdef SLP_PLATFORM
+#ifdef TIZEN_FEATURE_E3250
     } else if (Exynos_OSAL_Strcmp(cParameterName, EXYNOS_INDEX_PARAM_ENC_SHARED_OUTPUT_FD) == 0) {
         *pIndexType = (OMX_INDEXTYPE) OMX_IndexParamSharedOutputFD;
         goto EXIT;
@@ -1644,8 +1621,6 @@ EXIT:
 OMX_ERRORTYPE Exynos_H264Enc_ComponentRoleEnum(OMX_HANDLETYPE hComponent, OMX_U8 *cRole, OMX_U32 nIndex)
 {
     OMX_ERRORTYPE               ret              = OMX_ErrorNone;
-    OMX_COMPONENTTYPE          *pOMXComponent    = NULL;
-    EXYNOS_OMX_BASECOMPONENT   *pExynosComponent = NULL;
 
     FunctionIn();
 
@@ -1675,19 +1650,13 @@ OMX_ERRORTYPE Exynos_H264Enc_Init(OMX_COMPONENTTYPE *pOMXComponent)
     EXYNOS_OMX_BASEPORT      *pExynosInputPort = &pExynosComponent->pExynosPort[INPUT_PORT_INDEX];
     EXYNOS_OMX_BASEPORT      *pExynosOutputPort = &pExynosComponent->pExynosPort[OUTPUT_PORT_INDEX];
     EXYNOS_H264ENC_HANDLE    *pH264Enc = (EXYNOS_H264ENC_HANDLE *)((EXYNOS_OMX_VIDEOENC_COMPONENT *)pExynosComponent->hComponentHandle)->hCodecHandle;;
-    EXYNOS_MFC_H264ENC_HANDLE     *pMFCH264Handle    = &pH264Enc->hMFCH264Handle;
-    OMX_PTR                   hMFCHandle = pH264Enc->hMFCH264Handle.hMFCHandle;
     OMX_COLOR_FORMATTYPE      eColorFormat;
 
-    ExynosVideoEncOps       *pEncOps    = NULL;
-    ExynosVideoEncBufferOps *pInbufOps  = NULL;
-    ExynosVideoEncBufferOps *pOutbufOps = NULL;
-
-    CSC_METHOD csc_method = CSC_METHOD_SW;
     int i = 0;
 
     FunctionIn();
 
+    CSC_METHOD csc_method = CSC_METHOD_SW;
     pH264Enc->hMFCH264Handle.bConfiguredMFCSrc = OMX_FALSE;
     pH264Enc->hMFCH264Handle.bConfiguredMFCDst = OMX_FALSE;
     pVideoEnc->bFirstOutput = OMX_FALSE;
@@ -1696,7 +1665,7 @@ OMX_ERRORTYPE Exynos_H264Enc_Init(OMX_COMPONENTTYPE *pOMXComponent)
 
     eColorFormat = pExynosInputPort->portDefinition.format.video.eColorFormat;
     if (pExynosInputPort->bStoreMetaData == OMX_TRUE) {
-#ifndef SLP_PLATFORM /* we do not use OMX_COLOR_FormatAndroidOpaque */
+#ifndef TIZEN_FEATURE_E3250 /* we do not use OMX_COLOR_FormatAndroidOpaque */
         if (eColorFormat == OMX_COLOR_FormatAndroidOpaque) {
             pExynosInputPort->bufferProcessType = BUFFER_COPY;
         } else {
@@ -1704,15 +1673,15 @@ OMX_ERRORTYPE Exynos_H264Enc_Init(OMX_COMPONENTTYPE *pOMXComponent)
         }
 #endif
     } else {
-        if (eColorFormat == OMX_SEC_COLOR_FormatNV12L_DmaBuf_Fd ||
-            eColorFormat == OMX_SEC_COLOR_FormatNV12T_DmaBuf_Fd) {
+        if (eColorFormat == (OMX_COLOR_FORMATTYPE)OMX_SEC_COLOR_FormatNV12L_DmaBuf_Fd ||
+            eColorFormat == (OMX_COLOR_FORMATTYPE)OMX_SEC_COLOR_FormatNV12T_DmaBuf_Fd) {
             pExynosInputPort->bufferProcessType = BUFFER_SHARE;
         } else {
             pExynosInputPort->bufferProcessType = BUFFER_COPY;
         }
     }
 
-#ifdef SLP_PLATFORM
+#ifdef TIZEN_FEATURE_E3250
     if (pVideoEnc->bSharedOutputFD == OMX_TRUE) {
         pExynosOutputPort->bufferProcessType = BUFFER_SHARE;
     } else {
@@ -1726,10 +1695,6 @@ OMX_ERRORTYPE Exynos_H264Enc_Init(OMX_COMPONENTTYPE *pOMXComponent)
         goto EXIT;
     }
 
-    pEncOps    = pH264Enc->hMFCH264Handle.pEncOps;
-    pInbufOps  = pH264Enc->hMFCH264Handle.pInbufOps;
-    pOutbufOps = pH264Enc->hMFCH264Handle.pOutbufOps;
-
     if (pExynosInputPort->bufferProcessType & BUFFER_COPY) {
         Exynos_OSAL_SemaphoreCreate(&pExynosInputPort->codecSemID);
         Exynos_OSAL_QueueCreate(&pExynosInputPort->codecBufferQ, MAX_QUEUE_ELEMENTS);
@@ -1802,6 +1767,7 @@ OMX_ERRORTYPE Exynos_H264Enc_Init(OMX_COMPONENTTYPE *pOMXComponent)
     pExynosComponent->getAllDelayBuffer = OMX_FALSE;
 
 #if 0//defined(USE_CSC_GSCALER)
+
     csc_method = CSC_METHOD_HW; //in case of Use ION buffer.
 #endif
     pVideoEnc->csc_handle = csc_init(csc_method);
@@ -1826,13 +1792,8 @@ OMX_ERRORTYPE Exynos_H264Enc_Terminate(OMX_COMPONENTTYPE *pOMXComponent)
     EXYNOS_OMX_BASEPORT      *pExynosInputPort = &pExynosComponent->pExynosPort[INPUT_PORT_INDEX];
     EXYNOS_OMX_BASEPORT      *pExynosOutputPort = &pExynosComponent->pExynosPort[OUTPUT_PORT_INDEX];
     EXYNOS_H264ENC_HANDLE    *pH264Enc = (EXYNOS_H264ENC_HANDLE *)((EXYNOS_OMX_VIDEOENC_COMPONENT *)pExynosComponent->hComponentHandle)->hCodecHandle;
-    OMX_PTR                hMFCHandle = pH264Enc->hMFCH264Handle.hMFCHandle;
 
-    ExynosVideoEncOps       *pEncOps    = pH264Enc->hMFCH264Handle.pEncOps;
-    ExynosVideoEncBufferOps *pInbufOps  = pH264Enc->hMFCH264Handle.pInbufOps;
-    ExynosVideoEncBufferOps *pOutbufOps = pH264Enc->hMFCH264Handle.pOutbufOps;
-
-    int i = 0, plane = 0;
+    int i = 0;
 
     FunctionIn();
 
@@ -1851,7 +1812,7 @@ OMX_ERRORTYPE Exynos_H264Enc_Terminate(OMX_COMPONENTTYPE *pOMXComponent)
     if (pExynosOutputPort->bufferProcessType & BUFFER_COPY) {
         for (i = 0; i < MFC_OUTPUT_BUFFER_NUM_MAX; i++) {
             if (pVideoEnc->pMFCEncOutputBuffer[i] != NULL) {
-#ifndef SLP_PLATFORM /* do not use ion */
+#ifndef TIZEN_FEATURE_E3250 /* do not use ion */
                 if (pVideoEnc->pMFCEncOutputBuffer[i]->pVirAddr[0] != NULL)
                     Exynos_OSAL_SharedMemory_Free(pVideoEnc->hSharedMemory, pVideoEnc->pMFCEncOutputBuffer[i]->pVirAddr[0]);
 #endif
@@ -1873,7 +1834,7 @@ OMX_ERRORTYPE Exynos_H264Enc_Terminate(OMX_COMPONENTTYPE *pOMXComponent)
         if (pH264Enc->hMFCH264Handle.bShareableBuf == OMX_TRUE) {
             for (i = 0; i < MFC_INPUT_BUFFER_NUM_MAX; i++) {
                 if (pVideoEnc->pMFCEncInputBuffer[i] != NULL) {
-#ifndef SLP_PLATFORM /* do not use ion */
+#ifndef TIZEN_FEATURE_E3250 /* do not use ion */
                     for (plane = 0; plane < MFC_INPUT_BUFFER_PLANE; plane++) {
                         if (pVideoEnc->pMFCEncInputBuffer[i]->pVirAddr[plane] != NULL)
                             Exynos_OSAL_SharedMemory_Free(pVideoEnc->hSharedMemory, pVideoEnc->pMFCEncInputBuffer[i]->pVirAddr[plane]);
@@ -1895,7 +1856,6 @@ OMX_ERRORTYPE Exynos_H264Enc_Terminate(OMX_COMPONENTTYPE *pOMXComponent)
     }
     H264CodecClose(pH264Enc);
 
-EXIT:
     FunctionOut();
 
     return ret;
@@ -1909,13 +1869,10 @@ OMX_ERRORTYPE Exynos_H264Enc_SrcIn(OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_OMX_
     EXYNOS_H264ENC_HANDLE         *pH264Enc = (EXYNOS_H264ENC_HANDLE *)((EXYNOS_OMX_VIDEOENC_COMPONENT *)pExynosComponent->hComponentHandle)->hCodecHandle;
     void                          *hMFCHandle = pH264Enc->hMFCH264Handle.hMFCHandle;
     EXYNOS_OMX_BASEPORT *pExynosInputPort = &pExynosComponent->pExynosPort[INPUT_PORT_INDEX];
-    EXYNOS_OMX_BASEPORT *pExynosOutputPort = &pExynosComponent->pExynosPort[OUTPUT_PORT_INDEX];
     OMX_U32  oneFrameSize = pSrcInputData->dataLen;
     ExynosVideoEncOps       *pEncOps    = pH264Enc->hMFCH264Handle.pEncOps;
     ExynosVideoEncBufferOps *pInbufOps  = pH264Enc->hMFCH264Handle.pInbufOps;
-    ExynosVideoEncBufferOps *pOutbufOps = pH264Enc->hMFCH264Handle.pOutbufOps;
     ExynosVideoErrorType codecReturn = VIDEO_ERROR_NONE;
-    int i;
 
     FunctionIn();
 
@@ -1927,15 +1884,17 @@ OMX_ERRORTYPE Exynos_H264Enc_SrcIn(OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_OMX_
     }
     if (pH264Enc->hMFCH264Handle.bConfiguredMFCDst == OMX_FALSE) {
         ret = H264CodecDstSetup(pOMXComponent);
+
+        if (ret != OMX_ErrorNone)
+            goto EXIT;
     }
     if (pVideoEnc->configChange == OMX_TRUE) {
         Change_H264Enc_Param(pExynosComponent);
         pVideoEnc->configChange = OMX_FALSE;
     }
 
-    if ((pSrcInputData->dataLen >= 0) ||
-        ((pSrcInputData->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS)) {
-        OMX_U32 pMFCYUVDataSize[MFC_INPUT_BUFFER_PLANE]  = {NULL, NULL};
+    if ((pSrcInputData->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS) {
+        OMX_U32 pMFCYUVDataSize[MFC_INPUT_BUFFER_PLANE]  = {0, };
         ExynosVideoPlane planes[MFC_INPUT_BUFFER_PLANE];
         int plane;
 
@@ -2037,7 +1996,6 @@ OMX_ERRORTYPE Exynos_H264Enc_SrcOut(OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_OMX
     EXYNOS_H264ENC_HANDLE         *pH264Enc = (EXYNOS_H264ENC_HANDLE *)((EXYNOS_OMX_VIDEOENC_COMPONENT *)pExynosComponent->hComponentHandle)->hCodecHandle;
     void                          *hMFCHandle = pH264Enc->hMFCH264Handle.hMFCHandle;
     EXYNOS_OMX_BASEPORT     *pExynosInputPort = &pExynosComponent->pExynosPort[INPUT_PORT_INDEX];
-    ExynosVideoEncOps       *pEncOps    = pH264Enc->hMFCH264Handle.pEncOps;
     ExynosVideoEncBufferOps *pInbufOps  = pH264Enc->hMFCH264Handle.pInbufOps;
     ExynosVideoBuffer       *pVideoBuffer;
 
@@ -2069,12 +2027,12 @@ OMX_ERRORTYPE Exynos_H264Enc_SrcOut(OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_OMX
         if (pExynosInputPort->bufferProcessType & BUFFER_COPY) {
             int i = 0;
             while (pSrcOutputData->buffer.multiPlaneBuffer.dataBuffer[0] != pVideoEnc->pMFCEncInputBuffer[i]->pVirAddr[0]) {
+                i++;
                 if (i >= MFC_INPUT_BUFFER_NUM_MAX) {
                     Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "%s: %d: Failed - Lost buffer", __FUNCTION__, __LINE__);
                     ret = (OMX_ERRORTYPE)OMX_ErrorCodecEncode;
                     goto EXIT;
                 }
-                i++;
             }
             pVideoEnc->pMFCEncInputBuffer[i]->dataSize = 0;
             pSrcOutputData->pPrivate = pVideoEnc->pMFCEncInputBuffer[i];
@@ -2096,10 +2054,8 @@ OMX_ERRORTYPE Exynos_H264Enc_DstIn(OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_OMX_
 {
     OMX_ERRORTYPE                  ret = OMX_ErrorNone;
     EXYNOS_OMX_BASECOMPONENT      *pExynosComponent = (EXYNOS_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-    EXYNOS_OMX_VIDEOENC_COMPONENT *pVideoEnc = (EXYNOS_OMX_VIDEOENC_COMPONENT *)pExynosComponent->hComponentHandle;
     EXYNOS_H264ENC_HANDLE         *pH264Enc = (EXYNOS_H264ENC_HANDLE *)((EXYNOS_OMX_VIDEOENC_COMPONENT *)pExynosComponent->hComponentHandle)->hCodecHandle;
     void                          *hMFCHandle = pH264Enc->hMFCH264Handle.hMFCHandle;
-    ExynosVideoEncOps       *pEncOps    = pH264Enc->hMFCH264Handle.pEncOps;
     ExynosVideoEncBufferOps *pOutbufOps = pH264Enc->hMFCH264Handle.pOutbufOps;
     OMX_U32 dataLen = 0;
     ExynosVideoErrorType codecReturn = VIDEO_ERROR_NONE;
@@ -2141,7 +2097,6 @@ OMX_ERRORTYPE Exynos_H264Enc_DstOut(OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_OMX
     ExynosVideoEncBufferOps *pOutbufOps = pH264Enc->hMFCH264Handle.pOutbufOps;
     ExynosVideoBuffer       *pVideoBuffer;
     ExynosVideoFrameStatusType displayStatus = VIDEO_FRAME_STATUS_UNKNOWN;
-    ExynosVideoGeometry bufferGeometry;
     OMX_S32 indexTimestamp = 0;
 
     FunctionIn();
@@ -2226,7 +2181,6 @@ OMX_ERRORTYPE Exynos_H264Enc_srcInputBufferProcess(OMX_COMPONENTTYPE *pOMXCompon
 {
     OMX_ERRORTYPE             ret = OMX_ErrorNone;
     EXYNOS_OMX_BASECOMPONENT *pExynosComponent = (EXYNOS_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-    EXYNOS_H264ENC_HANDLE    *pH264Enc = (EXYNOS_H264ENC_HANDLE *)((EXYNOS_OMX_VIDEOENC_COMPONENT *)pExynosComponent->hComponentHandle)->hCodecHandle;
     EXYNOS_OMX_BASEPORT      *pExynosInputPort = &pExynosComponent->pExynosPort[INPUT_PORT_INDEX];
 
     FunctionIn();
@@ -2460,7 +2414,7 @@ OSCL_EXPORT_REF OMX_ERRORTYPE Exynos_OMX_ComponentInit(
     pExynosPort->portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingUnused;
     Exynos_OSAL_Memset(pExynosPort->portDefinition.format.video.cMIMEType, 0, MAX_OMX_MIMETYPE_SIZE);
     Exynos_OSAL_Strcpy(pExynosPort->portDefinition.format.video.cMIMEType, "raw/video");
-#ifdef SLP_PLATFORM
+#ifdef TIZEN_FEATURE_E3250
     pExynosPort->portDefinition.format.video.eColorFormat = OMX_SEC_COLOR_FormatNV12L_DmaBuf_Fd;
 #else
     pExynosPort->portDefinition.format.video.eColorFormat = OMX_COLOR_FormatYUV420SemiPlanar;
@@ -2517,7 +2471,7 @@ OSCL_EXPORT_REF OMX_ERRORTYPE Exynos_OMX_ComponentInit(
     pVideoEnc->exynos_codec_getCodecInputPrivateData  = &GetCodecInputPrivateData;
     pVideoEnc->exynos_codec_getCodecOutputPrivateData = &GetCodecOutputPrivateData;
 
-#ifndef SLP_PLATFORM /* do not use ion */
+#ifndef TIZEN_FEATURE_E3250 /* do not use ion */
     pVideoEnc->hSharedMemory = Exynos_OSAL_SharedMemory_Open();
     if (pVideoEnc->hSharedMemory == NULL) {
         Exynos_OSAL_Free(pH264Enc);
@@ -2554,7 +2508,7 @@ OMX_ERRORTYPE Exynos_OMX_ComponentDeinit(OMX_HANDLETYPE hComponent)
     pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
     pExynosComponent = (EXYNOS_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
     pVideoEnc = (EXYNOS_OMX_VIDEOENC_COMPONENT *)pExynosComponent->hComponentHandle;
-#ifndef SLP_PLATFORM /* do not use ion */
+#ifndef TIZEN_FEATURE_E3250 /* do not use ion */
     Exynos_OSAL_SharedMemory_Close(pVideoEnc->hSharedMemory);
 #endif
     Exynos_OSAL_Free(pExynosComponent->componentName);