omx: handle csc errors
Change-Id: I652b6edb9687ec063ec2b110c70031e821d34e7f
Signed-off-by: Greg Hackmann <ghackmann@google.com>
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 f863f5c..82ef205 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
@@ -301,8 +301,6 @@
}
#endif
- ret = OMX_TRUE;
-
EXIT:
FunctionOut();
@@ -405,18 +403,24 @@
Exynos_OSAL_Log(EXYNOS_LOG_TRACE, "exynos_checkInputFrame : OMX_TRUE");
if (((srcInputData->allocSize) - (srcInputData->dataLen)) >= copySize) {
- Exynos_CSC_InputData(pOMXComponent, srcInputData);
+ ret = Exynos_CSC_InputData(pOMXComponent, srcInputData);
+ if (ret) {
+ inputUseBuffer->dataLen -= copySize;
+ inputUseBuffer->remainDataLen -= copySize;
+ inputUseBuffer->usedDataLen += copySize;
- inputUseBuffer->dataLen -= copySize;
- inputUseBuffer->remainDataLen -= copySize;
- inputUseBuffer->usedDataLen += copySize;
+ srcInputData->dataLen += copySize;
+ srcInputData->remainDataLen += copySize;
- srcInputData->dataLen += copySize;
- srcInputData->remainDataLen += copySize;
-
- srcInputData->timeStamp = inputUseBuffer->timeStamp;
- srcInputData->nFlags = inputUseBuffer->nFlags;
- srcInputData->bufferHeader = inputUseBuffer->bufferHeader;
+ srcInputData->timeStamp = inputUseBuffer->timeStamp;
+ srcInputData->nFlags = inputUseBuffer->nFlags;
+ srcInputData->bufferHeader = inputUseBuffer->bufferHeader;
+ } else {
+ Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "Exynos_CSC_InputData() failure");
+ pExynosComponent->pCallbacks->EventHandler((OMX_HANDLETYPE)pOMXComponent,
+ pExynosComponent->callbackData, OMX_EventError,
+ OMX_ErrorUndefined, 0, NULL );
+ }
} else {
Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "input codec buffer is smaller than decoded input data size Out Length");
pExynosComponent->pCallbacks->EventHandler((OMX_HANDLETYPE)pOMXComponent,