diff options
author | rrooij <rderooij685@gmail.com> | 2015-05-18 22:56:56 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2015-05-19 21:33:40 +0200 |
commit | e17a8550c408e3ecbe8b1d33dbab694eabe2c713 (patch) | |
tree | 9f37b7918f8efe3f991255e464926bbb472d775b | |
parent | be9bf4cc7c1b61a8abcbb3f64386ef10d8aa9f61 (diff) | |
download | mpv-e17a8550c408e3ecbe8b1d33dbab694eabe2c713.tar.bz2 mpv-e17a8550c408e3ecbe8b1d33dbab694eabe2c713.tar.xz |
input: add relative percentage seek
Only absolute percentage seeking was permitted first. It is now also
possible to seek by relative percentage.
MPSEEK_FACTOR is used as seek_type.
Fixes #1950.
Signed-off-by: wm4 <wm4@nowhere>
-rw-r--r-- | DOCS/man/input.rst | 4 | ||||
-rw-r--r-- | input/cmd_list.c | 1 | ||||
-rw-r--r-- | player/command.c | 5 |
3 files changed, 9 insertions, 1 deletions
diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst index d23727e898..4ae7ae9da6 100644 --- a/DOCS/man/input.rst +++ b/DOCS/man/input.rst @@ -86,7 +86,7 @@ List of Input Commands disabling default bindings, without disabling all bindings with ``--no-input-default-bindings``. -``seek <seconds> [relative|absolute|absolute-percent|exact|keyframes]`` +``seek <seconds> [relative|absolute|absolute-percent|relative-percent|exact|keyframes]`` Change the playback position. By default, seeks by a relative amount of seconds. @@ -98,6 +98,8 @@ List of Input Commands Seek to a given time. absolute-percent Seek to a given percent position. + relative-percent + Seek relative to current position in percent. keyframes Always restart playback at keyframe boundaries (fast). exact diff --git a/input/cmd_list.c b/input/cmd_list.c index e7918f26d6..d7dda48ad4 100644 --- a/input/cmd_list.c +++ b/input/cmd_list.c @@ -63,6 +63,7 @@ const struct mp_cmd_def mp_cmds[] = { OARG_FLAGS(4|0, ({"relative", 4|0}, {"-", 4|0}, {"absolute-percent", 4|1}, {"absolute", 4|2}, + {"relative-percent", 4|3}, {"keyframes", 32|8}, {"exact", 32|16})), // backwards compatibility only diff --git a/player/command.c b/player/command.c index c03e63d254..54fc79fede 100644 --- a/player/command.c +++ b/player/command.c @@ -4118,6 +4118,11 @@ int run_command(struct MPContext *mpctx, struct mp_cmd *cmd, struct mpv_node *re queue_seek(mpctx, MPSEEK_ABSOLUTE, v, precision, false); set_osd_function(mpctx, v > get_current_time(mpctx) ? OSD_FFW : OSD_REW); + } else if (abs == 3) { // Relative seeking by percentage + queue_seek(mpctx, MPSEEK_FACTOR, + get_current_pos_ratio(mpctx, false) + v / 100.0, + precision, false); + set_osd_function(mpctx, v > 0 ? OSD_FFW : OSD_REW); } else if (abs) { /* Absolute seek by percentage */ queue_seek(mpctx, MPSEEK_FACTOR, v / 100.0, precision, false); set_osd_function(mpctx, OSD_FFW); // Direction isn't set correctly |