diff options
author | Jaesung Chung <jaesung@google.com> | 2015-07-09 14:56:54 +0900 |
---|---|---|
committer | Jaesung Chung <jaesung@google.com> | 2015-07-09 06:31:37 +0000 |
commit | faf755df5654c6ea0080e2af39c3d6810c0a2f14 (patch) | |
tree | f7df95531369d0a3cd77c736f5d5d1778d65cacb /media/libstagefright/mpeg2ts | |
parent | 4b83fecfb551b4ab31e9bd87bc48063932e1a204 (diff) | |
download | frameworks_av-faf755df5654c6ea0080e2af39c3d6810c0a2f14.zip frameworks_av-faf755df5654c6ea0080e2af39c3d6810c0a2f14.tar.gz frameworks_av-faf755df5654c6ea0080e2af39c3d6810c0a2f14.tar.bz2 |
mpeg2ts: keep the size of the sync points at most 5mb per a track
Bug: 21901470
Change-Id: I1506d3c73a213ff29e3b0adb8b0a1e7571e583aa
Diffstat (limited to 'media/libstagefright/mpeg2ts')
-rw-r--r-- | media/libstagefright/mpeg2ts/MPEG2TSExtractor.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/media/libstagefright/mpeg2ts/MPEG2TSExtractor.cpp b/media/libstagefright/mpeg2ts/MPEG2TSExtractor.cpp index aae3e9f..cbe9673 100644 --- a/media/libstagefright/mpeg2ts/MPEG2TSExtractor.cpp +++ b/media/libstagefright/mpeg2ts/MPEG2TSExtractor.cpp @@ -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; } } |