[FFmpeg-cvslog] avformat: only fill-in interpolated timestamps if duration is non-zero

Justin Ruggles git at videolan.org
Sat May 5 00:58:06 CEST 2012


ffmpeg | branch: master | Justin Ruggles <justin.ruggles at gmail.com> | Thu Apr 26 11:02:02 2012 -0400| [8916f1fbcba0f2a3927752ddd0b6ea6e209c6698] | committer: Justin Ruggles

avformat: only fill-in interpolated timestamps if duration is non-zero

This avoids returning duplicate timestamps for multiple packets when the
demuxer does not provide all timestamps and packet duration is not known.

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

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

diff --git a/libavformat/utils.c b/libavformat/utils.c
index 31708cf..e867b73 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -985,6 +985,8 @@ static void compute_pkt_fields(AVFormatContext *s, AVStream *st,
                 }
             }
 
+            if (pkt->pts != AV_NOPTS_VALUE || pkt->dts != AV_NOPTS_VALUE ||
+                duration) {
             /* presentation is not delayed : PTS and DTS are the same */
             if(pkt->pts == AV_NOPTS_VALUE)
                 pkt->pts = pkt->dts;
@@ -994,6 +996,7 @@ static void compute_pkt_fields(AVFormatContext *s, AVStream *st,
             pkt->dts = pkt->pts;
             if(pkt->pts != AV_NOPTS_VALUE)
                 st->cur_dts = pkt->pts + duration;
+            }
         }
     }
 



More information about the ffmpeg-cvslog mailing list