changeset 30175:b7bb4a899a6b

Also reset time_frame and next_frame_time on reset, it makes no sense to process the sleep before playing the frame seeked to and can be annoying when the user tries to escape a series of "stuck" frames with a huge duration.
author reimar
date Mon, 04 Jan 2010 21:27:08 +0000
parents 84f7e547aaf2
children 6fb92182aff3
files mp_core.h mplayer.c
diffstat 2 files changed, 8 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/mp_core.h	Mon Jan 04 21:22:33 2010 +0000
+++ b/mp_core.h	Mon Jan 04 21:27:08 2010 +0000
@@ -72,6 +72,9 @@
     // struct.
     int num_buffered_frames;
 
+    // how long until we need to display the "current" frame
+    float time_frame;
+
     // AV sync: the next frame should be shown when the audio out has this
     // much (in seconds) buffered data left. Increased when more data is
     // written to the ao, decreased when moving to the next frame.
--- a/mplayer.c	Mon Jan 04 21:22:33 2010 +0000
+++ b/mplayer.c	Mon Jan 04 21:27:08 2010 +0000
@@ -2544,10 +2544,12 @@
 	resync_video_stream(mpctx->sh_video);
 	if (vo_config_count)
 	    mpctx->video_out->control(VOCTRL_RESET, NULL);
+	mpctx->sh_video->next_frame_time = 0;
 	mpctx->sh_video->num_buffered_pts = 0;
 	mpctx->sh_video->last_pts = MP_NOPTS_VALUE;
 	mpctx->num_buffered_frames = 0;
 	mpctx->delay = 0;
+	mpctx->time_frame = 0;
 	// Not all demuxers set d_video->pts during seek, so this value
 	// (which is used by at least vobsub and edl code below) may
 	// be completely wrong (probably 0).
@@ -3610,7 +3612,6 @@
 {
 //int frame_corr_num=0;   //
 //float v_frame=0;    // Video
-float time_frame=0; // Timer
 //float num_frames=0;      // number of frames played
 
 int frame_time_remaining=0; // flag
@@ -3778,7 +3779,7 @@
       else {
 	  // might return with !eof && !blit_frame if !correct_pts
 	  mpctx->num_buffered_frames += blit_frame;
-	  time_frame += frame_time / playback_speed;  // for nosound
+	  mpctx->time_frame += frame_time / playback_speed;  // for nosound
       }
   }
 
@@ -3809,7 +3810,7 @@
         }
     }
 
-    frame_time_remaining = sleep_until_update(&time_frame, &aq_sleep_time);
+    frame_time_remaining = sleep_until_update(&mpctx->time_frame, &aq_sleep_time);
 
 //====================== FLIP PAGE (VIDEO BLT): =========================
 
@@ -3824,7 +3825,7 @@
         }
 //====================== A-V TIMESTAMP CORRECTION: =========================
 
-  adjust_sync_and_print_status(frame_time_remaining, time_frame);
+  adjust_sync_and_print_status(frame_time_remaining, mpctx->time_frame);
 
 //============================ Auto QUALITY ============================