[FFmpeg-cvslog] lavf: compute_pkt_fields, limit the pts upcorrection to mpeg

Michael Niedermayer git at videolan.org
Thu Apr 12 11:41:10 CEST 2012


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Thu Apr 12 10:13:11 2012 +0200| [75b38674b6346da894f025a4b3f1cd2a468353bc] | committer: Michael Niedermayer

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 at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=75b38674b6346da894f025a4b3f1cd2a468353bc
---

 libavformat/utils.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/libavformat/utils.c b/libavformat/utils.c
index dd3108f..2f926bb 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -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);
                 }
             }



More information about the ffmpeg-cvslog mailing list