OMX_ERRORTYPE Exynos_InputBufferGetQueue(EXYNOS_OMX_BASECOMPONENT *pExynosComponent)
{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
+ OMX_ERRORTYPE ret = OMX_ErrorUndefined;
EXYNOS_OMX_BASEPORT *pExynosPort = &pExynosComponent->pExynosPort[INPUT_PORT_INDEX];
EXYNOS_OMX_MESSAGE *message = NULL;
EXYNOS_OMX_DATABUFFER *inputUseBuffer = NULL;
goto EXIT;
}
if (message->messageType == EXYNOS_OMX_CommandFakeBuffer) {
+ Exynos_OSAL_Free(message);
ret = OMX_ErrorCodecFlush;
goto EXIT;
}
OMX_ERRORTYPE Exynos_OutputBufferGetQueue(EXYNOS_OMX_BASECOMPONENT *pExynosComponent)
{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
+ OMX_ERRORTYPE ret = OMX_ErrorUndefined;
EXYNOS_OMX_BASEPORT *pExynosPort = &pExynosComponent->pExynosPort[OUTPUT_PORT_INDEX];
EXYNOS_OMX_MESSAGE *message = NULL;
EXYNOS_OMX_DATABUFFER *outputUseBuffer = NULL;
goto EXIT;
}
if (message->messageType == EXYNOS_OMX_CommandFakeBuffer) {
+ Exynos_OSAL_Free(message);
ret = OMX_ErrorCodecFlush;
goto EXIT;
}
ret = OMX_ErrorNone;
EXIT:
+ if (ret != OMX_ErrorNone) {
+ if (pDecOps != NULL) {
+ Exynos_OSAL_Free(pDecOps);
+ pH264Dec->hMFCH264Handle.pDecOps = NULL;
+ }
+ if (pInbufOps != NULL) {
+ Exynos_OSAL_Free(pInbufOps);
+ pH264Dec->hMFCH264Handle.pInbufOps = NULL;
+ }
+ if (pOutbufOps != NULL) {
+ Exynos_OSAL_Free(pOutbufOps);
+ pH264Dec->hMFCH264Handle.pOutbufOps = NULL;
+ }
+ }
+
FunctionOut();
return ret;
ret = OMX_ErrorNone;
EXIT:
+ if (ret != OMX_ErrorNone) {
+ if (pDecOps != NULL) {
+ Exynos_OSAL_Free(pDecOps);
+ pMpeg4Dec->hMFCMpeg4Handle.pDecOps = NULL;
+ }
+ if (pInbufOps != NULL) {
+ Exynos_OSAL_Free(pInbufOps);
+ pMpeg4Dec->hMFCMpeg4Handle.pInbufOps = NULL;
+ }
+ if (pOutbufOps != NULL) {
+ Exynos_OSAL_Free(pOutbufOps);
+ pMpeg4Dec->hMFCMpeg4Handle.pOutbufOps = NULL;
+ }
+ }
+
FunctionOut();
return ret;
pInbufOps = pMpeg4Dec->hMFCMpeg4Handle.pInbufOps;
pOutbufOps = pMpeg4Dec->hMFCMpeg4Handle.pOutbufOps;
- if (nPortIndex == INPUT_PORT_INDEX)
+ if ((nPortIndex == INPUT_PORT_INDEX) && (pInbufOps != NULL))
pInbufOps->Stop(hMFCHandle);
- else if (nPortIndex == OUTPUT_PORT_INDEX)
+ else if ((nPortIndex == OUTPUT_PORT_INDEX) && (pOutbufOps != NULL))
pOutbufOps->Stop(hMFCHandle);
ret = OMX_ErrorNone;
ret = OMX_ErrorNone;
EXIT:
+ if (ret != OMX_ErrorNone) {
+ if (pDecOps != NULL) {
+ Exynos_OSAL_Free(pDecOps);
+ pVp8Dec->hMFCVp8Handle.pDecOps = NULL;
+ }
+ if (pInbufOps != NULL) {
+ Exynos_OSAL_Free(pInbufOps);
+ pVp8Dec->hMFCVp8Handle.pInbufOps = NULL;
+ }
+ if (pOutbufOps != NULL) {
+ Exynos_OSAL_Free(pOutbufOps);
+ pVp8Dec->hMFCVp8Handle.pOutbufOps = NULL;
+ }
+ }
+
FunctionOut();
return ret;
pInbufOps = pVp8Dec->hMFCVp8Handle.pInbufOps;
pOutbufOps = pVp8Dec->hMFCVp8Handle.pOutbufOps;
- if (nPortIndex == INPUT_PORT_INDEX)
+ if ((nPortIndex == INPUT_PORT_INDEX) && (pInbufOps != NULL))
pInbufOps->Stop(hMFCHandle);
- else if (nPortIndex == OUTPUT_PORT_INDEX)
+ else if ((nPortIndex == OUTPUT_PORT_INDEX) && (pOutbufOps != NULL))
pOutbufOps->Stop(hMFCHandle);
ret = OMX_ErrorNone;
FunctionIn();
- if (hComponent == NULL) {
+ if (hComponent == NULL || pComponentConfigStructure == NULL) {
ret = OMX_ErrorBadParameter;
goto EXIT;
}
goto EXIT;
}
pExynosComponent = (EXYNOS_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if (pComponentConfigStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
if (pExynosComponent->currentState == OMX_StateInvalid) {
ret = OMX_ErrorInvalidState;
goto EXIT;
FunctionIn();
- if (hComponent == NULL) {
+ if (hComponent == NULL || pComponentConfigStructure == NULL) {
ret = OMX_ErrorBadParameter;
goto EXIT;
}
goto EXIT;
}
pExynosComponent = (EXYNOS_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if (pComponentConfigStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
if (pExynosComponent->currentState == OMX_StateInvalid) {
ret = OMX_ErrorInvalidState;
goto EXIT;
Exynos_OSAL_Log(EXYNOS_LOG_TRACE, "%s:%d YAddr: 0x%x CbCrAddr: 0x%x", __FUNCTION__, __LINE__, (unsigned int)ppBuf[0], (unsigned int)ppBuf[0]);
}
#endif
-
/* reset dataBuffer */
Exynos_ResetDataBuffer(inputUseBuffer);
flagEOF = OMX_TRUE;
}
} else if (exynosOutputPort->bufferProcessType == BUFFER_SHARE) {
if ((outputUseBuffer->remainDataLen > 0) ||
- (outputUseBuffer->nFlags & OMX_BUFFERFLAG_EOS) ||
+ ((outputUseBuffer->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS) ||
(CHECK_PORT_BEING_FLUSHED(exynosOutputPort)))
Exynos_OutputBufferReturn(pOMXComponent);
}
OMX_ERRORTYPE Exynos_InputBufferGetQueue(EXYNOS_OMX_BASECOMPONENT *pExynosComponent)
{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
+ OMX_ERRORTYPE ret = OMX_ErrorUndefined;
EXYNOS_OMX_BASEPORT *pExynosPort = &pExynosComponent->pExynosPort[INPUT_PORT_INDEX];
EXYNOS_OMX_MESSAGE *message = NULL;
EXYNOS_OMX_DATABUFFER *inputUseBuffer = NULL;
goto EXIT;
}
if (message->messageType == EXYNOS_OMX_CommandFakeBuffer) {
+ Exynos_OSAL_Free(message);
ret = OMX_ErrorCodecFlush;
goto EXIT;
}
OMX_ERRORTYPE Exynos_OutputBufferGetQueue(EXYNOS_OMX_BASECOMPONENT *pExynosComponent)
{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
+ OMX_ERRORTYPE ret = OMX_ErrorUndefined;
EXYNOS_OMX_BASEPORT *pExynosPort = &pExynosComponent->pExynosPort[OUTPUT_PORT_INDEX];
EXYNOS_OMX_MESSAGE *message = NULL;
EXYNOS_OMX_DATABUFFER *outputUseBuffer = NULL;
goto EXIT;
}
if (message->messageType == EXYNOS_OMX_CommandFakeBuffer) {
+ Exynos_OSAL_Free(message);
ret = OMX_ErrorCodecFlush;
goto EXIT;
}
ret = OMX_ErrorNone;
EXIT:
+ if (ret != OMX_ErrorNone) {
+ if (pEncOps != NULL) {
+ Exynos_OSAL_Free(pEncOps);
+ pH264Enc->hMFCH264Handle.pEncOps = NULL;
+ }
+ if (pInbufOps != NULL) {
+ Exynos_OSAL_Free(pInbufOps);
+ pH264Enc->hMFCH264Handle.pInbufOps = NULL;
+ }
+ if (pOutbufOps != NULL) {
+ Exynos_OSAL_Free(pOutbufOps);
+ pH264Enc->hMFCH264Handle.pOutbufOps = NULL;
+ }
+ }
+
FunctionOut();
return ret;
ret = OMX_ErrorNone;
EXIT:
+ if (ret != OMX_ErrorNone) {
+ if (pEncOps != NULL) {
+ Exynos_OSAL_Free(pEncOps);
+ pMpeg4Enc->hMFCMpeg4Handle.pEncOps = NULL;
+ }
+ if (pInbufOps != NULL) {
+ Exynos_OSAL_Free(pInbufOps);
+ pMpeg4Enc->hMFCMpeg4Handle.pInbufOps = NULL;
+ }
+ if (pOutbufOps != NULL) {
+ Exynos_OSAL_Free(pOutbufOps);
+ pMpeg4Enc->hMFCMpeg4Handle.pOutbufOps = NULL;
+ }
+ }
+
FunctionOut();
return ret;
Exynos_OSAL_QueueTerminate(&pExynosInputPort->codecBufferQ);
Exynos_OSAL_SemaphoreTerminate(pExynosInputPort->codecSemID);
} else if (pExynosInputPort->bufferProcessType == BUFFER_SHARE) {
-
/*************/
/* TBD */
/*************/
Exynos_OSAL_QueueTerminate(&pExynosOutputPort->codecBufferQ);
Exynos_OSAL_SemaphoreTerminate(pExynosOutputPort->codecSemID);
} else if (pExynosOutputPort->bufferProcessType == BUFFER_SHARE) {
-
/*************/
/* TBD */
/*************/