diff options
| author | 2010-08-19 18:07:08 -0700 | |
|---|---|---|
| committer | 2010-08-19 18:07:08 -0700 | |
| commit | 3540760d1d68cc883122d44ab1d38f542fb646e6 (patch) | |
| tree | 4504ac56938d497868b543748428ad4d126cf43c | |
| parent | 177a7ad825445acaeea38c48c74ad87db935d054 (diff) | |
| parent | 0ea4ed3bbb28fb6913392d2bee55621a1290dca8 (diff) | |
am 0ea4ed3b: Don\'t drop a late frame which may lead to missing I frames in the MP4 file
Merge commit '0ea4ed3bbb28fb6913392d2bee55621a1290dca8' into gingerbread-plus-aosp
* commit '0ea4ed3bbb28fb6913392d2bee55621a1290dca8':
Don't drop a late frame which may lead to missing I frames in the MP4 file
| -rw-r--r-- | media/libstagefright/MPEG4Writer.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/media/libstagefright/MPEG4Writer.cpp b/media/libstagefright/MPEG4Writer.cpp index 0d0a998921d5..568037e65c41 100644 --- a/media/libstagefright/MPEG4Writer.cpp +++ b/media/libstagefright/MPEG4Writer.cpp @@ -1524,10 +1524,24 @@ status_t MPEG4Writer::Track::threadEntry() { CHECK(timestampUs >= 0); if (mNumSamples > 1) { if (timestampUs <= lastTimestampUs) { - LOGW("Drop a frame, since it arrives too late!"); + LOGW("Frame arrives too late!"); +#if 0 + // Drop the late frame. copy->release(); copy = NULL; continue; +#else + // Don't drop the late frame, since dropping a frame may cause + // problems later during playback + + // The idea here is to avoid having two or more samples with the + // same timestamp in the output file. + if (mTimeScale >= 1000000LL) { + timestampUs += 1; + } else { + timestampUs += (1000000LL + (mTimeScale >> 1)) / mTimeScale; + } +#endif } } |