diff --git a/include/vlc/libvlc.h b/include/vlc/libvlc.h index 9091acea088d2dda211a858f8bb67f3dc307425d..32bd68335c9d63b23e41619566f56d9eeeabb55c 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 dfa0bb55a358594fc2f3979945f7a4299e6a69f7..2fb408494e6b856b7546341b4856ff26fa176bb4 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 235aa566700c736583dd2246861bff1c37e303ae..a3707797367fed87a4fc4cd36636eb8a4c3f4127 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