#include "Exynos_OSAL_SharedMemory.h"
#include "Exynos_OMX_Baseport.h"
+#include <tbm_bufmgr.h>
+#include <tbm_surface.h>
+#include <tbm_surface_internal.h>
#ifdef USE_PB
#include "Exynos_OSAL_Platform_Specific.h"
#endif
temp_bufferHeader->nOutputPortIndex = OUTPUT_PORT_INDEX;
#ifdef TIZEN_FEATURE_E54XX
if (nPortIndex == OUTPUT_PORT_INDEX) {
- MMVideoBuffer * pSlpOutBuf = (MMVideoBuffer *)pBuffer;
+ tbm_bo bo[2];
+ tbm_surface_h surface = (tbm_surface_h)pBuffer;
+ bo[0] = tbm_surface_internal_get_bo(surface, 0);
+ bo[1] = tbm_surface_internal_get_bo(surface, 1);
- Exynos_OSAL_Log(EXYNOS_LOG_TRACE, "fd[0] =%d, fd[1] =%d, vaddr[0] =%p, vaddr[1] = %p, y_size=%d, uv_size=%d\n",
- pSlpOutBuf->handle.dmabuf_fd[0], pSlpOutBuf->handle.dmabuf_fd[1], pSlpOutBuf->data[0], pSlpOutBuf->data[1],
- pSlpOutBuf->size[0],pSlpOutBuf->size[1]);
+ Exynos_OSAL_Log(EXYNOS_LOG_TRACE, "fd[0] =%p, fd[1] =%p",
+ bo[0], bo[1]);
- pExynosPort->extendBufferHeader[i].buf_fd[0] = pSlpOutBuf->handle.dmabuf_fd[0];
- pExynosPort->extendBufferHeader[i].buf_fd[1] = pSlpOutBuf->handle.dmabuf_fd[1];
+ pExynosPort->extendBufferHeader[i].buf_fd[0] = tbm_bo_get_handle (bo[0], TBM_DEVICE_MM).u32;;
+ pExynosPort->extendBufferHeader[i].buf_fd[1] = tbm_bo_get_handle (bo[1], TBM_DEVICE_MM).u32;;
pExynosPort->extendBufferHeader[i].buf_fd[2] = 0;
- pExynosPort->extendBufferHeader[i].pYUVBuf[0] = pSlpOutBuf->data[0];
- pExynosPort->extendBufferHeader[i].pYUVBuf[1] = pSlpOutBuf->data[1];
+ pExynosPort->extendBufferHeader[i].pYUVBuf[0] = tbm_bo_get_handle (bo[0], TBM_DEVICE_CPU).ptr;;
+ pExynosPort->extendBufferHeader[i].pYUVBuf[1] = tbm_bo_get_handle (bo[1], TBM_DEVICE_CPU).ptr;;
pExynosPort->extendBufferHeader[i].pYUVBuf[2] = NULL;
- pExynosPort->extendBufferHeader[i].tbm_bo[0] = pSlpOutBuf->handle.bo[0];
- pExynosPort->extendBufferHeader[i].tbm_bo[1] = pSlpOutBuf->handle.bo[1];
+ pExynosPort->extendBufferHeader[i].tbm_bo[0] = bo[0];
+ pExynosPort->extendBufferHeader[i].tbm_bo[1] = bo[1];
pExynosPort->extendBufferHeader[i].tbm_bo[2] = NULL;
Exynos_OSAL_Log(EXYNOS_LOG_TRACE, "\nPlatformBuffer: buf %d pYUVBuf[0]:0x%x , pYUVBuf[1]:0x%x ",
} else if ((pVideoDec->bDRMPlayerMode == OMX_TRUE) && (nPortIndex == INPUT_PORT_INDEX)) {
pExynosPort->extendBufferHeader[i].buf_fd[0] = (int)pBuffer;
} else if(nPortIndex == INPUT_PORT_INDEX) {
- MMVideoBuffer * pSlpOutBuf = (MMVideoBuffer *)pBuffer;
- temp_bufferHeader->pBuffer = pSlpOutBuf->data[0];
+ //tbm_surface_h surface = (tbm_surface_h) pBuffer;
+ //temp_bufferHeader->pBuffer = tbm_bo_get_handle (tbm_surface_internal_get_bo(surface, 0), TBM_DEVICE_CPU).ptr;;
+ temp_bufferHeader->pBuffer = pBuffer;
}
#endif
*ppBufferHdr = temp_bufferHeader;
#include <stdlib.h>
#include <string.h>
#include <mm_types.h>
+#include <tbm_bufmgr.h>
+#include <tbm_surface.h>
+#include <tbm_surface_internal.h>
#include "Exynos_OSAL_Semaphore.h"
#include "Exynos_OMX_Baseport.h"
OMX_ERRORTYPE ret = OMX_ErrorNone;
#ifdef TIZEN_FEATURE_E54XX
-
+ tbm_bo bo[2];
ExynosVideoPlane *vplanes = (ExynosVideoPlane *) planes;
- MMVideoBuffer *buffer = (MMVideoBuffer *) pBuffer;
+ tbm_surface_h surface = (tbm_surface_h) pBuffer;
+ bo[0] = tbm_surface_internal_get_bo(surface, 0);
+ bo[1] = tbm_surface_internal_get_bo(surface, 1);
- vplanes[0].fd = buffer->handle.dmabuf_fd[0];
+ vplanes[0].fd = tbm_bo_get_handle (bo[0], TBM_DEVICE_MM).u32;;
vplanes[0].offset = 0;
- vplanes[1].fd = buffer->handle.dmabuf_fd[1];
+
+ vplanes[1].fd = tbm_bo_get_handle (bo, TBM_DEVICE_MM).u32;
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->data[0]; //vaddr[0];
- vplanes[1].addr = buffer->data[1]; //vaddr[1];
+ vplanes[0].addr = tbm_bo_get_handle (bo[0], TBM_DEVICE_CPU).ptr; //vaddr[0];
+ vplanes[1].addr = tbm_bo_get_handle (bo[1], TBM_DEVICE_CPU).ptr;
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->handle.dmabuf_fd[0], buffer->handle.dmabuf_fd[1], buffer->data[0], buffer->data[1]);
+ Exynos_OSAL_Log(EXYNOS_LOG_TRACE, "Exynos_OSAL_LockPB:fd[0](%d) fd[1](%d) a[0](%p) a[1](%p)",
+ vplanes[0].fd, vplanes[1].fd, vplanes[0].addr, vplanes[1].addr);
#else
android_native_buffer_t *pANB = (android_native_buffer_t *) pBuffer;
OMX_ERRORTYPE ret = OMX_ErrorNone;
#ifdef TIZEN_FEATURE_E54XX
- MMVideoBuffer *pSlpOutBuf = NULL;
- DECODE_CODEC_EXTRA_BUFFERINFO *pBufferInfo = NULL;
-
- pSlpOutBuf = (MMVideoBuffer *)pBuffer;
- if (pSlpOutBuf == NULL) {
- Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "pBuffer is NULL!");
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- 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.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;
- } else {
- pSlpOutBuf->width[0] = pBufferInfo->imageWidth;
- pSlpOutBuf->width[1] = pBufferInfo->imageWidth;
- pSlpOutBuf->height[0] = pBufferInfo->imageHeight;
- pSlpOutBuf->height[1] = pBufferInfo->imageHeight/2;
- }
- pSlpOutBuf->stride_width[0] = ALIGN(pBufferInfo->imageWidth, S5P_FIMV_NV12M_HALIGN);
- pSlpOutBuf->stride_width[1] = ALIGN(pBufferInfo->imageWidth, S5P_FIMV_NV12M_HALIGN);
- pSlpOutBuf->stride_height[0] = ALIGN(pBufferInfo->imageHeight, S5P_FIMV_NV12M_HALIGN);
- pSlpOutBuf->stride_height[1] = ALIGN(pBufferInfo->imageHeight/2, S5P_FIMV_NV12M_HALIGN);
-
-
-/*
- if (pVideoDec->bDRMPlayerMode == OMX_TRUE) {
- pSlpOutBuf->a[0] = 0;
- pSlpOutBuf->a[1] = 0;
- } else {
-*/
- pSlpOutBuf->data[0] = pData->buffer.multiPlaneBuffer.dataBuffer[0];
- pSlpOutBuf->data[1] = pData->buffer.multiPlaneBuffer.dataBuffer[1];
-// }
- 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->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->size[0] = CHOOSE_MAX_SIZE(calc_plane(pBufferInfo->imageWidth,pBufferInfo->imageHeight), new_calc_plane(pBufferInfo->imageWidth,pBufferInfo->imageHeight));
- pSlpOutBuf->size[1] = CHOOSE_MAX_SIZE(calc_plane(pBufferInfo->imageWidth,(pBufferInfo->imageHeight) / 2), new_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->size[0]= CHOOSE_MAX_SIZE(calc_yplane(pBufferInfo->imageWidth,pBufferInfo->imageHeight), new_calc_yplane(pBufferInfo->imageWidth,pBufferInfo->imageHeight));
- pSlpOutBuf->size[1] = CHOOSE_MAX_SIZE(calc_uvplane(pBufferInfo->imageWidth,(pBufferInfo->imageHeight) / 2), new_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 fd mode */
- pSlpOutBuf->handle_num = 2;
- pSlpOutBuf->plane_num = 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]);
+ Exynos_OSAL_Log(EXYNOS_LOG_TRACE, "surface %p received from MFC", pBuffer);
#else
android_native_buffer_t *pANB = (android_native_buffer_t *) pBuffer;