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

Commit 73be71d4 authored by Jinsuk Kim's avatar Jinsuk Kim Committed by Android (Google) Code Review
Browse files

Merge "mpeg2ts: keep the size of the sync points at most 5mb per a track" into mnc-dev

parents 14ae2c0d faf755df
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -264,8 +264,19 @@ status_t MPEG2TSExtractor::feedMore() {
    if (event.isInit()) {
        for (size_t i = 0; i < mSourceImpls.size(); ++i) {
            if (mSourceImpls[i].get() == event.getMediaSource().get()) {
                mSyncPoints.editItemAt(i).add(
                        event.getTimeUs(), event.getOffset());
                KeyedVector<int64_t, off64_t> *syncPoints = &mSyncPoints.editItemAt(i);
                syncPoints->add(event.getTimeUs(), event.getOffset());
                // We're keeping the size of the sync points at most 5mb per a track.
                size_t size = syncPoints->size();
                if (size >= 327680) {
                    int64_t firstTimeUs = syncPoints->keyAt(0);
                    int64_t lastTimeUs = syncPoints->keyAt(size - 1);
                    if (event.getTimeUs() - firstTimeUs > lastTimeUs - event.getTimeUs()) {
                        syncPoints->removeItemsAt(0, 4096);
                    } else {
                        syncPoints->removeItemsAt(size - 4096, 4096);
                    }
                }
                break;
            }
        }