#include "Exynos_OMX_Vdec.h"
#include "Exynos_OMX_VdecControl.h"
#include "Exynos_OMX_Basecomponent.h"
+#include "Exynos_OMX_Baseport.h"
#include "Exynos_OSAL_Thread.h"
#include "Exynos_OSAL_Semaphore.h"
#include "Exynos_OSAL_Mutex.h"
#include "Exynos_OSAL_ETC.h"
+#include "Exynos_OSAL_SharedMemory.h"
#ifdef USE_PB
#include "Exynos_OSAL_Platform_Specific.h"
return ALIGN(mbX * mbY, S5P_FIMV_DEC_BUF_ALIGN);
}
-inline void Exynos_UpdateFrameSize(OMX_COMPONENTTYPE *pOMXComponent)
+void Exynos_UpdateFrameSize(OMX_COMPONENTTYPE *pOMXComponent)
{
EXYNOS_OMX_BASECOMPONENT *pExynosComponent = (EXYNOS_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
EXYNOS_OMX_BASEPORT *exynosInputPort = &pExynosComponent->pExynosPort[INPUT_PORT_INDEX];
if (width && height)
exynosOutputPort->portDefinition.nBufferSize = (width * height * 3) / 2;
break;
-#ifdef SLP_PLATFORM /* nv12t fd */
+#ifdef TIZEN_FEATURE_E3250 /* nv12t fd */
case OMX_SEC_COLOR_FormatNV12T_DmaBuf_Fd:
if (width && height)
exynosOutputPort->portDefinition.nBufferSize = sizeof(MMVideoBuffer);
OMX_BOOL Exynos_Check_BufferProcess_State(EXYNOS_OMX_BASECOMPONENT *pExynosComponent, OMX_U32 nPortIndex)
{
OMX_BOOL ret = OMX_FALSE;
-#ifdef SLP_PLATFORM /* check state */
+#ifdef TIZEN_FEATURE_E3250 /* check state */
if (pExynosComponent->currentState != OMX_StateExecuting)
Exynos_OSAL_Log(EXYNOS_LOG_VERVOSE, "not OMX_StateExecuting");
OMX_ERRORTYPE Exynos_Input_CodecBufferToData(EXYNOS_OMX_BASECOMPONENT *pExynosComponent, OMX_PTR codecBuffer, EXYNOS_OMX_DATA *pData)
{
OMX_ERRORTYPE ret = OMX_ErrorNone;
- EXYNOS_OMX_VIDEODEC_COMPONENT *pVideoDec = (EXYNOS_OMX_VIDEODEC_COMPONENT *)pExynosComponent->hComponentHandle;
CODEC_DEC_BUFFER *pInputCodecBuffer = (CODEC_DEC_BUFFER *)codecBuffer;
pData->buffer.singlePlaneBuffer.dataBuffer = pInputCodecBuffer->pVirAddr[0];
void Exynos_Wait_ProcessPause(EXYNOS_OMX_BASECOMPONENT *pExynosComponent, OMX_U32 nPortIndex)
{
- EXYNOS_OMX_BASEPORT *exynosOMXInputPort = &pExynosComponent->pExynosPort[INPUT_PORT_INDEX];
- EXYNOS_OMX_BASEPORT *exynosOMXOutputPort = &pExynosComponent->pExynosPort[OUTPUT_PORT_INDEX];
EXYNOS_OMX_BASEPORT *exynosOMXPort = NULL;
FunctionIn();
EXYNOS_OMX_BASEPORT *exynosInputPort = &pExynosComponent->pExynosPort[INPUT_PORT_INDEX];
EXYNOS_OMX_DATABUFFER *outputUseBuffer = &exynosOutputPort->way.port2WayDataBuffer.outputDataBuffer;
- OMX_U32 copySize = 0;
DECODE_CODEC_EXTRA_BUFFERINFO *pBufferInfo = NULL;
-#ifdef SLP_PLATFORM
+#ifdef TIZEN_FEATURE_E3250
MMVideoBuffer *pSlpOutBuf = NULL;
#endif
imageSize = width * height;
colorFormat = pBufferInfo->ColorFormat;
-#ifdef SLP_PLATFORM
+#ifdef TIZEN_FEATURE_E3250
pSlpOutBuf = (MMVideoBuffer *)pOutputBuf;
pSlpOutBuf->width[0] = width;
pSlpOutBuf->width[1] = width;
pSlpOutBuf->handle.dmabuf_fd[2]);
ret = OMX_TRUE;
- goto EXIT;
-#endif
+#else
pSrcBuf[0] = dstOutputData->buffer.multiPlaneBuffer.dataBuffer[0];
pSrcBuf[1] = dstOutputData->buffer.multiPlaneBuffer.dataBuffer[1];
csc_get_method(pVideoDec->csc_handle, &csc_method);
#ifdef USE_DMA_BUF
if (csc_method == CSC_METHOD_HW) {
- pSrcBuf[0] = dstOutputData->buffer.multiPlaneBuffer.fd[0];
- pSrcBuf[1] = dstOutputData->buffer.multiPlaneBuffer.fd[1];
- pSrcBuf[2] = dstOutputData->buffer.multiPlaneBuffer.fd[2];
+ pSrcBuf[0] = (unsigned char *)(&dstOutputData->buffer.multiPlaneBuffer.fd[0]);
+ pSrcBuf[1] = (unsigned char *)(&dstOutputData->buffer.multiPlaneBuffer.fd[1]);
+ pSrcBuf[2] = (unsigned char *)(&dstOutputData->buffer.multiPlaneBuffer.fd[2]);
}
#endif
#ifdef USE_PB
if (exynosOutputPort->bIsPBEnabled == OMX_TRUE) {
ExynosVideoPlane planes[MAX_BUFFER_PLANE];
- OMX_U32 stride;
+ OMX_U32 stride = 0;
Exynos_OSAL_LockPB(pOutputBuf, width, height, exynosOutputPort->portDefinition.format.video.eColorFormat, &stride, planes);
width = stride;
outputUseBuffer->dataLen = sizeof(void *);
#ifdef USE_DMA_BUF
if ((exynosOutputPort->bIsPBEnabled == OMX_FALSE) &&
(csc_method == CSC_METHOD_HW)) {
- pYUVBuf[0] = Exynos_OSAL_SharedMemory_VirtToION(pVideoDec->hSharedMemory, pOutputBuf);
+ pYUVBuf[0] = Exynos_OSAL_SharedMemory_VirtToION(pVideoDec->hSharedMemory, (OMX_PTR)pOutputBuf);
pYUVBuf[1] = NULL;
pYUVBuf[2] = NULL;
}
ret = OMX_FALSE;
else
ret = OMX_TRUE;
-
+#endif
#ifdef USE_PB
if (exynosOutputPort->bIsPBEnabled == OMX_TRUE) {
-#ifdef SLP_PLATFORM
+#ifdef TIZEN_FEATURE_E3250
Exynos_OSAL_UnlockPB(pOutputBuf, dstOutputData, exynosOutputPort, exynosInputPort);
#else
Exynos_OSAL_UnlockPB(pOutputBuf, dstOutputData);
{
OMX_BOOL ret = OMX_FALSE;
EXYNOS_OMX_BASECOMPONENT *pExynosComponent = (EXYNOS_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- EXYNOS_OMX_VIDEODEC_COMPONENT *pVideoDec = (EXYNOS_OMX_VIDEODEC_COMPONENT *)pExynosComponent->hComponentHandle;
EXYNOS_OMX_BASEPORT *exynosInputPort = &pExynosComponent->pExynosPort[INPUT_PORT_INDEX];
EXYNOS_OMX_DATABUFFER *inputUseBuffer = &exynosInputPort->way.port2WayDataBuffer.inputDataBuffer;
OMX_U32 copySize = 0;
if (exynosInputPort->bufferProcessType & BUFFER_SHARE) {
Exynos_Shared_BufferToData(inputUseBuffer, srcInputData, ONE_PLANE);
-#ifndef SLP_PLATFORM
+#ifndef TIZEN_FEATURE_E3250
+ EXYNOS_OMX_VIDEODEC_COMPONENT *pVideoDec = (EXYNOS_OMX_VIDEODEC_COMPONENT *)pExynosComponent->hComponentHandle;
if (pVideoDec->bDRMPlayerMode == OMX_TRUE) {
OMX_PTR dataBuffer = NULL;
{
OMX_BOOL ret = OMX_FALSE;
EXYNOS_OMX_BASECOMPONENT *pExynosComponent = (EXYNOS_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- EXYNOS_OMX_VIDEODEC_COMPONENT *pVideoDec = (EXYNOS_OMX_VIDEODEC_COMPONENT *)pExynosComponent->hComponentHandle;
EXYNOS_OMX_BASEPORT *exynosOutputPort = &pExynosComponent->pExynosPort[OUTPUT_PORT_INDEX];
EXYNOS_OMX_BASEPORT *exynosInputPort = &pExynosComponent->pExynosPort[INPUT_PORT_INDEX];
EXYNOS_OMX_DATABUFFER *outputUseBuffer = &exynosOutputPort->way.port2WayDataBuffer.outputDataBuffer;
OMX_U32 copySize = 0;
- DECODE_CODEC_EXTRA_BUFFERINFO *pBufferInfo = NULL;
FunctionIn();
outputUseBuffer->dataValid = OMX_TRUE;
} else {
#ifdef USE_PB
-#ifdef SLP_PLATFORM
+#ifdef TIZEN_FEATURE_E3250
if (Exynos_Shared_DataToPlatformBuffer(dstOutputData, outputUseBuffer, exynosOutputPort,exynosInputPort) == OMX_ErrorNone) {
#else
if (Exynos_Shared_DataToPlatformBuffer(dstOutputData, outputUseBuffer, exynosOutputPort) == OMX_ErrorNone) {
}
if (exynosOutputPort->bufferProcessType & BUFFER_COPY) {
- OMX_U32 width = 0, height = 0;
- int imageSize = 0;
- void *pOutputBuf = (void *)outputUseBuffer->bufferHeader->pBuffer;
-
- pBufferInfo = (DECODE_CODEC_EXTRA_BUFFERINFO *)dstOutputData->extInfo;
-
- width = pBufferInfo->imageWidth;
- height = pBufferInfo->imageHeight;
- imageSize = width * height;
+ //void *pOutputBuf = (void *)outputUseBuffer->bufferHeader->pBuffer;
if ((dstOutputData->remainDataLen <= (outputUseBuffer->allocSize - outputUseBuffer->dataLen)) &&
(!CHECK_PORT_BEING_FLUSHED(exynosOutputPort))) {
outputUseBuffer->timeStamp = dstOutputData->timeStamp;
Exynos_OutputBufferReturn(pOMXComponent);
} else {
-#ifdef SLP_PLATFORM
+#ifdef TIZEN_FEATURE_E3250
Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "output buffer is SCMN_IMGB type.");
copySize = outputUseBuffer->allocSize - outputUseBuffer->dataLen;
EXYNOS_OMX_DATABUFFER *srcInputUseBuffer = &exynosInputPort->way.port2WayDataBuffer.inputDataBuffer;
EXYNOS_OMX_DATA *pSrcInputData = &exynosInputPort->processData;
OMX_BOOL bCheckInputData = OMX_FALSE;
- OMX_BOOL bValidCodecData = OMX_FALSE;
OMX_BOOL bCodecConfigured = OMX_FALSE;
FunctionIn();
Exynos_OSAL_SleepMillisec(0);
if ((CHECK_PORT_BEING_FLUSHED(exynosInputPort)) ||
- ((exynosOutputPort->exceptionFlag == NEED_PORT_DISABLE) && (ret == OMX_ErrorInputDataDecodeYet)))
+ ((exynosOutputPort->exceptionFlag == NEED_PORT_DISABLE) && (ret == (OMX_ERRORTYPE)OMX_ErrorInputDataDecodeYet)))
break;
if (exynosInputPort->portState != OMX_StateIdle)
break;
Exynos_OSAL_MutexLock(srcInputUseBuffer->bufferMutex);
- if (ret != OMX_ErrorInputDataDecodeYet) {
+ if (ret != (OMX_ERRORTYPE)OMX_ErrorInputDataDecodeYet) {
if (exynosInputPort->bufferProcessType & BUFFER_COPY) {
OMX_PTR codecBuffer;
ret = Exynos_InputBufferGetQueue(pExynosComponent);
inputUseBuffer = &(exynosInputPort->way.port2WayDataBuffer.inputDataBuffer);
- pVideoDec->exynos_process_codecConfigData(pOMXComponent, inputUseBuffer); /* SLP_PLATFORM */
+ pVideoDec->exynos_process_codecConfigData(pOMXComponent, inputUseBuffer); /* TIZEN_FEATURE_E3250 */
// pVideoDec->exynos_process_codecConfigData(pOMXComponent, pSrcInputData);
bCodecConfigured = OMX_TRUE;
ret = pVideoDec->exynos_codec_srcInputProcess(pOMXComponent, pSrcInputData);
- if (ret == OMX_ErrorCorruptedFrame) {
+ if (ret == (OMX_ERRORTYPE)OMX_ErrorCorruptedFrame) {
if (exynosInputPort->bufferProcessType & BUFFER_COPY) {
OMX_PTR codecBuffer;
codecBuffer = pSrcInputData->pPrivate;
}
}
- if (ret != OMX_ErrorInputDataDecodeYet) {
+ if (ret != (OMX_ERRORTYPE)OMX_ErrorInputDataDecodeYet) {
Exynos_ResetCodecData(pSrcInputData);
}
Exynos_OSAL_MutexUnlock(srcInputUseBuffer->bufferMutex);
- if (ret == OMX_ErrorCodecInit)
+ if (ret == (OMX_ERRORTYPE)OMX_ErrorCodecInit)
pVideoDec->bExitBufferProcessThread = OMX_TRUE;
}
}
-EXIT:
-
FunctionOut();
return ret;
}
}
-EXIT:
-
FunctionOut();
return ret;
break;
Exynos_OSAL_MutexLock(dstInputUseBuffer->bufferMutex);
- if (ret != OMX_ErrorOutputBufferUseYet) {
+ if (ret != (OMX_ERRORTYPE)OMX_ErrorOutputBufferUseYet) {
if (exynosOutputPort->bufferProcessType & BUFFER_COPY) {
OMX_PTR codecBuffer;
ret = Exynos_CodecBufferDeQueue(pExynosComponent, OUTPUT_PORT_INDEX, &codecBuffer);
}
ret = pVideoDec->exynos_codec_dstInputProcess(pOMXComponent, &dstInputData);
- if (ret != OMX_ErrorOutputBufferUseYet) {
+ if (ret != (OMX_ERRORTYPE)OMX_ErrorOutputBufferUseYet) {
Exynos_ResetCodecData(&dstInputData);
}
Exynos_OSAL_MutexUnlock(dstInputUseBuffer->bufferMutex);
}
}
-EXIT:
-
FunctionOut();
return ret;
}
}
-EXIT:
-
FunctionOut();
return ret;
{
OMX_ERRORTYPE ret = OMX_ErrorNone;
OMX_COMPONENTTYPE *pOMXComponent = NULL;
- EXYNOS_OMX_BASECOMPONENT *pExynosComponent = NULL;
- EXYNOS_OMX_MESSAGE *message = NULL;
FunctionIn();
if (ret != OMX_ErrorNone) {
goto EXIT;
}
- pExynosComponent = (EXYNOS_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
Exynos_OMX_SrcInputBufferProcess(pOMXComponent);
Exynos_OSAL_ThreadExit(NULL);
{
OMX_ERRORTYPE ret = OMX_ErrorNone;
OMX_COMPONENTTYPE *pOMXComponent = NULL;
- EXYNOS_OMX_BASECOMPONENT *pExynosComponent = NULL;
- EXYNOS_OMX_MESSAGE *message = NULL;
FunctionIn();
if (ret != OMX_ErrorNone) {
goto EXIT;
}
- pExynosComponent = (EXYNOS_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
Exynos_OMX_SrcOutputBufferProcess(pOMXComponent);
Exynos_OSAL_ThreadExit(NULL);
{
OMX_ERRORTYPE ret = OMX_ErrorNone;
OMX_COMPONENTTYPE *pOMXComponent = NULL;
- EXYNOS_OMX_BASECOMPONENT *pExynosComponent = NULL;
- EXYNOS_OMX_MESSAGE *message = NULL;
FunctionIn();
if (ret != OMX_ErrorNone) {
goto EXIT;
}
- pExynosComponent = (EXYNOS_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
Exynos_OMX_DstInputBufferProcess(pOMXComponent);
Exynos_OSAL_ThreadExit(NULL);
{
OMX_ERRORTYPE ret = OMX_ErrorNone;
OMX_COMPONENTTYPE *pOMXComponent = NULL;
- EXYNOS_OMX_BASECOMPONENT *pExynosComponent = NULL;
- EXYNOS_OMX_MESSAGE *message = NULL;
FunctionIn();
if (ret != OMX_ErrorNone) {
goto EXIT;
}
- pExynosComponent = (EXYNOS_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
Exynos_OMX_DstOutputBufferProcess(pOMXComponent);
Exynos_OSAL_ThreadExit(NULL);
Exynos_OMX_SrcInputProcessThread,
pOMXComponent);
-EXIT:
FunctionOut();
return ret;
EXYNOS_OMX_BASECOMPONENT *pExynosComponent = (EXYNOS_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
EXYNOS_OMX_VIDEODEC_COMPONENT *pVideoDec = (EXYNOS_OMX_VIDEODEC_COMPONENT *)pExynosComponent->hComponentHandle;
OMX_S32 countValue = 0;
- unsigned int i = 0;
FunctionIn();
Exynos_OSAL_ThreadTerminate(pVideoDec->hDstOutputThread);
pVideoDec->hDstOutputThread = NULL;
-EXIT:
FunctionOut();
return ret;