From 5be5d28ced854708a7d5c047656c7eb55d3a2a01 Mon Sep 17 00:00:00 2001 From: Stephen Dredge Date: Tue, 22 Jun 2010 08:48:28 +0000 Subject: Fix failure in av_read_frame on timestamp rollover. Patch by Stephen Dredge, sdredge A tpg com au Originally committed as revision 23699 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/utils.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'libavformat') diff --git a/libavformat/utils.c b/libavformat/utils.c index 59ca6bb..e33cb50 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1189,11 +1189,11 @@ int av_read_frame(AVFormatContext *s, AVPacket *pkt) AVPacket *next_pkt= &pktl->pkt; if(genpts && next_pkt->dts != AV_NOPTS_VALUE){ + int wrap_bits = s->streams[next_pkt->stream_index]->pts_wrap_bits; while(pktl && next_pkt->pts == AV_NOPTS_VALUE){ if( pktl->pkt.stream_index == next_pkt->stream_index - && next_pkt->dts < pktl->pkt.dts - && pktl->pkt.pts != pktl->pkt.dts //not b frame - /*&& pktl->pkt.dts != AV_NOPTS_VALUE*/){ + && (0 > av_compare_mod(next_pkt->dts, pktl->pkt.dts, 2LL << (wrap_bits - 1))) + && av_compare_mod(pktl->pkt.pts, pktl->pkt.dts, 2LL << (wrap_bits - 1))) { //not b frame next_pkt->pts= pktl->pkt.dts; } pktl= pktl->next; -- cgit v1.1