diff options
| author | Liu Bolun <bolun.liu@intel.com> | 2013-12-02 11:11:04 +0800 |
|---|---|---|
| committer | Patrick Tjin <pattjin@google.com> | 2014-07-21 22:02:56 -0700 |
| commit | d7335ebe601f03f24d166e992b8c998e750908f6 (patch) | |
| tree | 4537f269b7cd7319cf6c9584309c8c211adc836f /videocodec/OMXVideoEncoderAVC.cpp | |
| parent | 34cc9692d2d8d0831527bed6465ec728751b9207 (diff) | |
| download | android_hardware_intel_common_omx-components-d7335ebe601f03f24d166e992b8c998e750908f6.tar.gz android_hardware_intel_common_omx-components-d7335ebe601f03f24d166e992b8c998e750908f6.tar.bz2 android_hardware_intel_common_omx-components-d7335ebe601f03f24d166e992b8c998e750908f6.zip | |
Add some pathes to fix CTS failed issue.
BZ: 153777
Due to async encode mode, add new judgement for processing EOS flag to avoid CTS test fail.
Change-Id: Id6b86ecbac6ad1cbafff9bb1ca20a05b05c31651
Signed-off-by: Liu Bolun <bolun.liu@intel.com>
Diffstat (limited to 'videocodec/OMXVideoEncoderAVC.cpp')
| -rwxr-xr-x | videocodec/OMXVideoEncoderAVC.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/videocodec/OMXVideoEncoderAVC.cpp b/videocodec/OMXVideoEncoderAVC.cpp index 5cf19e7..ad4c9b8 100755 --- a/videocodec/OMXVideoEncoderAVC.cpp +++ b/videocodec/OMXVideoEncoderAVC.cpp @@ -493,6 +493,11 @@ OMX_ERRORTYPE OMXVideoEncoderAVC::ProcessDataRetrieve( retains[INPORT_INDEX] = BUFFER_RETAIN_NOT_RETAIN; else if (mSyncEncoding) retains[INPORT_INDEX] = BUFFER_RETAIN_NOT_RETAIN; + else if ((buffers[INPORT_INDEX]->nFlags & OMX_BUFFERFLAG_EOS)&&(buffers[INPORT_INDEX]->nFilledLen == 0)) + { + retains[INPORT_INDEX] = BUFFER_RETAIN_GETAGAIN; + pInfo->EndOfEncode = true; + } else retains[INPORT_INDEX] = BUFFER_RETAIN_ACCUMULATE; //retain current frame mFrameOutputCount ++; @@ -556,6 +561,13 @@ OMX_ERRORTYPE OMXVideoEncoderAVC::ProcessorProcess( retains[INPORT_INDEX] = BUFFER_RETAIN_NOT_RETAIN; return OMX_ErrorNone; } + else if(inBuf.size == 0 && eInfo.EndOfEncode == true) + { + LOGE("The Input buf is just a empty EOS buffer, in Sync encode," "nothing to do, return with no error when EndofEncode is set\n"); + retains[INPORT_INDEX] = BUFFER_RETAIN_NOT_RETAIN; + retains[OUTPORT_INDEX] = BUFFER_RETAIN_NOT_RETAIN; + return OMX_ErrorNone; + } } else if(inBuf.size<=0 || inBuf.data == NULL) { LOGE("The Input buf size is 0 or buf is NULL, return with error\n"); return OMX_ErrorBadParameter; @@ -605,7 +617,7 @@ OMX_ERRORTYPE OMXVideoEncoderAVC::ProcessorProcess( /* Check EOE state, if yes, this is final encode frame, need to push this buffer again to call getOutput again for final output */ - if (mSyncEncoding == OMX_FALSE && eInfo.EndOfEncode && eInfo.EncodeComplete && eInfo.DataRetrieved) { + if (mSyncEncoding == OMX_FALSE && eInfo.EndOfEncode && eInfo.EncodeComplete && eInfo.DataRetrieved && (buffers[INPORT_INDEX]->nFilledLen != 0)) { eInfo.DataRetrieved = false; eInfo.EndOfEncode = false; retains[INPORT_INDEX] = BUFFER_RETAIN_GETAGAIN; |
