fixed coverity issues
[platform/adaptation/ap_samsung/libomxil-e3250-v4l2.git] / openmax / osal / Exynos_OSAL_Platform_Specific.c
index 004049a..cd2f669 100755 (executable)
@@ -28,6 +28,8 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
+#include <mm_types.h>
 
 #include "Exynos_OSAL_Semaphore.h"
 #include "Exynos_OMX_Baseport.h"
@@ -104,9 +106,9 @@ OMX_ERRORTYPE Exynos_OSAL_LockPBHandle(
     vplanes[2].addr = vaddr[2];
 
     Exynos_OSAL_Log(EXYNOS_LOG_TRACE, "%s: buffer locked: 0x%x", __func__, *vaddr);
-#endif
 
 EXIT:
+#endif
     FunctionOut();
 
     return ret;
@@ -117,7 +119,7 @@ OMX_ERRORTYPE Exynos_OSAL_UnlockPBHandle(OMX_IN OMX_U32 handle)
     FunctionIn();
 
     OMX_ERRORTYPE ret = OMX_ErrorNone;
-#ifdef SLP_PLATFORM
+#ifdef TIZEN_FEATURE_E3250
 #else
     GraphicBufferMapper &mapper = GraphicBufferMapper::get();
     buffer_handle_t bufferHandle = (buffer_handle_t) handle;
@@ -131,9 +133,10 @@ OMX_ERRORTYPE Exynos_OSAL_UnlockPBHandle(OMX_IN OMX_U32 handle)
     }
 
     Exynos_OSAL_Log(EXYNOS_LOG_TRACE, "%s: buffer unlocked: 0x%x", __func__, handle);
-#endif
 
 EXIT:
+#endif
+
     FunctionOut();
 
     return ret;
