summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/mpeg2ts
diff options
context:
space:
mode:
authorJaesung Chung <jaesung@google.com>2015-07-09 14:56:54 +0900
committerJaesung Chung <jaesung@google.com>2015-07-09 06:31:37 +0000
commitfaf755df5654c6ea0080e2af39c3d6810c0a2f14 (patch)
treef7df95531369d0a3cd77c736f5d5d1778d65cacb /media/libstagefright/mpeg2ts
parent4b83fecfb551b4ab31e9bd87bc48063932e1a204 (diff)
downloadframeworks_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.cpp15
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;
}
}