summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DOCS/interface-changes.rst1
-rw-r--r--DOCS/man/options.rst18
-rw-r--r--options/options.c6
-rw-r--r--options/options.h1
-rw-r--r--player/command.c15
5 files changed, 30 insertions, 11 deletions
diff --git a/DOCS/interface-changes.rst b/DOCS/interface-changes.rst
index ce60e72f6d..2b36506920 100644
--- a/DOCS/interface-changes.rst
+++ b/DOCS/interface-changes.rst
@@ -35,6 +35,7 @@ Interface changes
vf toggle commands and the filter enable/disable flag to customize it.
- deprecate --af=lavrresample. Use the ``--audio-resample-...`` options to
customize resampling, or the libavfilter ``--af=aresample`` filter.
+ - add --osd-on-seek
--- mpv 0.28.0 ---
- rename --hwdec=mediacodec option to mediacodec-copy, to reflect
conventions followed by other hardware video decoding APIs
diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst
index 65fb3e3778..57e79806c8 100644
--- a/DOCS/man/options.rst
+++ b/DOCS/man/options.rst
@@ -3096,9 +3096,15 @@ OSD
Disable display of the OSD bar.
You can configure this on a per-command basis in input.conf using ``osd-``
- prefixes, see ``Input command prefixes``. If you want to disable the OSD
+ prefixes, see ``Input Command Prefixes``. If you want to disable the OSD
completely, use ``--osd-level=0``.
+``--osd-on-seek=<no,bar,msg,msg-bar>``
+ Set what is displayed on the OSD during seeks. The default is ``bar``.
+
+ You can configure this on a per-command basis in input.conf using ``osd-``
+ prefixes, see ``Input Command Prefixes``.
+
``--osd-duration=<time>``
Set the duration of the OSD messages in ms (default: 1000).
@@ -3130,16 +3136,18 @@ OSD
(default), then the playback time, duration, and some more information is
shown.
- This is also used for the ``show-progress`` command (by default mapped to
- ``P``), and when seeking.
+ This is used for the ``show-progress`` command (by default mapped to ``P``),
+ and when seeking if enabled with ``--osd-on-seek`` or by ``osd-`` prefixes
+ in input.conf (see ``Input Command Prefixes``).
``--osd-status-msg`` is a legacy equivalent (but with a minor difference).
``--osd-status-msg=<string>``
Show a custom string during playback instead of the standard status text.
This overrides the status text used for ``--osd-level=3``, when using the
- ``show-progress`` command (by default mapped to ``P``), and when
- seeking. Expands properties. See `Property Expansion`_.
+ ``show-progress`` command (by default mapped to ``P``), and when seeking if
+ enabled with ``--osd-on-seek`` or ``osd-`` prefixes in input.conf (see
+ ``Input Command Prefixes``). Expands properties. See `Property Expansion`_.
This option has been replaced with ``--osd-msg3``. The only difference is
that this option implicitly includes ``${osd-sym-cc}``. This option is
diff --git a/options/options.c b/options/options.c
index be27344a14..44a9571598 100644
--- a/options/options.c
+++ b/options/options.c
@@ -589,6 +589,11 @@ const m_option_t mp_opts[] = {
OPT_FLAG("use-filedir-conf", use_filedir_conf, 0),
OPT_CHOICE("osd-level", osd_level, 0,
({"0", 0}, {"1", 1}, {"2", 2}, {"3", 3})),
+ OPT_CHOICE("osd-on-seek", osd_on_seek, 0,
+ ({"no", 0},
+ {"bar", 1},
+ {"msg", 2},
+ {"msg-bar", 3})),
OPT_INTRANGE("osd-duration", osd_duration, 0, 0, 3600000),
OPT_FLAG("osd-fractions", osd_fractions, 0),
@@ -878,6 +883,7 @@ const struct MPOpts mp_default_opts = {
.cursor_autohide_delay = 1000,
.video_osd = 1,
.osd_level = 1,
+ .osd_on_seek = 1,
.osd_duration = 1000,
#if HAVE_LUA
.lua_load_osc = 1,
diff --git a/options/options.h b/options/options.h
index 424a1c8f0e..97f01e21f9 100644
--- a/options/options.h
+++ b/options/options.h
@@ -183,6 +183,7 @@ typedef struct MPOpts {
int osd_level;
int osd_duration;
int osd_fractions;
+ int osd_on_seek;
int video_osd;
int untimed;
diff --git a/player/command.c b/player/command.c
index 2da7834233..4c03c7579e 100644
--- a/player/command.c
+++ b/player/command.c
@@ -4804,6 +4804,9 @@ int run_command(struct MPContext *mpctx, struct mp_cmd *cmd, struct mpv_node *re
bool auto_osd = on_osd == MP_ON_OSD_AUTO;
bool msg_osd = auto_osd || (on_osd & MP_ON_OSD_MSG);
bool bar_osd = auto_osd || (on_osd & MP_ON_OSD_BAR);
+ bool seek_msg_osd = auto_osd ? opts->osd_on_seek & 2 : msg_osd;
+ bool seek_bar_osd = auto_osd ? opts->osd_on_seek & 1 : bar_osd;
+
int osdl = msg_osd ? 1 : OSD_LEVEL_INVISIBLE;
bool async = cmd->flags & MP_ASYNC_CMD;
@@ -4867,9 +4870,9 @@ int run_command(struct MPContext *mpctx, struct mp_cmd *cmd, struct mpv_node *re
set_osd_function(mpctx, v > 0 ? OSD_FFW : OSD_REW);
break;
}}
- if (bar_osd)
+ if (seek_bar_osd)
mpctx->add_osd_seek_info |= OSD_SEEK_INFO_BAR;
- if (msg_osd)
+ if (seek_msg_osd)
mpctx->add_osd_seek_info |= OSD_SEEK_INFO_TEXT;
break;
}
@@ -4888,9 +4891,9 @@ int run_command(struct MPContext *mpctx, struct mp_cmd *cmd, struct mpv_node *re
queue_seek(mpctx, MPSEEK_ABSOLUTE, oldpts, MPSEEK_EXACT,
MPSEEK_FLAG_DELAY);
set_osd_function(mpctx, OSD_REW);
- if (bar_osd)
+ if (seek_bar_osd)
mpctx->add_osd_seek_info |= OSD_SEEK_INFO_BAR;
- if (msg_osd)
+ if (seek_msg_osd)
mpctx->add_osd_seek_info |= OSD_SEEK_INFO_TEXT;
} else {
return -1;
@@ -5119,9 +5122,9 @@ int run_command(struct MPContext *mpctx, struct mp_cmd *cmd, struct mpv_node *re
queue_seek(mpctx, MPSEEK_ABSOLUTE, a[0], MPSEEK_EXACT,
MPSEEK_FLAG_DELAY);
set_osd_function(mpctx, (a[0] > refpts) ? OSD_FFW : OSD_REW);
- if (bar_osd)
+ if (seek_bar_osd)
mpctx->add_osd_seek_info |= OSD_SEEK_INFO_BAR;
- if (msg_osd)
+ if (seek_msg_osd)
mpctx->add_osd_seek_info |= OSD_SEEK_INFO_TEXT;
}
}