diff options
Diffstat (limited to 'media')
| -rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp | 2 | ||||
| -rw-r--r-- | media/libstagefright/codecs/on2/h264dec/SoftAVC.cpp | 17 | ||||
| -rw-r--r-- | media/libstagefright/codecs/on2/h264dec/SoftAVC.h | 2 | 
3 files changed, 12 insertions, 9 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp index bf19040..640e9fa 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp @@ -381,7 +381,7 @@ void NuPlayer::Renderer::onDrainVideoQueue() {          LOGV("rendering video at media time %.2f secs", mediaTimeUs / 1E6);      } -    entry->mNotifyConsumed->setInt32("render", true); +    entry->mNotifyConsumed->setInt32("render", !tooLate);      entry->mNotifyConsumed->post();      mVideoQueue.erase(mVideoQueue.begin());      entry = NULL; 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();  | 
