diff options
Diffstat (limited to 'mplayer.c')
-rw-r--r-- | mplayer.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -2201,10 +2201,12 @@ static int sleep_until_update(struct MPContext *mpctx, float *time_frame, } *time_frame = delay - mpctx->delay / opts->playback_speed; + *time_frame -= mpctx->video_out->flip_queue_offset; // delay = amount of audio buffered in soundcard/driver if (delay > 0.25) delay=0.25; else if (delay < 0.10) delay=0.10; + if (*time_frame > delay*0.6) { // sleep time too big - may cause audio drops (buffer underrun) frame_time_remaining = 1; @@ -2217,6 +2219,7 @@ static int sleep_until_update(struct MPContext *mpctx, float *time_frame, // without sleeping. if (*time_frame < -0.2 || benchmark) *time_frame = 0; + *time_frame -= mpctx->video_out->flip_queue_offset; } *aq_sleep_time += *time_frame; @@ -2224,7 +2227,6 @@ static int sleep_until_update(struct MPContext *mpctx, float *time_frame, //============================== SLEEP: =================================== - *time_frame -= mpctx->video_out->flip_queue_offset; // flag 256 means: libvo driver does its timing (dvb card) if (*time_frame > 0.001 && !(mpctx->sh_video->output_flags&256)) *time_frame = timing_sleep(mpctx, *time_frame); |