summaryrefslogtreecommitdiff
path: root/exynos_omx
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2014-07-31 14:31:06 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-07-29 22:44:51 +0000
commit4ec0f6d29023b78e08ed6afb3a985c91495ae381 (patch)
tree3db215ab17b79517721f284396f6f231a68b506a /exynos_omx
parent9d578fc58e748297c20ccd90722807b9f19ae6d3 (diff)
parent1e339948fd5bcee9312ea3701e7b9ace092b37db (diff)
downloadexynos5-4ec0f6d29023b78e08ed6afb3a985c91495ae381.tar.gz
Merge "exynos_omx: multi_thread: Fix the wrong type casting and data access." into lmp-dev
Diffstat (limited to 'exynos_omx')
-rw-r--r--exynos_omx/openmax/exynos_omx/component/video/dec/Exynos_OMX_Vdec.c4
-rw-r--r--exynos_omx/openmax/exynos_omx/component/video/dec/Exynos_OMX_VdecControl.c4
-rw-r--r--exynos_omx/openmax/exynos_omx/component/video/enc/Exynos_OMX_Venc.c8
-rw-r--r--exynos_omx/openmax/exynos_omx/osal/Exynos_OSAL_Android.cpp52
-rw-r--r--exynos_omx/openmax/exynos_omx/osal/Exynos_OSAL_Android.h10
5 files changed, 19 insertions, 59 deletions
diff --git a/exynos_omx/openmax/exynos_omx/component/video/dec/Exynos_OMX_Vdec.c b/exynos_omx/openmax/exynos_omx/component/video/dec/Exynos_OMX_Vdec.c
index 8a2add6..8d0e6d5 100644
--- a/exynos_omx/openmax/exynos_omx/component/video/dec/Exynos_OMX_Vdec.c
+++ b/exynos_omx/openmax/exynos_omx/component/video/dec/Exynos_OMX_Vdec.c
@@ -397,7 +397,7 @@ OMX_BOOL Exynos_CSC_OutputData(OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_OMX_DATA
ExynosVideoPlane planes[MAX_BUFFER_PLANE];
OMX_U32 stride;
if (exynosOutputPort->bIsANBEnabled == OMX_TRUE) {
- Exynos_OSAL_LockANB(pOutputBuf, width, height, exynosOutputPort->portDefinition.format.video.eColorFormat, &stride, planes);
+ Exynos_OSAL_LockANBHandle(pOutputBuf, width, height, exynosOutputPort->portDefinition.format.video.eColorFormat, &stride, planes);
} else if (exynosOutputPort->bStoreMetaData == OMX_TRUE) {
Exynos_OSAL_LockMetaData(pOutputBuf, width, height, exynosOutputPort->portDefinition.format.video.eColorFormat, &stride, planes);
}
@@ -460,7 +460,7 @@ OMX_BOOL Exynos_CSC_OutputData(OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_OMX_DATA
#ifdef USE_ANB
if (exynosOutputPort->bIsANBEnabled == OMX_TRUE) {
- Exynos_OSAL_UnlockANB(pOutputBuf);
+ Exynos_OSAL_UnlockANBHandle(pOutputBuf);
} else if (exynosOutputPort->bStoreMetaData == OMX_TRUE) {
Exynos_OSAL_UnlockMetaData(pOutputBuf);
}
diff --git a/exynos_omx/openmax/exynos_omx/component/video/dec/Exynos_OMX_VdecControl.c b/exynos_omx/openmax/exynos_omx/component/video/dec/Exynos_OMX_VdecControl.c
index 63ee7ea..e072a22 100644
--- a/exynos_omx/openmax/exynos_omx/component/video/dec/Exynos_OMX_VdecControl.c
+++ b/exynos_omx/openmax/exynos_omx/component/video/dec/Exynos_OMX_VdecControl.c
@@ -1512,7 +1512,7 @@ OMX_ERRORTYPE Exynos_Shared_ANBBufferToData(EXYNOS_OMX_DATABUFFER *pUseBuffer, E
OMX_U32 stride;
if ((pUseBuffer->bufferHeader != NULL) && (pUseBuffer->bufferHeader->pBuffer != NULL)) {
if (pExynosPort->bIsANBEnabled == OMX_TRUE) {
- Exynos_OSAL_LockANB(pUseBuffer->bufferHeader->pBuffer, width, height, pExynosPort->portDefinition.format.video.eColorFormat, &stride, planes);
+ Exynos_OSAL_LockANBHandle(pUseBuffer->bufferHeader->pBuffer, width, height, pExynosPort->portDefinition.format.video.eColorFormat, &stride, planes);
} else if (pExynosPort->bStoreMetaData == OMX_TRUE) {
Exynos_OSAL_LockMetaData(pUseBuffer->bufferHeader->pBuffer, width, height, pExynosPort->portDefinition.format.video.eColorFormat, &stride, planes);
}
@@ -1573,7 +1573,7 @@ OMX_ERRORTYPE Exynos_Shared_DataToANBBuffer(EXYNOS_OMX_DATA *pData, EXYNOS_OMX_D
}
if (pExynosPort->bIsANBEnabled == OMX_TRUE) {
- Exynos_OSAL_UnlockANB(pUseBuffer->bufferHeader->pBuffer);
+ Exynos_OSAL_UnlockANBHandle(pUseBuffer->bufferHeader->pBuffer);
} else if (pExynosPort->bStoreMetaData == OMX_TRUE) {
Exynos_OSAL_UnlockMetaData(pUseBuffer->bufferHeader->pBuffer);
} else {
diff --git a/exynos_omx/openmax/exynos_omx/component/video/enc/Exynos_OMX_Venc.c b/exynos_omx/openmax/exynos_omx/component/video/enc/Exynos_OMX_Venc.c
index 5c0b583..c7dc24a 100644
--- a/exynos_omx/openmax/exynos_omx/component/video/enc/Exynos_OMX_Venc.c
+++ b/exynos_omx/openmax/exynos_omx/component/video/enc/Exynos_OMX_Venc.c
@@ -322,10 +322,11 @@ OMX_BOOL Exynos_CSC_InputData(OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_OMX_DATA
Exynos_OSAL_GetInfoFromMetaData((OMX_BYTE)inputUseBuffer->bufferHeader->pBuffer, ppBuf);
if (eColorFormat == OMX_COLOR_FormatAndroidOpaque) {
ExynosVideoPlane planes[MAX_BUFFER_PLANE];
- size_t i;
+ OMX_U32 stride;
+ int i;
csc_src_color_format = omx_2_hal_pixel_format((unsigned int)Exynos_OSAL_GetANBColorFormat(ppBuf[0]));
- Exynos_OSAL_LockANBHandle((OMX_U32)ppBuf[0], nFrameWidth, nFrameHeight, OMX_COLOR_FormatAndroidOpaque, planes);
+ Exynos_OSAL_LockANBHandle((OMX_U32)ppBuf[0], nFrameWidth, nFrameHeight, OMX_COLOR_FormatAndroidOpaque, &stride, planes);
#if defined(USE_CSC_GSCALER) || defined(USE_CSC_G2D)
csc_method = CSC_METHOD_HW;
@@ -472,8 +473,9 @@ OMX_BOOL Exynos_Preprocessor_InputData(OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_
if (eColorFormat == OMX_COLOR_FormatAndroidOpaque) {
ExynosVideoPlane planes[MAX_BUFFER_PLANE];
+ OMX_U32 stride;
- Exynos_OSAL_LockANBHandle((OMX_U32)ppBuf[0], nFrameWidth, nFrameHeight, OMX_COLOR_FormatYUV420SemiPlanar, planes);
+ Exynos_OSAL_LockANBHandle((OMX_U32)ppBuf[0], nFrameWidth, nFrameHeight, OMX_COLOR_FormatYUV420SemiPlanar, &stride, planes);
srcInputData->buffer.multiPlaneBuffer.fd[0] = planes[0].fd;
srcInputData->buffer.multiPlaneBuffer.fd[1] = planes[1].fd;
diff --git a/exynos_omx/openmax/exynos_omx/osal/Exynos_OSAL_Android.cpp b/exynos_omx/openmax/exynos_omx/osal/Exynos_OSAL_Android.cpp
index 294a1c1..fb64735 100644
--- a/exynos_omx/openmax/exynos_omx/osal/Exynos_OSAL_Android.cpp
+++ b/exynos_omx/openmax/exynos_omx/osal/Exynos_OSAL_Android.cpp
@@ -72,6 +72,7 @@ OMX_ERRORTYPE Exynos_OSAL_LockANBHandle(
OMX_IN OMX_U32 width,
OMX_IN OMX_U32 height,
OMX_IN OMX_COLOR_FORMATTYPE format,
+ OMX_OUT OMX_U32 *pStride,
OMX_OUT OMX_PTR planes)
{
FunctionIn();
@@ -115,6 +116,8 @@ OMX_ERRORTYPE Exynos_OSAL_LockANBHandle(
vplanes[2].offset = 0;
vplanes[2].addr = vaddr[2];
+ *pStride = priv_hnd->stride;
+
Exynos_OSAL_Log(EXYNOS_LOG_TRACE, "%s: buffer locked: 0x%x", __func__, *vaddr);
EXIT:
@@ -178,43 +181,6 @@ EXIT:
return nStride;
}
-OMX_ERRORTYPE Exynos_OSAL_LockANB(
- OMX_IN OMX_PTR pBuffer,
- OMX_IN OMX_U32 width,
- OMX_IN OMX_U32 height,
- OMX_IN OMX_COLOR_FORMATTYPE format,
- OMX_OUT OMX_U32 *pStride,
- OMX_OUT OMX_PTR planes)
-{
- FunctionIn();
-
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- android_native_buffer_t *pANB = (android_native_buffer_t *) pBuffer;
-
- ret = Exynos_OSAL_LockANBHandle((OMX_U32)pANB->handle, width, height, format, planes);
- *pStride = pANB->stride;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE Exynos_OSAL_UnlockANB(OMX_IN OMX_PTR pBuffer)
-{
- FunctionIn();
-
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- android_native_buffer_t *pANB = (android_native_buffer_t *) pBuffer;
-
- ret = Exynos_OSAL_UnlockANBHandle((OMX_U32)pANB->handle);
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
OMX_ERRORTYPE Exynos_OSAL_LockMetaData(
OMX_IN OMX_PTR pBuffer,
OMX_IN OMX_U32 width,
@@ -230,8 +196,7 @@ OMX_ERRORTYPE Exynos_OSAL_LockMetaData(
ret = Exynos_OSAL_GetInfoFromMetaData((OMX_BYTE)pBuffer, &pBuf);
if (ret == OMX_ErrorNone) {
- ret = Exynos_OSAL_LockANBHandle((OMX_U32)pBuf, width, height, format, planes);
- *pStride = Exynos_OSAL_GetANBStride((OMX_U32)pBuf);
+ ret = Exynos_OSAL_LockANBHandle((OMX_U32)pBuf, width, height, format, pStride, planes);
}
EXIT:
@@ -369,7 +334,7 @@ OMX_ERRORTYPE Exynos_OSAL_RefANB_Increase(OMX_HANDLETYPE hREF, OMX_PTR pBuffer)
{
int i;
OMX_ERRORTYPE ret = OMX_ErrorNone;
- buffer_handle_t bufferHandle = (buffer_handle_t) pBuffer;//pANB->handle;
+ buffer_handle_t bufferHandle = (buffer_handle_t) pBuffer; //pANB->handle
private_handle_t *priv_hnd = (private_handle_t *) bufferHandle;
EXYNOS_OMX_REF_HANDLE *phREF = (EXYNOS_OMX_REF_HANDLE *)hREF;
gralloc_module_t* module = NULL;
@@ -527,7 +492,8 @@ OMX_ERRORTYPE useAndroidNativeBuffer(
pExynosPort->extendBufferHeader[i].OMXBufferHeader = temp_bufferHeader;
pExynosPort->bufferStateAllocate[i] = (BUFFER_STATE_ASSIGNED | HEADER_STATE_ALLOCATED);
INIT_SET_SIZE_VERSION(temp_bufferHeader, OMX_BUFFERHEADERTYPE);
- temp_bufferHeader->pBuffer = pBuffer;
+ android_native_buffer_t *pANB = (android_native_buffer_t *) pBuffer;
+ temp_bufferHeader->pBuffer = (OMX_U8 *)pANB->handle;
temp_bufferHeader->nAllocLen = nSizeBytes;
temp_bufferHeader->pAppPrivate = pAppPrivate;
if (nPortIndex == INPUT_PORT_INDEX)
@@ -537,7 +503,7 @@ OMX_ERRORTYPE useAndroidNativeBuffer(
width = pExynosPort->portDefinition.format.video.nFrameWidth;
height = pExynosPort->portDefinition.format.video.nFrameHeight;
- Exynos_OSAL_LockANB(temp_bufferHeader->pBuffer, width, height,
+ Exynos_OSAL_LockANBHandle((OMX_U32)temp_bufferHeader->pBuffer, width, height,
pExynosPort->portDefinition.format.video.eColorFormat,
&stride, planes);
pExynosPort->extendBufferHeader[i].buf_fd[0] = planes[0].fd;
@@ -546,7 +512,7 @@ OMX_ERRORTYPE useAndroidNativeBuffer(
pExynosPort->extendBufferHeader[i].pYUVBuf[1] = planes[1].addr;
pExynosPort->extendBufferHeader[i].buf_fd[2] = planes[2].fd;
pExynosPort->extendBufferHeader[i].pYUVBuf[2] = planes[2].addr;
- Exynos_OSAL_UnlockANB(temp_bufferHeader->pBuffer);
+ Exynos_OSAL_UnlockANBHandle((OMX_U32)temp_bufferHeader->pBuffer);
Exynos_OSAL_Log(EXYNOS_LOG_TRACE, "useAndroidNativeBuffer: buf %d pYUVBuf[0]:0x%x (fd:%d), pYUVBuf[1]:0x%x (fd:%d)",
i, pExynosPort->extendBufferHeader[i].pYUVBuf[0], planes[0].fd,
pExynosPort->extendBufferHeader[i].pYUVBuf[1], planes[1].fd);
diff --git a/exynos_omx/openmax/exynos_omx/osal/Exynos_OSAL_Android.h b/exynos_omx/openmax/exynos_omx/osal/Exynos_OSAL_Android.h
index 18e0b41..424579f 100644
--- a/exynos_omx/openmax/exynos_omx/osal/Exynos_OSAL_Android.h
+++ b/exynos_omx/openmax/exynos_omx/osal/Exynos_OSAL_Android.h
@@ -66,15 +66,6 @@ OMX_ERRORTYPE Exynos_OSAL_SetANBParameter(OMX_IN OMX_HANDLETYPE hComponent,
OMX_IN OMX_INDEXTYPE nIndex,
OMX_IN OMX_PTR ComponentParameterStructure);
-OMX_ERRORTYPE Exynos_OSAL_LockANB(OMX_IN OMX_PTR pBuffer,
- OMX_IN OMX_U32 width,
- OMX_IN OMX_U32 height,
- OMX_IN OMX_COLOR_FORMATTYPE format,
- OMX_OUT OMX_U32 *pStride,
- OMX_OUT OMX_PTR planes);
-
-OMX_ERRORTYPE Exynos_OSAL_UnlockANB(OMX_IN OMX_PTR pBuffer);
-
OMX_ERRORTYPE Exynos_OSAL_LockMetaData(OMX_IN OMX_PTR pBuffer,
OMX_IN OMX_U32 width,
OMX_IN OMX_U32 height,
@@ -88,6 +79,7 @@ OMX_ERRORTYPE Exynos_OSAL_LockANBHandle(OMX_IN OMX_U32 pBuffer,
OMX_IN OMX_U32 width,
OMX_IN OMX_U32 height,
OMX_IN OMX_COLOR_FORMATTYPE format,
+ OMX_OUT OMX_U32 *pStride,
OMX_OUT OMX_PTR planes);
OMX_ERRORTYPE Exynos_OSAL_UnlockANBHandle(OMX_IN OMX_U32 pBuffer);