Don't drop a late frame which may lead to missing I frames in the MP4 file
Change-Id: I8fef1454264230c1369561670236eb0a19ae4e76
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user