vdec: fixed a problem about drop frame logic
authorTaehwan Kim <t_h.kim@samsung.com>
Mon, 29 Oct 2012 03:59:34 +0000 (12:59 +0900)
committerHuisung Kang <hs1218.kang@samsung.com>
Mon, 29 Oct 2012 04:54:21 +0000 (13:54 +0900)
After skeeing, If not exist startup code in the first frame,
can't escape the drop frame logic.

Change-Id: Ia095dbdd7cc1554a15adaac91bea7eeb8b577ee7
Signed-off-by: Taehwan Kim <t_h.kim@samsung.com>
Signed-off-by: Huisung Kang <hs1218.kang@samsung.com>
component/video/dec/Exynos_OMX_Vdec.c

index 224e8f67fae10b83df6798afe33a8f522fa21cb6..fb136f70ff1691483906902747bdd0f2dcd0599f 100644 (file)
@@ -461,8 +461,16 @@ OMX_BOOL Exynos_Postprocess_OutputData(OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_
                 Exynos_OSAL_Log(EXYNOS_LOG_TRACE, "drop frame after seeking", pExynosComponent);
                 if (exynosOutputPort->bufferProcessType & BUFFER_SHARE)
                     Exynos_OMX_FillThisBuffer(pOMXComponent, outputUseBuffer->bufferHeader);
-                ret = OMX_TRUE;
-                goto EXIT;
+
+                if (pExynosComponent->checkTimeStamp.startTimeStamp < dstOutputData->timeStamp) {
+                    pExynosComponent->checkTimeStamp.startTimeStamp = -19761123;
+                    pExynosComponent->checkTimeStamp.nStartFlags = 0x0;
+                    pExynosComponent->checkTimeStamp.needSetStartTimeStamp = OMX_FALSE;
+                    pExynosComponent->checkTimeStamp.needCheckStartTimeStamp = OMX_FALSE;
+                } else {
+                    ret = OMX_TRUE;
+                    goto EXIT;
+                }
             }
         } else if ((pExynosComponent->checkTimeStamp.needSetStartTimeStamp == OMX_TRUE)) {
             ret = OMX_TRUE;