diff libmpdemux/video.c @ 5930:68cac7ecaf05

Fix frame_time for variable fps movies as it was the last frame duration.
author albeu
date Thu, 02 May 2002 10:25:48 +0000
parents 31202ff6fb3d
children 622d57683187
line wrap: on
line diff
--- a/libmpdemux/video.c	Thu May 02 02:03:59 2002 +0000
+++ b/libmpdemux/video.c	Thu May 02 10:25:48 2002 +0000
@@ -291,14 +291,18 @@
       case DEMUXER_TYPE_FILM:
       case DEMUXER_TYPE_VIVO:
       case DEMUXER_TYPE_ASF: {
-        float d=d_video->pts-pts1;
-        if(d>0 && d<5) frame_time=d;
+        float next_pts = ds_get_next_pts(d_video);
+        float d= next_pts > 0 ? next_pts - d_video->pts : d_video->pts-pts1;
         if(d>0){
           if(verbose)
             if((int)sh_video->fps==1000)
               mp_msg(MSGT_CPLAYER,MSGL_STATUS,"\navg. framerate: %d fps             \n",(int)(1.0f/d));
           sh_video->frametime=d; // 1ms
           sh_video->fps=1.0f/d;
+          frame_time = d;
+        } else {
+          mp_msg(MSGT_CPLAYER,MSGL_WARN,"\nInvalid frame duration value. Defaulting to 1/25 sec.\n");
+          frame_time = 1/25.0;
         }
       }
     }