summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-02-24 21:59:20 +0100
committerwm4 <wm4@nowhere>2014-02-24 22:50:25 +0100
commit5d7007c6448660b2bdbc7758db7f486157ff1fa2 (patch)
treef1148f9ae9f528cf0dca93b25202866061e6f8f6
parent0797babbfa42ec29cf953070f520648e9d11d971 (diff)
downloadmpv-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.h12
-rw-r--r--player/client.c6
-rw-r--r--player/lua.c3
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;
}