[FFmpeg-devel] [PATCH] avformat/mov: correct 0 valued entries in stts
Gyan Doshi
ffmpeg at gyani.pro
Mon Dec 27 07:57:10 EET 2021
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
More information about the ffmpeg-devel
mailing list