diff options
author | sayeed99 <sayeed.afridi2009@gmail.com> | 2017-03-07 11:08:06 +0530 |
---|---|---|
committer | sayeed99 <sayeed.afridi2009@gmail.com> | 2017-03-07 11:08:06 +0530 |
commit | 904d128eb2c9c6baea3cd2a2757a648fab5e4137 (patch) | |
tree | 77199fa61f9bbcf1b31f767a051e86e649a71b31 | |
parent | 5abed81bb67fcab14b4e848bb3c099939f2575b1 (diff) | |
download | android_hardware_intel_common_omx-components-cm-14.1_old.tar.gz android_hardware_intel_common_omx-components-cm-14.1_old.tar.bz2 android_hardware_intel_common_omx-components-cm-14.1_old.zip |
omx-ccomponents : Zenfone 2 cannot properly utilize flushmodecm-14.1_old
switch to test HandleFormatchange() directly instead of testing flushmode
Change-Id: I349eb264067ef75dd9307f6b7afb0b95c4ba03cb
-rwxr-xr-x | videocodec/OMXVideoDecoderBase.cpp | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/videocodec/OMXVideoDecoderBase.cpp b/videocodec/OMXVideoDecoderBase.cpp index 7d61200..b53ec5c 100755 --- a/videocodec/OMXVideoDecoderBase.cpp +++ b/videocodec/OMXVideoDecoderBase.cpp @@ -356,11 +356,12 @@ OMX_ERRORTYPE OMXVideoDecoderBase::ProcessorProcess( if (isResolutionChange) { HandleFormatChange(); } - +#ifndef ASUS_ZENFONE2_LP_BLOBS if (mFlushMode) { LOGI("in mFlushMode, do HandleFormatChange."); HandleFormatChange(); } else { +#endif // Actually, if mAPMode is set, mWorkingMode should be GRAPHICBUFFER_MODE. if (((mAPMode == METADATA_MODE) && (mWorkingMode == GRAPHICBUFFER_MODE)) && mFormatChanged) { if (((*pBuffers[OUTPORT_INDEX])->nFlags & OMX_BUFFERFLAG_EOS) @@ -368,6 +369,11 @@ OMX_ERRORTYPE OMXVideoDecoderBase::ProcessorProcess( || (mVideoDecoder->getOutputQueueLength() == 0) #endif ) { +#ifdef ASUS_ZENFONE2_LP_BLOBS + HandleFormatChange(); + } + } +#else // Format changed, set mFlushMode, clear eos mFlushMode = true; mFormatChanged = false; @@ -375,6 +381,7 @@ OMX_ERRORTYPE OMXVideoDecoderBase::ProcessorProcess( } } } +#endif // TODO: continue decoding return ret; @@ -452,16 +459,14 @@ OMX_ERRORTYPE OMXVideoDecoderBase::ProcessorProcess( if (isResolutionChange) { HandleFormatChange(); } - +#ifndef ASUS_ZENFONE2_LP_BLOBS if (mFlushMode) { LOGI("in mFlushMode, do HandleFormatChange."); HandleFormatChange(); } else { if (((mAPMode == METADATA_MODE) && (mWorkingMode == GRAPHICBUFFER_MODE)) && mFormatChanged) { if (((*pBuffers[OUTPORT_INDEX])->nFlags & OMX_BUFFERFLAG_EOS) -#ifndef ASUS_ZENFONE2_LP_BLOBS || (mVideoDecoder->getOutputQueueLength() == 0) -#endif ) { // Format changed, set mFlushMode, clear eos. mFlushMode = true; @@ -470,6 +475,14 @@ OMX_ERRORTYPE OMXVideoDecoderBase::ProcessorProcess( } } } +#else + if (((mAPMode == METADATA_MODE) && (mWorkingMode == GRAPHICBUFFER_MODE)) && mFormatChanged) { + if (((*pBuffers[OUTPORT_INDEX])->nFlags & OMX_BUFFERFLAG_EOS) + ) { + HandleFormatChange(); + } + } +#endif bool inputEoS = ((*pBuffers[INPORT_INDEX])->nFlags & OMX_BUFFERFLAG_EOS); bool outputEoS = ((*pBuffers[OUTPORT_INDEX])->nFlags & OMX_BUFFERFLAG_EOS); @@ -717,12 +730,13 @@ OMX_ERRORTYPE OMXVideoDecoderBase::FillRenderBuffer(OMX_BUFFERHEADERTYPE **pBuff //pthread_mutex_lock(&mSerializationLock); const VideoRenderBuffer *renderBuffer = NULL; //pthread_mutex_unlock(&mSerializationLock); - +#ifndef ASUS_ZENFONE2_LP_BLOBS // in mFlushMode, provide empty buffer. if (mFlushMode) { buffer->nFilledLen = 0; return OMX_ErrorNone; } +#endif if (((mAPMode == METADATA_MODE) && (mWorkingMode == GRAPHICBUFFER_MODE)) && mFormatChanged) { renderBuffer = mVideoDecoder->getOutput(true, ErrBufPtr); |