changeset 22288:da8ba4c0fc57

Cleanup, move "global" state from the frame_time_remaining mainloop variable to mpctx.
author uau
date Wed, 21 Feb 2007 21:59:33 +0000
parents 53f0cbf238cf
children 780caed72ac7
files mp_core.h mplayer.c
diffstat 2 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mp_core.h	Wed Feb 21 19:48:12 2007 +0000
+++ b/mp_core.h	Wed Feb 21 21:59:33 2007 +0000
@@ -62,6 +62,10 @@
     demux_stream_t *d_sub;
     mixer_t mixer;
     vo_functions_t *video_out;
+    // Frames buffered in the vo ready to flip. Currently always 0 or 1.
+    // This is really a vo variable but currently there's no suitable vo
+    // struct.
+    int num_buffered_frames;
 
     short edl_muted; ///< Stores whether EDL is currently in muted mode.
     short user_muted; ///< Stores whether user wanted muted mode.
--- a/mplayer.c	Wed Feb 21 19:48:12 2007 +0000
+++ b/mplayer.c	Wed Feb 21 21:59:33 2007 +0000
@@ -3182,6 +3182,7 @@
 
 int frame_time_remaining=0; // flag
 int blit_frame=0;
+mpctx->num_buffered_frames=0;
 
 // Make sure old OSD does not stay around,
 // e.g. with -fixed-vo and same-resolution files
@@ -3297,7 +3298,7 @@
   vo_pts=mpctx->sh_video->timer*90000.0;
   vo_fps=mpctx->sh_video->fps;
 
-  if (!frame_time_remaining) {
+  if (!mpctx->num_buffered_frames) {
       double frame_time = update_video(&blit_frame);
       mp_dbg(MSGT_AVSYNC,MSGL_DBG2,"*** ftime=%5.3f ***\n",frame_time);
       if (mpctx->sh_video->vf_inited < 0) {
@@ -3306,8 +3307,11 @@
       }
       if (frame_time < 0)
 	  mpctx->eof = 1;
-      else
+      else {
+	  // might return with !eof && !blit_frame if !correct_pts
+	  mpctx->num_buffered_frames += blit_frame;
 	  time_frame += frame_time / playback_speed;  // for nosound
+      }
   }
 
 // ==========================================================================
@@ -3338,6 +3342,7 @@
 	   unsigned int t2=GetTimer();
 
 	   if(vo_config_count) mpctx->video_out->flip_page();
+	   mpctx->num_buffered_frames--;
 
 	   vout_time_usage += (GetTimer() - t2) * 0.000001;
         }
@@ -3559,7 +3564,7 @@
 
   rel_seek_secs=0;
   abs_seek_pos=0;
-  frame_time_remaining=0;
+  mpctx->num_buffered_frames = 0;
   current_module=NULL;
   loop_seek=0;
 }