diff options
author | Andreas Huber <andih@google.com> | 2012-08-09 16:24:54 -0700 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2012-08-09 16:35:00 -0700 |
commit | c7708555ea7511aea684e00a55fb5309281540ce (patch) | |
tree | f3f8387559ca0a200e459b45a058fe5e5d2a7fab /media/libmediaplayerservice/nuplayer/mp4 | |
parent | faa88edb9df91b0e7725b0ee4c4fb5e92262b3d5 (diff) | |
download | frameworks_av-c7708555ea7511aea684e00a55fb5309281540ce.zip frameworks_av-c7708555ea7511aea684e00a55fb5309281540ce.tar.gz frameworks_av-c7708555ea7511aea684e00a55fb5309281540ce.tar.bz2 |
Signal end of stream if no more fragments are going to be available.
Change-Id: I16696740d3551aa8a5ba904ec757c64b0ecd1307
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/mp4')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/mp4/Parser.cpp | 14 | ||||
-rw-r--r-- | media/libmediaplayerservice/nuplayer/mp4/Parser.h | 2 |
2 files changed, 15 insertions, 1 deletions
diff --git a/media/libmediaplayerservice/nuplayer/mp4/Parser.cpp b/media/libmediaplayerservice/nuplayer/mp4/Parser.cpp index 7938fa4..6850842 100644 --- a/media/libmediaplayerservice/nuplayer/mp4/Parser.cpp +++ b/media/libmediaplayerservice/nuplayer/mp4/Parser.cpp @@ -144,7 +144,8 @@ struct FileSource : public Parser::Source { Parser::Parser() : mBufferPos(0), - mSuspended(false) { + mSuspended(false), + mFinalResult(OK) { } Parser::~Parser() { @@ -292,6 +293,13 @@ void Parser::onMessageReceived(const sp<AMessage> &msg) { if (n < (ssize_t)needed) { ALOGI("%s", "Reached EOF"); + if (n < 0) { + mFinalResult = n; + } else if (n == 0) { + mFinalResult = ERROR_END_OF_STREAM; + } else { + mFinalResult = ERROR_IO; + } } else { mBuffer->setRange(0, mBuffer->size() + n); (new AMessage(kWhatProceed, id()))->post(); @@ -593,6 +601,10 @@ status_t Parser::getSample( TrackInfo *info, sp<TrackFragment> *fragment, SampleInfo *sampleInfo) { for (;;) { if (info->mFragments.empty()) { + if (mFinalResult != OK) { + return mFinalResult; + } + resumeIfNecessary(); return -EWOULDBLOCK; } diff --git a/media/libmediaplayerservice/nuplayer/mp4/Parser.h b/media/libmediaplayerservice/nuplayer/mp4/Parser.h index 50c96bb..c8f9ad4 100644 --- a/media/libmediaplayerservice/nuplayer/mp4/Parser.h +++ b/media/libmediaplayerservice/nuplayer/mp4/Parser.h @@ -157,6 +157,8 @@ private: uint32_t mCurrentTrackID; + status_t mFinalResult; + TrackFragmentHeaderInfo mTrackFragmentHeaderInfo; status_t onProceed(); |