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);
|
CHECK(timestampUs >= 0);
|
||||||
if (mNumSamples > 1) {
|
if (mNumSamples > 1) {
|
||||||
if (timestampUs <= lastTimestampUs) {
|
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->release();
|
||||||
copy = NULL;
|
copy = NULL;
|
||||||
continue;
|
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