summaryrefslogtreecommitdiff
path: root/libavformat/utils.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-08-24 03:08:51 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-08-24 03:08:51 +0200
commit12b1512e855a423e2103968bfc0d763678a09ed8 (patch)
tree0856c4668e73c1623653b4337166f073af70fd4c /libavformat/utils.c
parent254917f078c7723305351624529f744309f33a0f (diff)
downloadffmpeg-12b1512e855a423e2103968bfc0d763678a09ed8.tar.gz
lavf/utils: Try to unwrap pts/dts so as to minimize wraps
Based on code by: Andrey Utkin <andrey.krieger.utkin@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/utils.c')
-rw-r--r--libavformat/utils.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 0b462441d3..301528d99e 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -1021,7 +1021,10 @@ static void compute_pkt_fields(AVFormatContext *s, AVStream *st,
presentation_delayed = 1;
if(pkt->pts != AV_NOPTS_VALUE && pkt->dts != AV_NOPTS_VALUE && pkt->dts - (1LL<<(st->pts_wrap_bits-1)) > pkt->pts && st->pts_wrap_bits<63){
- pkt->dts -= 1LL<<st->pts_wrap_bits;
+ if(is_relative(st->cur_dts) || pkt->dts - (1LL<<(st->pts_wrap_bits-1)) > st->cur_dts) {
+ pkt->dts -= 1LL<<st->pts_wrap_bits;
+ } else
+ pkt->pts += 1LL<<st->pts_wrap_bits;
}
// some mpeg2 in mpeg-ps lack dts (issue171 / input_file.mpg)