[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