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

Commit 48b2e3ab authored by Wei Jia's avatar Wei Jia Committed by android-build-merger
Browse files

ATSParser: dequeue pesStartOffset for every access unit. am: b08d83e9

am: 2337c0b7

Change-Id: I5747949aff8b66673f53e69953b0b29bfe54a35b
parents 38b79057 2337c0b7
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -701,6 +701,10 @@ status_t ATSParser::Stream::parse(
        }

        mPayloadStarted = true;
        // There should be at most 2 elements in |mPesStartOffsets|.
        while (mPesStartOffsets.size() >= 2) {
            mPesStartOffsets.erase(mPesStartOffsets.begin());
        }
        mPesStartOffsets.push_back(offset);
    }

@@ -1104,15 +1108,20 @@ void ATSParser::Stream::onPayloadData(
            mSource->queueAccessUnit(accessUnit);
        }

        if ((event != NULL) && !found && mQueue->getFormat() != NULL) {
        // Every access unit has a pesStartOffset queued in |mPesStartOffsets|.
        off64_t pesStartOffset = -1;
        if (!mPesStartOffsets.empty()) {
            pesStartOffset = *mPesStartOffsets.begin();
            mPesStartOffsets.erase(mPesStartOffsets.begin());
        }

        if (pesStartOffset >= 0 && (event != NULL) && !found && mQueue->getFormat() != NULL) {
            int32_t sync = 0;
            if (accessUnit->meta()->findInt32("isSync", &sync) && sync) {
                int64_t timeUs;
                if (accessUnit->meta()->findInt64("timeUs", &timeUs)) {
                    found = true;
                    off64_t pesStartOffset = *mPesStartOffsets.begin();
                    event->init(pesStartOffset, mSource, timeUs);
                    mPesStartOffsets.erase(mPesStartOffsets.begin());
                }
            }
        }