avformat/utils: fix calculating the absolute difference of timestamps
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 9 Dec 2014 04:31:30 +0000 (05:31 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 9 Dec 2014 05:13:32 +0000 (06:13 +0100)
we dont use FFABS(a-b) as that could result in undefined behavior if it overflows

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/utils.c

index 3246da6..3447b35 100644 (file)
@@ -1105,7 +1105,7 @@ static void compute_pkt_fields(AVFormatContext *s, AVStream *st,
             if (pkt->dts != AV_NOPTS_VALUE &&
                 pkt->pts == AV_NOPTS_VALUE &&
                 st->last_IP_duration > 0 &&
-                (st->cur_dts - next_dts) <= 1 &&
+                ((uint64_t)st->cur_dts - (uint64_t)next_dts + 1) <= 2 &&
                 next_dts != next_pts &&
                 next_pts != AV_NOPTS_VALUE)
                 pkt->pts = next_dts;