lavf: compute_pkt_fields, limit the pts upcorrection to mpeg

The pts correction conflicts with the ogg vorbis demuxer.

Thanks-to: Justin Ruggles
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
pull/5/head
Michael Niedermayer 13 years ago
parent 733cf0ad51
commit 75b38674b6
  1. 5
      libavformat/utils.c

@ -1065,8 +1065,11 @@ static void compute_pkt_fields(AVFormatContext *s, AVStream *st,
if(pkt->pts != AV_NOPTS_VALUE && duration){ if(pkt->pts != AV_NOPTS_VALUE && duration){
int64_t old_diff= FFABS(st->cur_dts - duration - pkt->pts); int64_t old_diff= FFABS(st->cur_dts - duration - pkt->pts);
int64_t new_diff= FFABS(st->cur_dts - pkt->pts); int64_t new_diff= FFABS(st->cur_dts - pkt->pts);
if(old_diff < new_diff && old_diff < (duration>>3)){ if( old_diff < new_diff && old_diff < (duration>>3)
&& (!strcmp(s->iformat->name, "mpeg") ||
!strcmp(s->iformat->name, "mpegts"))){
pkt->pts += duration; pkt->pts += duration;
av_log(s, AV_LOG_WARNING, "Adjusting PTS forward\n");
// av_log(NULL, AV_LOG_DEBUG, "id:%d old:%"PRId64" new:%"PRId64" dur:%d cur:%"PRId64" size:%d\n", pkt->stream_index, old_diff, new_diff, pkt->duration, st->cur_dts, pkt->size); // av_log(NULL, AV_LOG_DEBUG, "id:%d old:%"PRId64" new:%"PRId64" dur:%d cur:%"PRId64" size:%d\n", pkt->stream_index, old_diff, new_diff, pkt->duration, st->cur_dts, pkt->size);
} }
} }

Loading…
Cancel
Save