From dc7fff375fff04c99c7acc0195378bce5932a736 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net> Date: Tue, 10 May 2011 21:05:57 +0300 Subject: [PATCH] libvlc_clock, libvlc_delay: expose LibVLC clock for audio sync --- include/vlc/libvlc.h | 28 ++++++++++++++++++++++++++++ src/control/core.c | 5 +++++ src/libvlc.sym | 1 + 3 files changed, 34 insertions(+) diff --git a/include/vlc/libvlc.h b/include/vlc/libvlc.h index 9091acea088d..32bd68335c9d 100644 --- a/include/vlc/libvlc.h +++ b/include/vlc/libvlc.h @@ -448,6 +448,34 @@ LIBVLC_API libvlc_module_description_t *libvlc_video_filter_list_get( libvlc_instance_t *p_instance ); /**Â @} */ + +/** \defgroup libvlc_clock LibVLC time + * These functions provide access to the LibVLC time/clock. + * @{ + */ + +/** + * Return the current time as defined by LibVLC. The unit is the microsecond. + * Time increases monotonically (regardless of time zone changes and RTC + * adjustements). + * The origin is arbitrary but consistent across the whole system + * (e.g. the system uptim, the time since the system was booted). + * \note On systems that support it, the POSIX monotonic clock is used. + */ +LIBVLC_API +int64_t libvlc_clock(void); + +/** + * Return the delay (in microseconds) until a certain timestamp. + * \param pts timestamp + * \return negative if timestamp is in the past, + * positive if it is in the future + */ +static inline int64_t libvlc_delay(int64_t pts) +{ + return pts - libvlc_clock(); +} + /**Â @} */ # ifdef __cplusplus diff --git a/src/control/core.c b/src/control/core.c index dfa0bb55a358..2fb408494e6b 100644 --- a/src/control/core.c +++ b/src/control/core.c @@ -238,3 +238,8 @@ libvlc_module_description_t *libvlc_video_filter_list_get( libvlc_instance_t *p_ { return libvlc_module_description_list_get( p_instance, "video filter2" ); } + +int64_t libvlc_clock(void) +{ + return mdate(); +} diff --git a/src/libvlc.sym b/src/libvlc.sym index 235aa566700c..a3707797367f 100644 --- a/src/libvlc.sym +++ b/src/libvlc.sym @@ -25,6 +25,7 @@ libvlc_audio_set_mute libvlc_audio_set_track libvlc_audio_set_volume libvlc_audio_toggle_mute +libvlc_clock libvlc_event_attach libvlc_event_detach libvlc_event_manager_new -- GitLab