As per ISO 14496-12, sample duration of 0 is invalid except for the last entry.
In addition, also catch 0 value for sample count. --- libavformat/mov.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libavformat/mov.c b/libavformat/mov.c index 2aed6e80ef..fb7406cdd6 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -2968,6 +2968,18 @@ static int mov_read_stts(MOVContext *c, AVIOContext *pb, MOVAtom atom) av_log(c->fc, AV_LOG_TRACE, "sample_count=%d, sample_duration=%d\n", sample_count, sample_duration); + if (!sample_count) { + av_log(c->fc, AV_LOG_WARNING, "invalid sample count of 0 in stts for st %d at entry %u; changing to 1.\n", + c->fc->nb_streams-1, i); + sc->stts_data[i].count = sample_count = 1; + } + + if (!sample_duration && i != entries-1) { + av_log(c->fc, AV_LOG_WARNING, "invalid sample delta of 0 in stts for st %d at entry %u; changing to 1.\n", + c->fc->nb_streams-1, i); + sc->stts_data[i].duration = sample_duration = 1; + } + duration+=(int64_t)sample_duration*(uint64_t)sample_count; total_sample_count+=sample_count; } -- 2.33.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".