@@ -150,25 +153,25 @@ OMX_ERRORTYPE Exynos_OSAL_LockPB(
     FunctionIn();
 
     OMX_ERRORTYPE ret = OMX_ErrorNone;
-#ifdef SLP_PLATFORM
+#ifdef TIZEN_FEATURE_E3250
 
     ExynosVideoPlane *vplanes = (ExynosVideoPlane *) planes;
-    SCMN_IMGB *buffer = (SCMN_IMGB *) pBuffer;
+    MMVideoBuffer *buffer = (MMVideoBuffer *) pBuffer;
 
 
-    vplanes[0].fd = buffer->fd[0];
+    vplanes[0].fd = buffer->handle.dmabuf_fd[0];
     vplanes[0].offset = 0;
-    vplanes[1].fd = buffer->fd[1];
+    vplanes[1].fd = buffer->handle.dmabuf_fd[1];
     vplanes[1].offset = 0; //priv_hnd->uoffset;
     vplanes[2].fd = 0; //priv_hnd->v_fd;
     vplanes[2].offset = 0; //priv_hnd->voffset;
 
-    vplanes[0].addr = buffer->a[0]; //vaddr[0];
-    vplanes[1].addr = buffer->a[1]; //vaddr[1];
+    vplanes[0].addr = buffer->data[0]; //vaddr[0];
+    vplanes[1].addr = buffer->data[1]; //vaddr[1];
     vplanes[2].addr = NULL; //vaddr[2];
 
-    Exynos_OSAL_Log(EXYNOS_LOG_TRACE, "Exynos_OSAL_LockPB:fd[0](%d)  fd[1](%d)  a[0](%p)  a[1](%p)", 
-        buffer->fd[0], buffer->fd[1], buffer->a[0], buffer->a[1]);
+    Exynos_OSAL_Log(EXYNOS_LOG_TRACE, "Exynos_OSAL_LockPB:fd[0](%d)  fd[1](%d)  a[0](%p)  a[1](%p)",
+        buffer->handle.dmabuf_fd[0], buffer->handle.dmabuf_fd[1], buffer->data[0], buffer->data[1]);
 #else
     android_native_buffer_t *pANB = (android_native_buffer_t *) pBuffer;
 
@@ -176,13 +179,12 @@ OMX_ERRORTYPE Exynos_OSAL_LockPB(
     *pStride = pANB->stride;
 #endif
 
-EXIT:
     FunctionOut();
 
     return ret;
 }
 
-#ifdef SLP_PLATFORM
+#ifdef TIZEN_FEATURE_E3250
 OMX_ERRORTYPE Exynos_OSAL_UnlockPB(OMX_IN OMX_PTR pBuffer, EXYNOS_OMX_DATA *pData, EXYNOS_OMX_BASEPORT *pExynosPort,EXYNOS_OMX_BASEPORT *pExynosInPort)
 #else
 OMX_ERRORTYPE Exynos_OSAL_UnlockPB(OMX_IN OMX_PTR pBuffer, EXYNOS_OMX_DATA *pData)
@@ -191,43 +193,44 @@ OMX_ERRORTYPE Exynos_OSAL_UnlockPB(OMX_IN OMX_PTR pBuffer, EXYNOS_OMX_DATA *pDat
     FunctionIn();
 
     OMX_ERRORTYPE ret = OMX_ErrorNone;
-#ifdef SLP_PLATFORM
-    SCMN_IMGB *pSlpOutBuf = NULL;
+#ifdef TIZEN_FEATURE_E3250
+    MMVideoBuffer *pSlpOutBuf = NULL;
     DECODE_CODEC_EXTRA_BUFFERINFO *pBufferInfo = NULL;
 
-    pSlpOutBuf = (SCMN_IMGB *)pBuffer;
+    pSlpOutBuf = (MMVideoBuffer *)pBuffer;
     if (pSlpOutBuf == NULL) {
       Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "pBuffer is NULL!");
       ret = OMX_ErrorInsufficientResources;
       goto EXIT;
     }
-    memset(pSlpOutBuf, 0, sizeof(SCMN_IMGB));
+    memset(pSlpOutBuf, 0, sizeof(MMVideoBuffer));
 
     pBufferInfo = (DECODE_CODEC_EXTRA_BUFFERINFO *)pData->extInfo;
 
     if (pExynosPort->cropRectangle.nWidth != 0 && pExynosPort->cropRectangle.nHeight != 0) {
         /* modify for h264 trim */
         Exynos_OSAL_Log(EXYNOS_LOG_TRACE, "this has cropRectangle(h264).crop.nWidth = %d, crop.nHeight = %d",
-            pExynosPort->cropRectangle.nWidth, pExynosPort->cropRectangle.nHeight);
-        pSlpOutBuf->w[0] = pExynosPort->cropRectangle.nWidth;
-        pSlpOutBuf->w[1] = pExynosPort->cropRectangle.nWidth;
-        pSlpOutBuf->h[0] = pExynosPort->cropRectangle.nHeight;
-        pSlpOutBuf->h[1] = (pExynosPort->cropRectangle.nHeight/2);
-
-        pSlpOutBuf->s[0] = ALIGN(pExynosPort->cropRectangle.nWidth, S5P_FIMV_NV12MT_HALIGN); /* need to check. stride */
-        pSlpOutBuf->s[1] = ALIGN(pExynosPort->cropRectangle.nWidth, S5P_FIMV_NV12MT_HALIGN);
-        pSlpOutBuf->e[0] = ALIGN(pExynosPort->cropRectangle.nHeight, S5P_FIMV_NV12MT_VALIGN); /* need to check. elevation */
-        pSlpOutBuf->e[1] = ALIGN((pExynosPort->cropRectangle.nHeight/2), S5P_FIMV_NV12MT_VALIGN);
+            pExynosPort->cropRectangle.nWidth, pExynosPort->cropRectangle.nWidth);
+        pSlpOutBuf->width[0] = pExynosPort->cropRectangle.nWidth;
+        pSlpOutBuf->width[1] = pExynosPort->cropRectangle.nWidth;
+        pSlpOutBuf->height[0] = pExynosPort->cropRectangle.nHeight;
+        pSlpOutBuf->height[1] = pExynosPort->cropRectangle.nHeight/2;
+
+
+        pSlpOutBuf->stride_width[0] = ALIGN(pExynosPort->cropRectangle.nWidth, S5P_FIMV_NV12MT_HALIGN); /* need to check. stride */
+        pSlpOutBuf->stride_width[1] = ALIGN(pExynosPort->cropRectangle.nWidth, S5P_FIMV_NV12MT_HALIGN);
+        pSlpOutBuf->stride_height[0] = ALIGN(pExynosPort->cropRectangle.nHeight, S5P_FIMV_NV12MT_VALIGN); /* need to check. elevation */
+        pSlpOutBuf->stride_height[1] = ALIGN((pExynosPort->cropRectangle.nHeight/2), S5P_FIMV_NV12MT_VALIGN);
     } else {
-        pSlpOutBuf->w[0] = pBufferInfo->imageWidth;
-        pSlpOutBuf->w[1] = pBufferInfo->imageWidth;
-        pSlpOutBuf->h[0] = pBufferInfo->imageHeight;
-        pSlpOutBuf->h[1] = (pBufferInfo->imageHeight/2);
+        pSlpOutBuf->width[0] = pBufferInfo->imageWidth;
+        pSlpOutBuf->width[1] = pBufferInfo->imageWidth;
+        pSlpOutBuf->height[0] = pBufferInfo->imageHeight;
+        pSlpOutBuf->height[1] = (pBufferInfo->imageHeight/2);
 
-        pSlpOutBuf->s[0] = ALIGN(pBufferInfo->imageWidth, S5P_FIMV_NV12MT_HALIGN); /* need to check. stride */
-        pSlpOutBuf->s[1] = ALIGN(pBufferInfo->imageWidth, S5P_FIMV_NV12MT_HALIGN);
-        pSlpOutBuf->e[0] = ALIGN(pBufferInfo->imageHeight, S5P_FIMV_NV12MT_VALIGN); /* need to check. elevation */
-        pSlpOutBuf->e[1] = ALIGN((pBufferInfo->imageHeight/2), S5P_FIMV_NV12MT_VALIGN);
+        pSlpOutBuf->stride_width[0] = ALIGN(pBufferInfo->imageWidth, S5P_FIMV_NV12MT_HALIGN); /* need to check. stride */
+        pSlpOutBuf->stride_width[1] = ALIGN(pBufferInfo->imageWidth, S5P_FIMV_NV12MT_HALIGN);
+        pSlpOutBuf->stride_height[0] = ALIGN(pBufferInfo->imageHeight, S5P_FIMV_NV12MT_VALIGN); /* need to check. elevation */
+        pSlpOutBuf->stride_height[1] = ALIGN((pBufferInfo->imageHeight/2), S5P_FIMV_NV12MT_VALIGN);
     }
 
 
