From 5ea9fcc9512749c3e358a052709039e6b453ebd4 Mon Sep 17 00:00:00 2001 From: derrod Date: Fri, 1 Dec 2023 21:25:46 +0100 Subject: [PATCH] libobs: Add obs_view_enum_video_info --- libobs/obs-view.c | 18 ++++++++++++++++++ libobs/obs.h | 6 ++++++ 2 files changed, 24 insertions(+) diff --git a/libobs/obs-view.c b/libobs/obs-view.c index 43add2634..4437ac8ab 100644 --- a/libobs/obs-view.c +++ b/libobs/obs-view.c @@ -218,3 +218,21 @@ bool obs_view_get_video_info(obs_view_t *view, struct obs_video_info *ovi) return false; } + +void obs_view_enum_video_info(obs_view_t *view, + bool (*enum_proc)(void *, + struct obs_video_info *), + void *param) +{ + pthread_mutex_lock(&obs->video.mixes_mutex); + + for (size_t i = 0, num = obs->video.mixes.num; i < num; i++) { + struct obs_core_video_mix *mix = obs->video.mixes.array[i]; + if (mix->view != view) + continue; + if (!enum_proc(param, &mix->ovi)) + break; + } + + pthread_mutex_unlock(&obs->video.mixes_mutex); +} diff --git a/libobs/obs.h b/libobs/obs.h index d19b240a4..4441df16b 100644 --- a/libobs/obs.h +++ b/libobs/obs.h @@ -955,6 +955,12 @@ EXPORT void obs_view_remove(obs_view_t *view); EXPORT bool obs_view_get_video_info(obs_view_t *view, struct obs_video_info *ovi); +/** Enumerate the video info of all mixes using the specified view context */ +EXPORT void obs_view_enum_video_info(obs_view_t *view, + bool (*enum_proc)(void *, + struct obs_video_info *), + void *param); + /* ------------------------------------------------------------------------- */ /* Display context */