Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c7708555 authored by Andreas Huber's avatar Andreas Huber
Browse files

Signal end of stream if no more fragments are going to be available.

Change-Id: I16696740d3551aa8a5ba904ec757c64b0ecd1307
parent faa88edb
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -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;
        }
+2 −0
Original line number Diff line number Diff line
@@ -157,6 +157,8 @@ private:

    uint32_t mCurrentTrackID;

    status_t mFinalResult;

    TrackFragmentHeaderInfo mTrackFragmentHeaderInfo;

    status_t onProceed();