From ea613c2592e99ebb9f9bf3f374465b26a077b4cf Mon Sep 17 00:00:00 2001 From: wm4 Date: Wed, 5 Nov 2014 18:47:12 +0100 Subject: command: use playback time as reference for sub_seek update_subtitle() already uees playback_pts to make subtitles work better in no-audio mode. Using get_current_time() usually gets playback_pts, but also has the advantage that it will use the seek target time during seeks. This will result in multiple sub_seek commands doing the right thing (at least as long as they're far enough apart so that seeking is actually initiated when the second command is run). --- player/command.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/player/command.c b/player/command.c index d97460ab91..451cb740a8 100644 --- a/player/command.c +++ b/player/command.c @@ -4018,9 +4018,10 @@ int run_command(MPContext *mpctx, mp_cmd_t *cmd) return -1; struct osd_sub_state state; get_osd_sub_state(mpctx, 0, &state); - if (state.dec_sub && mpctx->video_pts != MP_NOPTS_VALUE) { + double refpts = get_current_time(mpctx); + if (state.dec_sub && refpts != MP_NOPTS_VALUE) { double a[2]; - a[0] = mpctx->video_pts - state.video_offset - opts->sub_delay; + a[0] = refpts - state.video_offset - opts->sub_delay; a[1] = cmd->args[0].v.i; if (sub_control(state.dec_sub, SD_CTRL_SUB_STEP, a) > 0) { if (cmd->id == MP_CMD_SUB_STEP) { -- cgit v1.2.3