Use next_pts if pkt->dts is unknown. In an ideal world this would not be needed
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 17 Feb 2008 17:41:32 +0000 (17:41 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 17 Feb 2008 17:41:32 +0000 (17:41 +0000)
but sadly there are cases where the timestamps cannot be found without decoding.

Originally committed as revision 12130 to svn://svn.ffmpeg.org/ffmpeg/trunk

ffmpeg.c

index 6d0924d..170478f 100644 (file)
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -1066,7 +1066,7 @@ static int output_packet(AVInputStream *ist, int ist_index,
     ptr = pkt->data;
     while (len > 0) {
     handle_eof:
-        if(!pkt || ptr != pkt->data){
+        if(!pkt || ptr != pkt->data || pkt->dts == AV_NOPTS_VALUE){
             ist->pts= ist->next_pts; // needed for last packet if vsync=0 and for multi pkt
         } else if (pkt->dts != AV_NOPTS_VALUE) { //FIXME seems redundant, as libavformat does this too
             ist->next_pts = ist->pts = av_rescale_q(pkt->dts, ist->st->time_base, AV_TIME_BASE_Q);