On Wed, 5 Nov 2014, Anton Khirnov wrote:

Quoting Martin Storsjö (2014-11-04 15:38:10)
From: Michael Niedermayer <[email protected]>

---
 libavformat/mux.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/libavformat/mux.c b/libavformat/mux.c
index 94b4391..f4c6e40 100644
--- a/libavformat/mux.c
+++ b/libavformat/mux.c
@@ -342,6 +342,14 @@ static int write_packet(AVFormatContext *s, AVPacket *pkt)
             pkt->dts += offset;
         if (pkt->pts != AV_NOPTS_VALUE)
             pkt->pts += offset;
+
+        if (pkt->dts != AV_NOPTS_VALUE && pkt->dts < 0) {
+            av_log(s, AV_LOG_WARNING,
+                   "Packets poorly interleaved, failed to avoid negative "
+                   "timestamp %"PRId64" in stream %d.\n"
+                   "Try -max_interleave_delta 0 as a possible workaround.\n",
+                   pkt->dts, pkt->stream_index);
+        }
     }
     ret = s->oformat->write_packet(s, pkt);

--
1.9.3 (Apple Git-50)


Won't the caller already get a warning/error about non-monotonous DTS
in this case?

Not necessarily; you only get those within one individual stream, but if you write e.g. all packets in one stream first, it will probably trigger the max_interleave_delta so some packets from the first stream are written before any of the packets from the other stream even is seen.

// Martin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to