[FFmpeg-cvslog] avformat/mux: Fix assertion failure due to max_interleave_delta and poor input

Michael Niedermayer git at videolan.org
Wed Oct 22 16:34:19 CEST 2014


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Wed Oct 22 16:15:02 2014 +0200| [ec6a5fc6cca22e4eb0a91cc8fba786d41ade2032] | committer: Michael Niedermayer

avformat/mux: Fix assertion failure due to max_interleave_delta and poor input

Fixes Ticket4051

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

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

 libavformat/mux.c |   10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/libavformat/mux.c b/libavformat/mux.c
index f29d731..5e45bd8 100644
--- a/libavformat/mux.c
+++ b/libavformat/mux.c
@@ -574,7 +574,15 @@ static int write_packet(AVFormatContext *s, AVPacket *pkt)
         if (pkt->pts != AV_NOPTS_VALUE)
             pkt->pts += offset;
 
-        av_assert2(pkt->dts == AV_NOPTS_VALUE || pkt->dts >= 0);
+        av_assert2(pkt->dts == AV_NOPTS_VALUE || pkt->dts >= 0 || s->max_interleave_delta > 0);
+        if (pkt->dts != AV_NOPTS_VALUE && pkt->dts < 0) {
+            av_log(s, AV_LOG_WARNING,
+                   "Packets poorly interleaved, failed to avoid negative timestamp %s in stream %d\n"
+                   "try -max_interleave_delta 0 as a possible workaround\n",
+                   av_ts2str(pkt->dts),
+                   pkt->stream_index
+            );
+        }
     }
 
     did_split = av_packet_split_side_data(pkt);



More information about the ffmpeg-cvslog mailing list