[FFmpeg-cvslog] avformat/movenc: check that the input timestamps are within the range that can be stored in mov

Michael Niedermayer git at videolan.org
Fri Feb 21 04:42:09 CET 2014


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Fri Feb 21 02:30:19 2014 +0100| [1b872de8f49e9af41d4bc23e1ef783ae8094ffff] | committer: Michael Niedermayer

avformat/movenc: check that the input timestamps are within the range that can be stored in mov

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1b872de8f49e9af41d4bc23e1ef783ae8094ffff
---

 libavformat/movenc.c |   11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index b861cf8..bb4d379 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -3255,6 +3255,17 @@ int ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt)
     int size = pkt->size;
     uint8_t *reformatted_data = NULL;
 
+    if (trk->entry) {
+        int64_t duration = pkt->dts - trk->cluster[trk->entry - 1].dts;
+        if (duration < 0 || duration > INT_MAX) {
+            av_log(s, AV_LOG_ERROR, "Application provided duration: %"PRId64" / timestamp: %"PRId64" is out of range for mov/mp4 format\n",
+                duration, pkt->dts
+            );
+
+            pkt->dts = trk->cluster[trk->entry - 1].dts + 1;
+            pkt->pts = AV_NOPTS_VALUE;
+        }
+    }
     if (mov->flags & FF_MOV_FLAG_FRAGMENT) {
         int ret;
         if (mov->fragments > 0) {



More information about the ffmpeg-cvslog mailing list