diff --git a/libobs/obs-internal.h b/libobs/obs-internal.h index 858aa761d893d2822b274496e7b9989deae9c41b..e3c82c7fe16d978af8b75213845fb4d32e10e154 100644 --- a/libobs/obs-internal.h +++ b/libobs/obs-internal.h @@ -273,6 +273,7 @@ struct obs_core_video { volatile bool gpu_encode_stop; uint64_t video_time; + uint64_t video_frame_interval_ns; uint64_t video_avg_frame_time_ns; double video_fps; video_t *video; diff --git a/libobs/obs-video.c b/libobs/obs-video.c index fb69cd92ef8cd9c70302867ae50019ba79af7242..bf29c4ad4dd3b160cef1a05d2dd8e0297809873b 100644 --- a/libobs/obs-video.c +++ b/libobs/obs-video.c @@ -824,6 +824,7 @@ void *obs_graphics_thread(void *param) bool was_active = false; obs->video.video_time = os_gettime_ns(); + obs->video.video_frame_interval_ns = interval; os_set_thread_name("libobs: graphics thread"); diff --git a/libobs/obs.c b/libobs/obs.c index 7dff92c41879ff9c5303a1ee68d6dc3b5e52f5c5..6fe1a33c12cfedcfe21b46242f95b0273579dca2 100644 --- a/libobs/obs.c +++ b/libobs/obs.c @@ -2144,6 +2144,11 @@ uint64_t obs_get_average_frame_time_ns(void) return obs ? obs->video.video_avg_frame_time_ns : 0; } +uint64_t obs_get_frame_interval_ns(void) +{ + return obs ? obs->video.video_frame_interval_ns : 0; +} + enum obs_obj_type obs_obj_get_type(void *obj) { struct obs_context_data *context = obj; diff --git a/libobs/obs.h b/libobs/obs.h index 789e90d1bbe196b454c6e55ea5e32d62a62b7e25..90e464fce17329b36bbd4d7fafd6ebfa93f61aa5 100644 --- a/libobs/obs.h +++ b/libobs/obs.h @@ -727,6 +727,7 @@ EXPORT uint64_t obs_get_video_frame_time(void); EXPORT double obs_get_active_fps(void); EXPORT uint64_t obs_get_average_frame_time_ns(void); +EXPORT uint64_t obs_get_frame_interval_ns(void); EXPORT uint32_t obs_get_total_frames(void); EXPORT uint32_t obs_get_lagged_frames(void);