From 1b872de8f49e9af41d4bc23e1ef783ae8094ffff Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Fri, 21 Feb 2014 02:30:19 +0100 Subject: [PATCH] avformat/movenc: check that the input timestamps are within the range that can be stored in mov Signed-off-by: Michael Niedermayer --- libavformat/movenc.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index b861cf877f..bb4d379c6c 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) {