diff options
author | Andreas Huber <andih@google.com> | 2011-11-10 19:39:34 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2011-11-10 19:39:34 +0000 |
commit | 2276b1774ace0fd739fea20e9a6c430a0a0e758e (patch) | |
tree | 2124abfc30616d3937fa67258f901909f1fa7771 /media | |
parent | 021d33817b88e00474a8ce6948777628ac7bbb70 (diff) | |
parent | ec04f4ac23e5fe8f90267d09ddda8c0aa684c147 (diff) | |
download | frameworks_base-2276b1774ace0fd739fea20e9a6c430a0a0e758e.zip frameworks_base-2276b1774ace0fd739fea20e9a6c430a0a0e758e.tar.gz frameworks_base-2276b1774ace0fd739fea20e9a6c430a0a0e758e.tar.bz2 |
am ec04f4ac: am 7c063cf9: Merge "There\'s no point in trying to continue to decode after an error was signalled." into ics-mr1
* commit 'ec04f4ac23e5fe8f90267d09ddda8c0aa684c147':
There's no point in trying to continue to decode after an error was signalled.
Diffstat (limited to 'media')
-rw-r--r-- | media/libstagefright/codecs/on2/h264dec/SoftAVC.cpp | 17 | ||||
-rw-r--r-- | media/libstagefright/codecs/on2/h264dec/SoftAVC.h | 2 |
2 files changed, 11 insertions, 8 deletions
diff --git a/media/libstagefright/codecs/on2/h264dec/SoftAVC.cpp b/media/libstagefright/codecs/on2/h264dec/SoftAVC.cpp index 740c957..dede3ac 100644 --- a/media/libstagefright/codecs/on2/h264dec/SoftAVC.cpp +++ b/media/libstagefright/codecs/on2/h264dec/SoftAVC.cpp @@ -76,7 +76,8 @@ SoftAVC::SoftAVC( mPicId(0), mHeadersDecoded(false), mEOSStatus(INPUT_DATA_AVAILABLE), - mOutputPortSettingsChange(NONE) { + mOutputPortSettingsChange(NONE), + mSignalledError(false) { initPorts(); CHECK_EQ(initDecoder(), (status_t)OK); } @@ -287,7 +288,7 @@ OMX_ERRORTYPE SoftAVC::getConfig( } void SoftAVC::onQueueFilled(OMX_U32 portIndex) { - if (mOutputPortSettingsChange != NONE) { + if (mSignalledError || mOutputPortSettingsChange != NONE) { return; } @@ -298,7 +299,6 @@ void SoftAVC::onQueueFilled(OMX_U32 portIndex) { List<BufferInfo *> &inQueue = getPortQueue(kInputPortIndex); List<BufferInfo *> &outQueue = getPortQueue(kOutputPortIndex); H264SwDecRet ret = H264SWDEC_PIC_RDY; - status_t err = OK; bool portSettingsChanged = false; while ((mEOSStatus != INPUT_DATA_AVAILABLE || !inQueue.empty()) && outQueue.size() == kNumOutputBuffers) { @@ -372,7 +372,12 @@ void SoftAVC::onQueueFilled(OMX_U32 portIndex) { inPicture.dataLen = 0; if (ret < 0) { LOGE("Decoder failed: %d", ret); - err = ERROR_MALFORMED; + + notify(OMX_EventError, OMX_ErrorUndefined, + ERROR_MALFORMED, NULL); + + mSignalledError = true; + return; } } } @@ -400,10 +405,6 @@ void SoftAVC::onQueueFilled(OMX_U32 portIndex) { uint8_t *data = (uint8_t *) decodedPicture.pOutputPicture; drainOneOutputBuffer(picId, data); } - - if (err != OK) { - notify(OMX_EventError, OMX_ErrorUndefined, err, NULL); - } } } diff --git a/media/libstagefright/codecs/on2/h264dec/SoftAVC.h b/media/libstagefright/codecs/on2/h264dec/SoftAVC.h index 1cc85e8..879b014 100644 --- a/media/libstagefright/codecs/on2/h264dec/SoftAVC.h +++ b/media/libstagefright/codecs/on2/h264dec/SoftAVC.h @@ -88,6 +88,8 @@ private: }; OutputPortSettingChange mOutputPortSettingsChange; + bool mSignalledError; + void initPorts(); status_t initDecoder(); void updatePortDefinitions(); |