diff options
author | SeungBeom Kim <sbcrux.kim@samsung.com> | 2010-10-17 15:18:22 -0700 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2010-10-18 11:24:39 -0700 |
commit | 6dbcf81abac113ddef7543cf0083035d03a615f8 (patch) | |
tree | 7b48b3d11d44bc1ecb72b09daa139f26a30d6947 /sec_mm/sec_omx/sec_omx_component | |
parent | 662f3b4f712f4094c806826ece38f17decc91c68 (diff) | |
download | device_samsung_crespo-6dbcf81abac113ddef7543cf0083035d03a615f8.zip device_samsung_crespo-6dbcf81abac113ddef7543cf0083035d03a615f8.tar.gz device_samsung_crespo-6dbcf81abac113ddef7543cf0083035d03a615f8.tar.bz2 |
Bug Fix Video decode color converter for H/W Thumbnail
related-to-bug: 3106534
Real OMX_COLOR_FormatYUV420Planar Data return.
if Use Thumbnail Mode then set as follows before Decoding
/************************************************/
OMX_ERRORTYPE ret = OMX_ErrorNone;
OMX_BOOL param = OMX_TRUE;
ret = OMX_GetExtensionIndex(
mHandle,
"OMX.SEC.index.ThumbnailMode",
&eIndexParamFilename);
if (ret == OMX_ErrorNone)
OMX_SetConfig(
mHandle, eIndexParamFilename, ¶m);
/***********************************************/
Change-Id: Ia2cf2c4145687c45fb8f2987e66db59434266f34
Signed-off-by: SeungBeom Kim <sbcrux.kim@samsung.com>
Diffstat (limited to 'sec_mm/sec_omx/sec_omx_component')
-rw-r--r-- | sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/SEC_OMX_H264dec.c | 12 | ||||
-rw-r--r-- | sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/SEC_OMX_Mpeg4dec.c | 12 |
2 files changed, 18 insertions, 6 deletions
diff --git a/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/SEC_OMX_H264dec.c b/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/SEC_OMX_H264dec.c index 34a005d..4d2944d 100644 --- a/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/SEC_OMX_H264dec.c +++ b/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/SEC_OMX_H264dec.c @@ -937,7 +937,7 @@ OMX_ERRORTYPE SEC_MFC_H264_Decode(OMX_COMPONENTTYPE *pOMXComponent, SEC_OMX_DATA #ifdef USE_SAMSUNG_COLORFORMAT SEC_OMX_BASEPORT *pSECOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX]; - if ((pH264Dec->hMFCH264Handle.bThumbnailMode == OMX_FALSE) || + if ((pH264Dec->hMFCH264Handle.bThumbnailMode == OMX_FALSE) && (pSECOutputPort->portDefinition.format.video.eColorFormat == SEC_OMX_COLOR_FormatNV12PhysicalAddress)) #else @@ -952,8 +952,14 @@ OMX_ERRORTYPE SEC_MFC_H264_Decode(OMX_COMPONENTTYPE *pOMXComponent, SEC_OMX_DATA SEC_OSAL_Memcpy(pOutBuf + sizeof(frameSize) + (sizeof(void *) * 3), &(outputInfo.CVirAddr), sizeof(outputInfo.CVirAddr)); } else { SEC_OSAL_Log(SEC_LOG_TRACE, "YUV420 out for ThumbnailMode"); - tile_to_linear_4x2(pOutBuf, (unsigned char *)outputInfo.YVirAddr, bufWidth, bufHeight); - tile_to_linear_4x2(pOutBuf + frameSize, (unsigned char *)outputInfo.CVirAddr, bufWidth, bufHeight / 2); + Y_tile_to_linear_4x2( + (unsigned char *)pOutBuf, + (unsigned char *)outputInfo.YVirAddr, + bufWidth, bufHeight); + CbCr_tile_to_linear_4x2( + ((unsigned char *)pOutBuf) + frameSize, + (unsigned char *)outputInfo.CVirAddr, + bufWidth, bufHeight); } } diff --git a/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/SEC_OMX_Mpeg4dec.c b/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/SEC_OMX_Mpeg4dec.c index 13ca1a8..7fac824 100644 --- a/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/SEC_OMX_Mpeg4dec.c +++ b/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/SEC_OMX_Mpeg4dec.c @@ -1117,7 +1117,7 @@ OMX_ERRORTYPE SEC_MFC_Mpeg4_Decode(OMX_COMPONENTTYPE *pOMXComponent, SEC_OMX_DAT #ifdef USE_SAMSUNG_COLORFORMAT SEC_OMX_BASEPORT *pSECOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX]; - if ((pMpeg4Dec->hMFCMpeg4Handle.bThumbnailMode == OMX_FALSE) || + if ((pMpeg4Dec->hMFCMpeg4Handle.bThumbnailMode == OMX_FALSE) && (pSECOutputPort->portDefinition.format.video.eColorFormat == SEC_OMX_COLOR_FormatNV12PhysicalAddress)) #else @@ -1132,8 +1132,14 @@ OMX_ERRORTYPE SEC_MFC_Mpeg4_Decode(OMX_COMPONENTTYPE *pOMXComponent, SEC_OMX_DAT SEC_OSAL_Memcpy(pOutputBuf + sizeof(frameSize) + (sizeof(void *) * 3), &(outputInfo.CVirAddr), sizeof(outputInfo.CVirAddr)); } else { SEC_OSAL_Log(SEC_LOG_TRACE, "YUV420 out for ThumbnailMode"); - tile_to_linear_4x2(pOutputBuf, (unsigned char *)outputInfo.YVirAddr, bufWidth, bufHeight); - tile_to_linear_4x2(pOutputBuf + frameSize, (unsigned char *)outputInfo.CVirAddr, bufWidth, bufHeight / 2); + Y_tile_to_linear_4x2( + (unsigned char *)pOutputBuf, + (unsigned char *)outputInfo.YVirAddr, + bufWidth, bufHeight); + CbCr_tile_to_linear_4x2( + ((unsigned char *)pOutputBuf) + frameSize, + (unsigned char *)outputInfo.CVirAddr, + bufWidth, bufHeight); } } |