Fix SEC-OMX, for resolve two bugs.

related-to-bug: 5619226: ANR in com.google.android.videoeditor.
related-to-bug: 5771270 [Crespo] Cannot play video when captured with time elapsed settings.

Change-Id: I40f85f220b6a821d7b06cae73013ee334bb951b0
Signed-off-by: SeungBeom Kim <sbcrux.kim@samsung.com>
diff --git a/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/SEC_OMX_H264dec.c b/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/SEC_OMX_H264dec.c
index 07e1a89..cd19cd1 100644
--- a/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/SEC_OMX_H264dec.c
+++ b/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/SEC_OMX_H264dec.c
@@ -1035,7 +1035,7 @@
         if ((SsbSipMfcDecGetConfig(pH264Dec->hMFCH264Handle.hMFCHandle, MFC_DEC_GETCONF_FRAME_TAG, &indexTimestamp) != MFC_RET_OK) ||
             (((indexTimestamp < 0) || (indexTimestamp >= MAX_TIMESTAMP)))) {
             pOutputData->timeStamp = pInputData->timeStamp;
-            pOutputData->nFlags = pInputData->nFlags;
+            pOutputData->nFlags = (pInputData->nFlags & (~OMX_BUFFERFLAG_EOS));
         } else {
             pOutputData->timeStamp = pSECComponent->timeStamp[indexTimestamp];
             pOutputData->nFlags = pSECComponent->nFlags[indexTimestamp];
@@ -1055,7 +1055,7 @@
 
         if(status == MFC_GETOUTBUF_DECODING_ONLY) {
             if (((pInputData->nFlags & OMX_BUFFERFLAG_EOS) != OMX_BUFFERFLAG_EOS) &&
-                (pSECComponent->bSaveFlagEOS == OMX_TRUE)) {
+                ((pSECComponent->bSaveFlagEOS == OMX_TRUE) || (pSECComponent->getAllDelayBuffer == OMX_TRUE))) {
                 pInputData->nFlags |= OMX_BUFFERFLAG_EOS;
                 pSECComponent->getAllDelayBuffer = OMX_TRUE;
                 ret = OMX_ErrorInputDataDecodeYet;
@@ -1074,6 +1074,8 @@
         } else
 #endif
         if ((pInputData->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS) {
+            //setConfVal = 1;
+            //SsbSipMfcDecSetConfig(pH264Dec->hMFCH264Handle.hMFCHandle, MFC_DEC_SETCONF_IS_LAST_FRAME, &setConfVal);
             pInputData->nFlags = (pOutputData->nFlags & (~OMX_BUFFERFLAG_EOS));
             pSECComponent->getAllDelayBuffer = OMX_TRUE;
             ret = OMX_ErrorInputDataDecodeYet;
@@ -1093,6 +1095,7 @@
         }
         if ((pH264Dec->bFirstFrame == OMX_TRUE) &&
             ((pOutputData->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS)) {
+            pInputData->nFlags = (pInputData->nFlags | OMX_BUFFERFLAG_EOS);
             pOutputData->nFlags = (pOutputData->nFlags & (~OMX_BUFFERFLAG_EOS));
         }
 
diff --git a/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/SEC_OMX_Mpeg4dec.c b/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/SEC_OMX_Mpeg4dec.c
index 052a4c9..dc99826 100644
--- a/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/SEC_OMX_Mpeg4dec.c
+++ b/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/SEC_OMX_Mpeg4dec.c
@@ -1180,7 +1180,7 @@
         if ((SsbSipMfcDecGetConfig(hMFCHandle, MFC_DEC_GETCONF_FRAME_TAG, &indexTimestamp) != MFC_RET_OK) ||
             (((indexTimestamp < 0) || (indexTimestamp >= MAX_TIMESTAMP)))) {
             pOutputData->timeStamp = pInputData->timeStamp;
-            pOutputData->nFlags = pInputData->nFlags;
+            pOutputData->nFlags = (pInputData->nFlags & (~OMX_BUFFERFLAG_EOS));
         } else {
             pOutputData->timeStamp = pSECComponent->timeStamp[indexTimestamp];
             pOutputData->nFlags = pSECComponent->nFlags[indexTimestamp];
@@ -1200,7 +1200,7 @@
 
         if (status == MFC_GETOUTBUF_DECODING_ONLY) {
             if (((pInputData->nFlags & OMX_BUFFERFLAG_EOS) != OMX_BUFFERFLAG_EOS) &&
-                (pSECComponent->bSaveFlagEOS == OMX_TRUE)) {
+                ((pSECComponent->bSaveFlagEOS == OMX_TRUE) || (pSECComponent->getAllDelayBuffer == OMX_TRUE))) {
                 pInputData->nFlags |= OMX_BUFFERFLAG_EOS;
                 pSECComponent->getAllDelayBuffer = OMX_TRUE;
                 ret = OMX_ErrorInputDataDecodeYet;
@@ -1219,6 +1219,8 @@
         } else
 #endif
         if ((pInputData->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS) {
+            //configValue = 1;
+            //SsbSipMfcDecSetConfig(pMpeg4Dec->hMFCMpeg4Handle.hMFCHandle, MFC_DEC_SETCONF_IS_LAST_FRAME, &configValue);
             pInputData->nFlags = (pOutputData->nFlags & (~OMX_BUFFERFLAG_EOS));
             pSECComponent->getAllDelayBuffer = OMX_TRUE;
             ret = OMX_ErrorInputDataDecodeYet;
@@ -1238,6 +1240,7 @@
         }
         if ((pMpeg4Dec->bFirstFrame == OMX_TRUE) &&
             ((pOutputData->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS)) {
+            pInputData->nFlags = (pInputData->nFlags | OMX_BUFFERFLAG_EOS);
             pOutputData->nFlags = (pOutputData->nFlags & (~OMX_BUFFERFLAG_EOS));
         }