@@ -238,30 +241,35 @@ OMX_ERRORTYPE Exynos_OSAL_UnlockPB(OMX_IN OMX_PTR pBuffer, EXYNOS_OMX_DATA *pDat
         pSlpOutBuf->a[1] = 0;
     } else {
 */
-        pSlpOutBuf->a[0] = pData->buffer.multiPlaneBuffer.dataBuffer[0];
-        pSlpOutBuf->a[1] = pData->buffer.multiPlaneBuffer.dataBuffer[1];
+        pSlpOutBuf->data[0] = pData->buffer.multiPlaneBuffer.dataBuffer[0];
+        pSlpOutBuf->data[1] = pData->buffer.multiPlaneBuffer.dataBuffer[1];
 //    }
-    pSlpOutBuf->a[2] = 0; /* omx do not use this plane */
+    pSlpOutBuf->data[2] = 0; /* omx do not use this plane */
+
+    pSlpOutBuf->handle.dmabuf_fd[0] = pData->buffer.multiPlaneBuffer.fd[0];
+    pSlpOutBuf->handle.dmabuf_fd[1] = pData->buffer.multiPlaneBuffer.fd[1];
+    pSlpOutBuf->handle.dmabuf_fd[2] = 0;
 
-    pSlpOutBuf->fd[0] = pData->buffer.multiPlaneBuffer.fd[0];
-    pSlpOutBuf->fd[1] = pData->buffer.multiPlaneBuffer.fd[1];
-    pSlpOutBuf->fd[2] = 0;
+    pSlpOutBuf->handle.bo[0] = pData->buffer.multiPlaneBuffer.tbm_bo[0];
+    pSlpOutBuf->handle.bo[1] = pData->buffer.multiPlaneBuffer.tbm_bo[1];
+    pSlpOutBuf->handle.bo[2] = NULL;
 
     if(pExynosInPort->portDefinition.format.video.eCompressionFormat == OMX_VIDEO_CodingAVC)
     {
-        pSlpOutBuf->y_size = calc_plane(pBufferInfo->imageWidth,pBufferInfo->imageHeight);
-        pSlpOutBuf->uv_size = calc_plane(pBufferInfo->imageWidth,(pBufferInfo->imageHeight) / 2);
-        Exynos_OSAL_Log(EXYNOS_LOG_TRACE,"H264 foramt and y_size=%d, uv_size=%d",pSlpOutBuf->y_size,pSlpOutBuf->uv_size);
+        pSlpOutBuf->size[0] = calc_plane(pBufferInfo->imageWidth,pBufferInfo->imageHeight);
+        pSlpOutBuf->size[1] = calc_plane(pBufferInfo->imageWidth,(pBufferInfo->imageHeight) / 2);
+        Exynos_OSAL_Log(EXYNOS_LOG_TRACE,"H264 foramt and y_size=%d, uv_size=%d",pSlpOutBuf->size[0],pSlpOutBuf->size[1]);
     } else {
-        pSlpOutBuf->y_size= calc_yplane(pBufferInfo->imageWidth,pBufferInfo->imageHeight);
-        pSlpOutBuf->uv_size = calc_uvplane(pBufferInfo->imageWidth,(pBufferInfo->imageHeight) / 2);
-        Exynos_OSAL_Log(EXYNOS_LOG_TRACE,"foramt is %d, and y_size=%d, uv_size=%d",pExynosInPort->portDefinition.format.video.eCompressionFormat ,pSlpOutBuf->y_size,pSlpOutBuf->uv_size);
+        pSlpOutBuf->size[0]= calc_yplane(pBufferInfo->imageWidth,pBufferInfo->imageHeight);
+        pSlpOutBuf->size[1] = calc_uvplane(pBufferInfo->imageWidth,(pBufferInfo->imageHeight) / 2);
+        Exynos_OSAL_Log(EXYNOS_LOG_TRACE,"foramt is %d, and y_size=%d, uv_size=%d",pExynosInPort->portDefinition.format.video.eCompressionFormat ,pSlpOutBuf->size[0],pSlpOutBuf->size[1]);
     }
 
+    pSlpOutBuf->type = MM_VIDEO_BUFFER_TYPE_TBM_BO; /* use bo mode */
+    pSlpOutBuf->handle_num = 2;
+    pSlpOutBuf->plane_num = 2;
 
-    pSlpOutBuf->buf_share_method = 1; /* use fd mode */
-
-    Exynos_OSAL_Log(EXYNOS_LOG_TRACE, "fd (%d, %d, %d) received from MFC", pSlpOutBuf->fd[0], pSlpOutBuf->fd[1], pSlpOutBuf->fd[2]);
+    Exynos_OSAL_Log(EXYNOS_LOG_TRACE, "fd (%d, %d, %d) received from MFC", pSlpOutBuf->handle.dmabuf_fd[0], pSlpOutBuf->handle.dmabuf_fd[1], pSlpOutBuf->handle.dmabuf_fd[2]);
 #else
     android_native_buffer_t *pANB = (android_native_buffer_t *) pBuffer;
 
@@ -405,7 +413,7 @@ OMX_ERRORTYPE Exynos_OSAL_GetPBParameter(
     }
 
     switch (nIndex) {
-#if 0 /* SLP_PLATFORM */
+#if 0 /* TIZEN_FEATURE_E3250 */
     case OMX_IndexParamGetAndroidNativeBuffer:
     {
         GetAndroidNativeBufferUsageParams *pANBParams = (GetAndroidNativeBufferUsageParams *) ComponentParameterStructure;
@@ -455,7 +463,6 @@ OMX_ERRORTYPE Exynos_OSAL_SetPBParameter(
     OMX_ERRORTYPE          ret = OMX_ErrorNone;
     OMX_COMPONENTTYPE     *pOMXComponent = NULL;
     EXYNOS_OMX_BASECOMPONENT *pExynosComponent = NULL;
-    EXYNOS_OMX_VIDEODEC_COMPONENT *pVideoDec = NULL;
 
     FunctionIn();
 
@@ -486,10 +493,8 @@ OMX_ERRORTYPE Exynos_OSAL_SetPBParameter(
         goto EXIT;
     }
 
-    pVideoDec = (EXYNOS_OMX_VIDEODEC_COMPONENT *)pExynosComponent->hComponentHandle;
-
-    switch (nIndex) {
-#ifdef SLP_PLATFORM
+    switch ((int)nIndex) {
+#ifdef TIZEN_FEATURE_E3250
     case OMX_IndexParamEnablePlatformSpecificBuffers:
 #else
     case OMX_IndexParamEnableAndroidBuffers:
@@ -518,7 +523,7 @@ OMX_ERRORTYPE Exynos_OSAL_SetPBParameter(
             goto EXIT;
         }
 
-#ifdef SLP_PLATFORM
+#ifdef TIZEN_FEATURE_E3250
          /* PB and DPB Buffer Sharing */
         if ((portIndex == OUTPUT_PORT_INDEX) &&
             ((pExynosPort->bufferProcessType & BUFFER_PBSHARE) == BUFFER_PBSHARE)) {
@@ -539,7 +544,7 @@ OMX_ERRORTYPE Exynos_OSAL_SetPBParameter(
     }
         break;
 
-#if 0 /* SLP_PLATFORM */
+#if 0 /* TIZEN_FEATURE_E3250 */
     case OMX_IndexParamUseAndroidNativeBuffer:
     {
         UseAndroidNativeBufferParams *pANBParams = (UseAndroidNativeBufferParams *) ComponentParameterStructure;