summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2010-03-26 15:35:29 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-03-26 15:35:29 -0700
commitf9e4eb44a873e80760a53931b1d4ee1dbe737d32 (patch)
treea4bad6d039240135df26b814738bbdbd472a3291
parent13d8f587668768239dd629d09aa085ebcbb95f40 (diff)
parent7eb36421a3d287a51bd6be02a30bafd91d90ea4b (diff)
downloadomap3-f9e4eb44a873e80760a53931b1d4ee1dbe737d32.tar.gz
am 7eb36421: am 5e41d631: Fix another EOS lost bug
-rw-r--r--omx/video/src/openmax_il/video_decode/inc/OMX_VideoDec_Utils.h3
-rw-r--r--omx/video/src/openmax_il/video_decode/src/OMX_VideoDec_Utils.c9
2 files changed, 12 insertions, 0 deletions
diff --git a/omx/video/src/openmax_il/video_decode/inc/OMX_VideoDec_Utils.h b/omx/video/src/openmax_il/video_decode/inc/OMX_VideoDec_Utils.h
index 8a538d8..89d94c5 100644
--- a/omx/video/src/openmax_il/video_decode/inc/OMX_VideoDec_Utils.h
+++ b/omx/video/src/openmax_il/video_decode/inc/OMX_VideoDec_Utils.h
@@ -1020,6 +1020,9 @@ typedef struct VIDDEC_COMPONENT_PRIVATE
pthread_mutex_t mutexStateChangeRequest;
pthread_cond_t StateChangeCondition;
+ // Signal first buffer after config data should have EOS flag
+ OMX_BOOL firstBufferEos;
+
} VIDDEC_COMPONENT_PRIVATE;
/*****************macro definitions*********************/
diff --git a/omx/video/src/openmax_il/video_decode/src/OMX_VideoDec_Utils.c b/omx/video/src/openmax_il/video_decode/src/OMX_VideoDec_Utils.c
index 9d9ae69..bb6e591 100644
--- a/omx/video/src/openmax_il/video_decode/src/OMX_VideoDec_Utils.c
+++ b/omx/video/src/openmax_il/video_decode/src/OMX_VideoDec_Utils.c
@@ -1169,6 +1169,7 @@ OMX_ERRORTYPE VIDDEC_Load_Defaults (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate,
pComponentPrivate->bDynamicConfigurationInProgress = OMX_FALSE;
pComponentPrivate->nInternalConfigBufferFilledAVC = 0;
pComponentPrivate->eMBErrorReport.bEnabled = OMX_FALSE;
+ pComponentPrivate->firstBufferEos = OMX_FALSE;
break;
case VIDDEC_INIT_IDLEEXECUTING:
@@ -5969,6 +5970,9 @@ OMX_ERRORTYPE VIDDEC_HandleDataBuf_FromApp(VIDDEC_COMPONENT_PRIVATE *pComponentP
/* Verify if first buffer as been stored.
* Handle case were only one frame is decoded */
if(pComponentPrivate->eFirstBuffer.bSaveFirstBuffer){
+ if (pBuffHead->nFlags & OMX_BUFFERFLAG_EOS){
+ pComponentPrivate->firstBufferEos = OMX_TRUE;
+ }
eError = VIDDEC_CopyBuffer(pComponentPrivate, pBuffHead);
if (eError != OMX_ErrorNone) {
OMX_PRDSP4(pComponentPrivate->dbg, "VIDDEC_HandleDataBuf_FromApp: VIDDEC_CopyBuffer()= 0x%x\n", eError);
@@ -6688,6 +6692,11 @@ OMX_ERRORTYPE VIDDEC_HandleDataBuf_FromDsp(VIDDEC_COMPONENT_PRIVATE *pComponentP
}
else {
if(pBuffHead != NULL) {
+ if (pComponentPrivate->firstBufferEos){
+ pComponentPrivate->firstBufferEos = OMX_FALSE;
+ pBuffHead->nFlags |= OMX_BUFFERFLAG_EOS;
+ pBuffHead->nFilledLen = 0;
+ }
#ifdef __PERF_INSTRUMENTATION__
PERF_SendingFrame(pComponentPrivate->pPERFcomp,
pBuffHead->pBuffer,