vdec/venc: modified memory type in CSC
authorTaehwan Kim <t_h.kim@samsung.com>
Thu, 3 Jan 2013 08:09:49 +0000 (08:09 +0000)
committerTaehwan Kim <t_h.kim@samsung.com>
Thu, 17 Jan 2013 10:05:40 +0000 (10:05 +0000)
fixed to use CSC_MEMORY_DMABUF before.
If use the HW-CSC in case of non-DMA_BUF environment,
needs to set CSC_MEMORY_USERPTR.

Change-Id: I23656f49cf762e507e8a11abc2047e99075e721b
Signed-off-by: Taehwan Kim <t_h.kim@samsung.com>
component/video/dec/Exynos_OMX_Vdec.c
component/video/enc/Exynos_OMX_Venc.c

index 145c210abe60546993ee89ad093e64d77fc30544..7801b3c1252fbacf204daab910a5cb2092181bbc 100644 (file)
@@ -325,8 +325,10 @@ OMX_BOOL Exynos_CSC_OutputData(OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_OMX_DATA
     void *pSrcBuf[MAX_BUFFER_PLANE] = {NULL, };
     void *pYUVBuf[MAX_BUFFER_PLANE] = {NULL, };
 
-    CSC_ERRORCODE cscRet = CSC_ErrorNone;
-    CSC_METHOD csc_method = CSC_METHOD_SW;
+    CSC_ERRORCODE   cscRet      = CSC_ErrorNone;
+    CSC_METHOD      csc_method  = CSC_METHOD_SW;
+    CSC_MEMTYPE     csc_memType = CSC_MEMORY_USERPTR;
+
     unsigned int srcCacheable = 1, dstCacheable = 1;
 
     pBufferInfo = (DECODE_CODEC_EXTRA_BUFFERINFO *)dstOutputData->extInfo;
@@ -350,6 +352,7 @@ OMX_BOOL Exynos_CSC_OutputData(OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_OMX_DATA
 
 #ifdef USE_DMA_BUF
     if (csc_method == CSC_METHOD_HW) {
+        csc_memType = CSC_MEMORY_DMABUF;
         pSrcBuf[0] = dstOutputData->buffer.multiPlaneBuffer.fd[0];
         pSrcBuf[1] = dstOutputData->buffer.multiPlaneBuffer.fd[1];
         pSrcBuf[2] = dstOutputData->buffer.multiPlaneBuffer.fd[2];
@@ -411,11 +414,11 @@ OMX_BOOL Exynos_CSC_OutputData(OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_OMX_DATA
     csc_set_src_buffer(
         pVideoDec->csc_handle,  /* handle */
         pSrcBuf,
-        CSC_MEMORY_DMABUF);    /* YUV Addr or FD */
+        csc_memType);           /* YUV Addr or FD */
     csc_set_dst_buffer(
         pVideoDec->csc_handle,  /* handle */
         pYUVBuf,
-        CSC_MEMORY_DMABUF);    /* YUV Addr or FD */
+        csc_memType);           /* YUV Addr or FD */
     cscRet = csc_convert(pVideoDec->csc_handle);
     if (cscRet != CSC_ErrorNone)
         ret = OMX_FALSE;
index 95689c6f053ab0874da130553787d2de0f4222ec..4ef3800832719b7fb2f2491bb21e10f41021fd14 100644 (file)
@@ -289,14 +289,16 @@ OMX_BOOL Exynos_CSC_InputData(OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_OMX_DATA
 
     unsigned int csc_src_color_format = omx_2_hal_pixel_format((unsigned int)OMX_COLOR_FormatYUV420SemiPlanar);
     unsigned int csc_dst_color_format = omx_2_hal_pixel_format((unsigned int)OMX_COLOR_FormatYUV420SemiPlanar);
-    CSC_METHOD csc_method = CSC_METHOD_SW;
+
+    CSC_ERRORCODE   cscRet      = CSC_ErrorNone;
+    CSC_METHOD      csc_method  = CSC_METHOD_SW;
+    CSC_MEMTYPE     csc_memType = CSC_MEMORY_USERPTR;
+
     unsigned int srcCacheable = 1, dstCacheable = 1;
 
     unsigned char *pSrcBuf[3] = {NULL, };
     unsigned char *pDstBuf[3] = {NULL, };
 
-    CSC_ERRORCODE cscRet = CSC_ErrorNone;
-
     pSrcBuf[0]  = checkInputStream;
     pSrcBuf[1]  = checkInputStream + (nFrameWidth * nFrameHeight);
     pSrcBuf[2]  = checkInputStream + (((nFrameWidth * nFrameHeight) * 5) / 4);
@@ -344,9 +346,10 @@ OMX_BOOL Exynos_CSC_InputData(OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_OMX_DATA
 #endif
 
 #ifdef USE_DMA_BUF
-            if (csc_method == CSC_METHOD_HW)
+            if (csc_method == CSC_METHOD_HW) {
+                csc_memType = CSC_MEMORY_DMABUF;
                 pSrcBuf[0]  = (unsigned char *)planes[0].fd;
-            else
+            else
 #endif
             pSrcBuf[0] = planes[0].addr;
             pSrcBuf[1]  = NULL;
@@ -357,6 +360,7 @@ OMX_BOOL Exynos_CSC_InputData(OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_OMX_DATA
     {
 #ifdef USE_DMA_BUF
         if (csc_method == CSC_METHOD_HW) {
+            csc_memType = CSC_MEMORY_DMABUF;
             pSrcBuf[0]  = Exynos_OSAL_SharedMemory_VirtToION(pVideoEnc->hSharedMemory, checkInputStream);
             pSrcBuf[1]  = NULL;
             pSrcBuf[2]  = NULL;
@@ -412,11 +416,11 @@ OMX_BOOL Exynos_CSC_InputData(OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_OMX_DATA
     csc_set_src_buffer(
         pVideoEnc->csc_handle,  /* handle */
         pSrcBuf,
-        CSC_MEMORY_DMABUF);     /* YUV Addr or FD */
+        csc_memType);           /* YUV Addr or FD */
     csc_set_dst_buffer(
         pVideoEnc->csc_handle,  /* handle */
         pDstBuf,
-        CSC_MEMORY_DMABUF);     /* YUV Addr or FD */
+        csc_memType);           /* YUV Addr or FD */
     cscRet = csc_convert(pVideoEnc->csc_handle);
     if (cscRet != CSC_ErrorNone)
         ret = OMX_FALSE;