diff options
author | wm4 <wm4@nowhere> | 2014-02-24 21:59:20 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-02-24 22:50:25 +0100 |
commit | 5d7007c6448660b2bdbc7758db7f486157ff1fa2 (patch) | |
tree | f1148f9ae9f528cf0dca93b25202866061e6f8f6 | |
parent | 0797babbfa42ec29cf953070f520648e9d11d971 (diff) | |
download | mpv-5d7007c6448660b2bdbc7758db7f486157ff1fa2.tar.bz2 mpv-5d7007c6448660b2bdbc7758db7f486157ff1fa2.tar.xz |
client API: expose the internal clock
May or may not be useful in some ways.
We require a context parameter for this just to be sure, even if the
internal implementation currently doesn't.
That's one less mpv internal function for the Lua wrapper.
-rw-r--r-- | libmpv/client.h | 12 | ||||
-rw-r--r-- | player/client.c | 6 | ||||
-rw-r--r-- | player/lua.c | 3 |
3 files changed, 20 insertions, 1 deletions
diff --git a/libmpv/client.h b/libmpv/client.h index 462ff3a9bd..a37afdbcb5 100644 --- a/libmpv/client.h +++ b/libmpv/client.h @@ -351,6 +351,18 @@ void mpv_suspend(mpv_handle *ctx); void mpv_resume(mpv_handle *ctx); /** + * Return the internal time in microseconds. This has an arbitrary start offset, + * but will never wrap or go backwards (note: the latter is probably a lie in + * the current implementation, it can go backwards on system clock changes). + * + * Note that this is always the real time, and doesn't necessarily have to do + * with playback time. For example, playback could go faster or slower due to + * playback speed, or due to playback being paused. Use the "time-pos" property + * instead to get the playback status. + */ +int64_t mpv_get_time_us(mpv_handle *ctx); + +/** * Data format for options and properties. The API functions to get/set * properties and options support multiple formats, and this enum describes * them. diff --git a/player/client.c b/player/client.c index 11fe86bdfc..eaf91c45a8 100644 --- a/player/client.c +++ b/player/client.c @@ -24,6 +24,7 @@ #include "options/m_option.h" #include "options/m_property.h" #include "osdep/threads.h" +#include "osdep/timer.h" #include "command.h" #include "core.h" @@ -992,3 +993,8 @@ void mpv_free(void *data) { talloc_free(data); } + +int64_t mpv_get_time_us(mpv_handle *ctx) +{ + return mp_time_us(); +} diff --git a/player/lua.c b/player/lua.c index dec5d22cab..edd01c0c73 100644 --- a/player/lua.c +++ b/player/lua.c @@ -722,7 +722,8 @@ static int script_get_mouse_pos(lua_State *L) static int script_get_time(lua_State *L) { - lua_pushnumber(L, mp_time_sec()); + struct script_ctx *ctx = get_ctx(L); + lua_pushnumber(L, mpv_get_time_us(ctx->client) / (double)(1000 * 1000)); return 1; } |