From fa682af6ee1f545eaee2127096121848dd20abbf Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 8 Aug 2014 00:13:27 +0200 Subject: command: add a "seeking" property The client API exports this state via events already, but maybe it's better to explicitly provide this property in order to facilitate use on OSD and similar cases. --- DOCS/man/input.rst | 6 ++++++ player/command.c | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst index dd20d825fc..c33537c115 100644 --- a/DOCS/man/input.rst +++ b/DOCS/man/input.rst @@ -830,6 +830,12 @@ Property list or enter idle mode), and in these cases the ``eof-reached`` property will logically be cleared immediately after it's set. +``seeking`` + Returns ``yes`` if the player is currently seeking, or otherwise trying + to restart playback. (It's possible that it returns ``yes`` while a file + is loaded, or when switching ordered chapter segments. This is because + the same underlying code is used for seeking and resyncing.) + ``pts-association-mode`` (RW) See ``--pts-association-mode``. diff --git a/player/command.c b/player/command.c index df59e34714..9c73f076b9 100644 --- a/player/command.c +++ b/player/command.c @@ -1084,6 +1084,13 @@ static int mp_property_eof_reached(void *ctx, struct m_property *prop, return m_property_flag_ro(action, arg, eof); } +static int mp_property_seeking(void *ctx, struct m_property *prop, + int action, void *arg) +{ + MPContext *mpctx = ctx; + return m_property_flag_ro(action, arg, !mpctx->restart_complete); +} + static int mp_property_cache(void *ctx, struct m_property *prop, int action, void *arg) { @@ -2695,6 +2702,7 @@ static const struct m_property mp_properties[] = { {"pause", mp_property_pause}, {"core-idle", mp_property_core_idle}, {"eof-reached", mp_property_eof_reached}, + {"seeking", mp_property_seeking}, {"cache", mp_property_cache}, {"cache-free", mp_property_cache_free}, {"cache-used", mp_property_cache_used}, @@ -2828,6 +2836,8 @@ static const char *const *const mp_event_property_change[] = { "width", "height", "fps", "aspect"), E(MPV_EVENT_AUDIO_RECONFIG, "audio-format", "audio-codec", "audio-bitrate", "samplerate", "channels", "audio"), + E(MPV_EVENT_SEEK, "seeking"), + E(MPV_EVENT_PLAYBACK_RESTART, "seeking"), E(MPV_EVENT_METADATA_UPDATE, "metadata"), E(MPV_EVENT_CHAPTER_CHANGE, "chapter", "chapter-metadata"), E(MP_EVENT_CACHE_UPDATE, "cache", "cache-free", "cache-used", "cache-idle"), -- cgit v1.2.3