diff options
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayer.cpp')
| -rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayer.cpp | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp index 7218faf..6b40528 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp @@ -235,11 +235,17 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { instantiateDecoder(true, &mAudioDecoder); } - if (!mSource->feedMoreTSData()) { + status_t err; + if ((err = mSource->feedMoreTSData()) != OK) { if (mAudioDecoder == NULL && mVideoDecoder == NULL) { // We're not currently decoding anything (no audio or // video tracks found) and we just ran out of input data. - notifyListener(MEDIA_PLAYBACK_COMPLETE, 0, 0); + + if (err == ERROR_END_OF_STREAM) { + notifyListener(MEDIA_PLAYBACK_COMPLETE, 0, 0); + } else { + notifyListener(MEDIA_ERROR, MEDIA_ERROR_UNKNOWN, err); + } } break; } @@ -267,12 +273,23 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { audio, codecRequest); if (err == -EWOULDBLOCK) { - if (mSource->feedMoreTSData()) { + if (mSource->feedMoreTSData() == OK) { msg->post(); } } } else if (what == ACodec::kWhatEOS) { - mRenderer->queueEOS(audio, ERROR_END_OF_STREAM); + int32_t err; + CHECK(codecRequest->findInt32("err", &err)); + + if (err == ERROR_END_OF_STREAM) { + LOGV("got %s decoder EOS", audio ? "audio" : "video"); + } else { + LOGV("got %s decoder EOS w/ error %d", + audio ? "audio" : "video", + err); + } + + mRenderer->queueEOS(audio, err); } else if (what == ACodec::kWhatFlushCompleted) { bool needShutdown; @@ -397,7 +414,7 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { if (finalResult == ERROR_END_OF_STREAM) { LOGV("reached %s EOS", audio ? "audio" : "video"); } else { - LOGE("%s track encountered an error (0x%08x)", + LOGE("%s track encountered an error (%d)", audio ? "audio" : "video", finalResult); notifyListener( |
