summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2008-10-19 01:02:48 +0000
committerMichael Niedermayer <michaelni@gmx.at>2008-10-19 01:02:48 +0000
commit9806f846c0f7dd6ff3a0bdf1f2e161623ec9d3e6 (patch)
treefe23fdf3737aa500d28d5850f767eac0829894f2 /libavformat
parentf781f748b91aebf96c3e4b2fdaa998e736554ff4 (diff)
Check for pts==dts on I/P frames in the presence of non low delay decoding and
discard these invalid timestamps. fixes issue171. Originally committed as revision 15641 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/utils.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/libavformat/utils.c b/libavformat/utils.c
index f4377fed3d..51bc5c58fb 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -838,6 +838,14 @@ static void compute_pkt_fields(AVFormatContext *s, AVStream *st,
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) {