Mercurial > libavformat.hg
changeset 4000:f0580597dc48 libavformat
Check for pts==dts on I/P frames in the presence of non low delay decoding and
discard these invalid timestamps.
fixes issue171.
author | michael |
---|---|
date | Sun, 19 Oct 2008 01:02:48 +0000 |
parents | 19dbf5d63f15 |
children | fcb9de59245f |
files | utils.c |
diffstat | 1 files changed, 8 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/utils.c Sat Oct 18 22:41:21 2008 +0000 +++ b/utils.c Sun Oct 19 01:02:48 2008 +0000 @@ -838,6 +838,14 @@ pkt->dts -= 1LL<<st->pts_wrap_bits; } + // some mpeg2 in mpeg-ps lack dts (issue171 / input_file.mpg) + // we take the conservative approach and discard both + // Note, if this is misbehaving for a H.264 file then possibly presentation_delayed is not set correctly. + if(delay==1 && pkt->dts == pkt->pts && pkt->dts != AV_NOPTS_VALUE && presentation_delayed){ + av_log(s, AV_LOG_ERROR, "invalid dts/pts combination\n"); + pkt->dts= pkt->pts= AV_NOPTS_VALUE; + } + if (pkt->duration == 0) { compute_frame_duration(&num, &den, st, pc, pkt); if (den && num) {