diff options
| author | Andreas Huber <andih@google.com> | 2011-11-10 08:47:25 -0800 | 
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-11-10 08:47:25 -0800 | 
| commit | d57a4ddd1ab42401c4a011df7e9577b843de1b68 (patch) | |
| tree | 3f6108bdf416cfa0a84d6611c747464c41032576 /media | |
| parent | b5d340314ac6da461f15fe4d1db996ae28770d67 (diff) | |
| parent | 2961a85f5f00343c115ac8e5dc17de631694fb6e (diff) | |
| download | frameworks_av-d57a4ddd1ab42401c4a011df7e9577b843de1b68.zip frameworks_av-d57a4ddd1ab42401c4a011df7e9577b843de1b68.tar.gz frameworks_av-d57a4ddd1ab42401c4a011df7e9577b843de1b68.tar.bz2  | |
Merge "There's no point in trying to continue to decode after an error was signalled." into ics-mr1
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();  | 
