summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/mp4
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2012-12-11 15:34:18 -0800
committerMarco Nelissen <marcone@google.com>2012-12-12 09:18:13 -0800
commit1457bf40071bbae83086bc67138caa59c1057248 (patch)
treebd456e5a5c6e216125de4fdf1925ee245a922d22 /media/libstagefright/mp4
parente1cf3c41bd27b5ab7d8e70ef8dd6fcd0f5453568 (diff)
downloadframeworks_av-1457bf40071bbae83086bc67138caa59c1057248.zip
frameworks_av-1457bf40071bbae83086bc67138caa59c1057248.tar.gz
frameworks_av-1457bf40071bbae83086bc67138caa59c1057248.tar.bz2
Fix timestamps after seek
Ensure buffers are correctly timestamped after a seek. Change-Id: I7d76689138e4f95c0ceb9fb7a4c4d42c48568212
Diffstat (limited to 'media/libstagefright/mp4')
-rw-r--r--media/libstagefright/mp4/FragmentedMP4Parser.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/media/libstagefright/mp4/FragmentedMP4Parser.cpp b/media/libstagefright/mp4/FragmentedMP4Parser.cpp
index 54c3d63..7aa5be9 100644
--- a/media/libstagefright/mp4/FragmentedMP4Parser.cpp
+++ b/media/libstagefright/mp4/FragmentedMP4Parser.cpp
@@ -319,8 +319,7 @@ status_t FragmentedMP4Parser::onSeekTo(bool wantAudio, int64_t position) {
off_t totalOffset = mFirstMoofOffset;
for (int i = 0; i < numSidxEntries; i++) {
const SidxEntry *se = &info->mSidx[i];
- totalTime += se->mDurationUs;
- if (totalTime > position) {
+ if (totalTime + se->mDurationUs > position) {
mBuffer->setRange(0,0);
mBufferPos = totalOffset;
if (mFinalResult == ERROR_END_OF_STREAM) {
@@ -329,9 +328,10 @@ status_t FragmentedMP4Parser::onSeekTo(bool wantAudio, int64_t position) {
resumeIfNecessary();
}
info->mFragments.clear();
- info->mDecodingTime = position * info->mMediaTimeScale / 1000000ll;
+ info->mDecodingTime = totalTime * info->mMediaTimeScale / 1000000ll;
return OK;
}
+ totalTime += se->mDurationUs;
totalOffset += se->mSize;
}
}