diff options
author | James Dong <jdong@google.com> | 2011-08-09 11:14:57 -0700 |
---|---|---|
committer | James Dong <jdong@google.com> | 2011-08-09 11:17:49 -0700 |
commit | 5a217fba010e801c255503602bda4b86ac5a6ac9 (patch) | |
tree | b9e968468924efd638b967f7f33ad151f8283514 /media/libstagefright/MPEG4Writer.cpp | |
parent | beccb75d0c511950fb59500b05a591942d5c4751 (diff) | |
download | frameworks_av-5a217fba010e801c255503602bda4b86ac5a6ac9.zip frameworks_av-5a217fba010e801c255503602bda4b86ac5a6ac9.tar.gz frameworks_av-5a217fba010e801c255503602bda4b86ac5a6ac9.tar.bz2 |
Fix initial 0 duration video sample in the recorded videos
o Patch suggested by pmehendale@nvidia.com
Change-Id: Ibf516ba83b721b0d0ab55bb7637fe9b7b2958214
related-to-bug: 5117434
Diffstat (limited to 'media/libstagefright/MPEG4Writer.cpp')
-rwxr-xr-x | media/libstagefright/MPEG4Writer.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/media/libstagefright/MPEG4Writer.cpp b/media/libstagefright/MPEG4Writer.cpp index 8c9ff87..5f58090 100755 --- a/media/libstagefright/MPEG4Writer.cpp +++ b/media/libstagefright/MPEG4Writer.cpp @@ -1172,6 +1172,9 @@ void MPEG4Writer::Track::addOneStssTableEntry(size_t sampleId) { void MPEG4Writer::Track::addOneSttsTableEntry( size_t sampleCount, int32_t duration) { + if (duration == 0) { + LOGW("%d 0-duration samples found: %d", sampleCount); + } SttsTableEntry sttsEntry(sampleCount, duration); mSttsTableEntries.push_back(sttsEntry); ++mNumSttsTableEntries; @@ -2001,17 +2004,18 @@ status_t MPEG4Writer::Track::threadEntry() { mTrackDurationUs = timestampUs; } + // We need to use the time scale based ticks, rather than the + // timestamp itself to determine whether we have to use a new + // stts entry, since we may have rounding errors. + // The calculation is intended to reduce the accumulated + // rounding errors. + currDurationTicks = + ((timestampUs * mTimeScale + 500000LL) / 1000000LL - + (lastTimestampUs * mTimeScale + 500000LL) / 1000000LL); + mSampleSizes.push_back(sampleSize); ++mNumSamples; if (mNumSamples > 2) { - // We need to use the time scale based ticks, rather than the - // timestamp itself to determine whether we have to use a new - // stts entry, since we may have rounding errors. - // The calculation is intended to reduce the accumulated - // rounding errors. - currDurationTicks = - ((timestampUs * mTimeScale + 500000LL) / 1000000LL - - (lastTimestampUs * mTimeScale + 500000LL) / 1000000LL); // Force the first sample to have its own stts entry so that // we can adjust its value later to maintain the A/V sync. |