Change DPB setting scheme on buffer shared mode for init and buffer reconfigure.
In the case of DPB buffer setting to MFC FW before incomming buffer to OpenMAX component,
Need for the Improved stability of buffer processing.
Depends On
- Change-Id: If008de62a40baa262085fcf9dbadfe4b80ac2619
Change-Id: Iae6843dfc23708f4b80faa1fceeeccef09148482
Signed-off-by: SeungBeom Kim <sbcrux.kim@samsung.com>
pOutbufOps->Enqueue(hMFCHandle, (unsigned char **)pVideoDec->pMFCDecOutputBuffer[i]->pVirAddr,
(unsigned int *)dataLen, MFC_OUTPUT_BUFFER_PLANE, NULL);
}
+
+ if (pOutbufOps->Run(hMFCHandle) != VIDEO_ERROR_NONE) {
+ Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "Failed to run output buffer");
+ ret = OMX_ErrorInsufficientResources;
+ goto EXIT;
+ }
} else if (pExynosOutputPort->bufferProcessType & BUFFER_SHARE) {
ExynosVideoPlane planes[MFC_OUTPUT_BUFFER_PLANE];
int plane;
pOutbufOps->Enqueue(hMFCHandle, (unsigned char **)pExynosOutputPort->extendBufferHeader[i].pYUVBuf,
(unsigned int *)dataLen, MFC_OUTPUT_BUFFER_PLANE, NULL);
}
+
+ if (pOutbufOps->Apply_RegisteredBuffer(hMFCHandle) != VIDEO_ERROR_NONE) {
+ Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "Failed to Apply output buffer");
+ ret = OMX_ErrorHardware;
+ goto EXIT;
+ }
} else {
ret = OMX_ErrorNotImplemented;
goto EXIT;
#endif
}
- if (pOutbufOps->Run(hMFCHandle) != VIDEO_ERROR_NONE) {
- Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "Failed to run output buffer");
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
-
- if (pExynosOutputPort->bufferProcessType & BUFFER_SHARE) {
- H264CodecStop(pOMXComponent, OUTPUT_PORT_INDEX);
- }
pH264Dec->hMFCH264Handle.bConfiguredMFCDst = OMX_TRUE;
ret = OMX_ErrorNone;
pOutbufOps->Enqueue(hMFCHandle, (unsigned char **)pVideoDec->pMFCDecOutputBuffer[i]->pVirAddr,
(unsigned int *)dataLen, MFC_OUTPUT_BUFFER_PLANE, NULL);
}
+
+ if (pOutbufOps->Run(hMFCHandle) != VIDEO_ERROR_NONE) {
+ Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "Failed to run output buffer");
+ ret = OMX_ErrorInsufficientResources;
+ goto EXIT;
+ }
} else if (pExynosOutputPort->bufferProcessType & BUFFER_SHARE) {
ExynosVideoPlane planes[MFC_OUTPUT_BUFFER_PLANE];
int plane;
pOutbufOps->Enqueue(hMFCHandle, (unsigned char **)pExynosOutputPort->extendBufferHeader[i].pYUVBuf,
(unsigned int *)dataLen, MFC_OUTPUT_BUFFER_PLANE, NULL);
}
+
+ if (pOutbufOps->Apply_RegisteredBuffer(hMFCHandle) != VIDEO_ERROR_NONE) {
+ Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "Failed to Apply output buffer");
+ ret = OMX_ErrorHardware;
+ goto EXIT;
+ }
} else {
ret = OMX_ErrorNotImplemented;
goto EXIT;
#endif
}
- if (pOutbufOps->Run(hMFCHandle) != VIDEO_ERROR_NONE) {
- Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "Failed to run output buffer");
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
-
- if (pExynosOutputPort->bufferProcessType & BUFFER_SHARE) {
- Mpeg2CodecStop (pOMXComponent, OUTPUT_PORT_INDEX);
- }
pMpeg2Dec->hMFCMpeg2Handle.bConfiguredMFCDst = OMX_TRUE;
ret = OMX_ErrorNone;
pOutbufOps->Enqueue(hMFCHandle, (unsigned char **)pVideoDec->pMFCDecOutputBuffer[i]->pVirAddr,
(unsigned int *)dataLen, MFC_OUTPUT_BUFFER_PLANE, NULL);
}
+
+ if (pOutbufOps->Run(hMFCHandle) != VIDEO_ERROR_NONE) {
+ Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "Failed to run output buffer");
+ ret = OMX_ErrorInsufficientResources;
+ goto EXIT;
+ }
} else if (pExynosOutputPort->bufferProcessType & BUFFER_SHARE) {
ExynosVideoPlane planes[MFC_OUTPUT_BUFFER_PLANE];
int plane;
pOutbufOps->Enqueue(hMFCHandle, (unsigned char **)pExynosOutputPort->extendBufferHeader[i].pYUVBuf,
(unsigned int *)dataLen, MFC_OUTPUT_BUFFER_PLANE, NULL);
}
+
+ if (pOutbufOps->Apply_RegisteredBuffer(hMFCHandle) != VIDEO_ERROR_NONE) {
+ Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "Failed to Apply output buffer");
+ ret = OMX_ErrorHardware;
+ goto EXIT;
+ }
} else {
ret = OMX_ErrorNotImplemented;
goto EXIT;
#endif
}
- if (pOutbufOps->Run(hMFCHandle) != VIDEO_ERROR_NONE) {
- Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "Failed to run output buffer");
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
-
- if (pExynosOutputPort->bufferProcessType & BUFFER_SHARE) {
- Mpeg4CodecStop(pOMXComponent, OUTPUT_PORT_INDEX);
- }
pMpeg4Dec->hMFCMpeg4Handle.bConfiguredMFCDst = OMX_TRUE;
ret = OMX_ErrorNone;
pOutbufOps->Enqueue(hMFCHandle, (unsigned char **)pVideoDec->pMFCDecOutputBuffer[i]->pVirAddr,
(unsigned int *)dataLen, MFC_OUTPUT_BUFFER_PLANE, NULL);
}
+
+ if (pOutbufOps->Run(hMFCHandle) != VIDEO_ERROR_NONE) {
+ Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "Failed to run output buffer");
+ ret = OMX_ErrorInsufficientResources;
+ goto EXIT;
+ }
} else if (pExynosOutputPort->bufferProcessType & BUFFER_SHARE) {
ExynosVideoPlane planes[MFC_OUTPUT_BUFFER_PLANE];
int plane;
pOutbufOps->Enqueue(hMFCHandle, (unsigned char **)pExynosOutputPort->extendBufferHeader[i].pYUVBuf,
(unsigned int *)dataLen, MFC_OUTPUT_BUFFER_PLANE, NULL);
}
+
+ if (pOutbufOps->Apply_RegisteredBuffer(hMFCHandle) != VIDEO_ERROR_NONE) {
+ Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "Failed to Apply output buffer");
+ ret = OMX_ErrorHardware;
+ goto EXIT;
+ }
} else {
ret = OMX_ErrorNotImplemented;
goto EXIT;
#endif
}
- if (pOutbufOps->Run(hMFCHandle) != VIDEO_ERROR_NONE) {
- Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "Failed to run output buffer");
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
-
- if (pExynosOutputPort->bufferProcessType & BUFFER_SHARE) {
- WmvCodecStop (pOMXComponent, OUTPUT_PORT_INDEX);
- }
pWmvDec->hMFCWmvHandle.bConfiguredMFCDst = OMX_TRUE;
ret = OMX_ErrorNone;
pOutbufOps->Enqueue(hMFCHandle, (unsigned char **)pVideoDec->pMFCDecOutputBuffer[i]->pVirAddr,
(unsigned int *)dataLen, MFC_OUTPUT_BUFFER_PLANE, NULL);
}
+
+ if (pOutbufOps->Run(hMFCHandle) != VIDEO_ERROR_NONE) {
+ Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "Failed to run output buffer");
+ ret = OMX_ErrorInsufficientResources;
+ goto EXIT;
+ }
} else if (pExynosOutputPort->bufferProcessType & BUFFER_SHARE) {
ExynosVideoPlane planes[MFC_OUTPUT_BUFFER_PLANE];
int plane;
pOutbufOps->Enqueue(hMFCHandle, (unsigned char **)pExynosOutputPort->extendBufferHeader[i].pYUVBuf,
(unsigned int *)dataLen, MFC_OUTPUT_BUFFER_PLANE, NULL);
}
+
+ if (pOutbufOps->Apply_RegisteredBuffer(hMFCHandle) != VIDEO_ERROR_NONE) {
+ Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "Failed to Apply output buffer");
+ ret = OMX_ErrorHardware;
+ goto EXIT;
+ }
} else {
ret = OMX_ErrorNotImplemented;
goto EXIT;
#endif
}
- if (pOutbufOps->Run(hMFCHandle) != VIDEO_ERROR_NONE) {
- Exynos_OSAL_Log(EXYNOS_LOG_ERROR, "Failed to run output buffer");
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
-
- if (pExynosOutputPort->bufferProcessType & BUFFER_SHARE) {
- VP8CodecStop (pOMXComponent, OUTPUT_PORT_INDEX);
- }
pVp8Dec->hMFCVp8Handle.bConfiguredMFCDst = OMX_TRUE;
ret = OMX_ErrorNone;