lavf: compute_pkt_fields, limit the pts upcorrection to mpeg
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 12 Apr 2012 08:13:11 +0000 (10:13 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 12 Apr 2012 09:35:38 +0000 (11:35 +0200)
The pts correction conflicts with the ogg vorbis demuxer.

Thanks-to: Justin Ruggles
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/utils.c

index dd3108f..2f926bb 100644 (file)
@@ -1065,8 +1065,11 @@ static void compute_pkt_fields(AVFormatContext *s, AVStream *st,
             if(pkt->pts != AV_NOPTS_VALUE && duration){
                 int64_t old_diff= FFABS(st->cur_dts - duration - 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;
+                    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);
                 }
             }