From ec6a5fc6cca22e4eb0a91cc8fba786d41ade2032 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Wed, 22 Oct 2014 16:15:02 +0200 Subject: [PATCH] avformat/mux: Fix assertion failure due to max_interleave_delta and poor input Fixes Ticket4051 Signed-off-by: Michael Niedermayer --- libavformat/mux.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libavformat/mux.c b/libavformat/mux.c index f29d7319e6..5e45bd8159 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);