diff options
Diffstat (limited to 'mplayer.c')
-rw-r--r-- | mplayer.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -2401,8 +2401,14 @@ static double update_video(int *blit_frame) if (sh_video->last_pts == MP_NOPTS_VALUE) sh_video->last_pts= sh_video->pts; else if (sh_video->last_pts > sh_video->pts) { - sh_video->last_pts = sh_video->pts; - mp_msg(MSGT_CPLAYER, MSGL_INFO, "pts value < previous\n"); + // make a guess whether this is some kind of discontinuity + // we should jump along with or some wron timestamps we + // should replace instead + if (sh_video->pts < sh_video->last_pts - 20 * sh_video->frametime) + sh_video->last_pts = sh_video->pts; + else + sh_video->pts = sh_video->last_pts + sh_video->frametime; + mp_msg(MSGT_CPLAYER, MSGL_V, "pts value < previous\n"); } frame_time = sh_video->pts - sh_video->last_pts; sh_video->last_pts = sh_video->pts; |