From 3b0ca4527a0c5d4f0da2c425d5d9ded8da5d371a Mon Sep 17 00:00:00 2001 From: tt2468 Date: Sun, 26 Jun 2022 01:44:27 -0700 Subject: [PATCH] libobs: Add obs_reset_audio_monitoring() Reloads all audio monitoring devices --- docs/sphinx/reference-core.rst | 6 ++++++ libobs/obs.c | 20 ++++++++++++++++---- libobs/obs.h | 2 ++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/docs/sphinx/reference-core.rst b/docs/sphinx/reference-core.rst index 969dcab70..a2a3a1c81 100644 --- a/docs/sphinx/reference-core.rst +++ b/docs/sphinx/reference-core.rst @@ -540,6 +540,12 @@ Video, Audio, and Graphics --------------------- +.. function:: void obs_reset_audio_monitoring(void) + + Resets all audio monitoring devices. + +--------------------- + .. function:: void obs_enum_audio_monitoring_devices(obs_enum_audio_device_cb cb, void *data) Enumerates audio devices which can be used for audio monitoring. diff --git a/libobs/obs.c b/libobs/obs.c index 7359cd829..949401e09 100644 --- a/libobs/obs.c +++ b/libobs/obs.c @@ -3018,6 +3018,21 @@ bool obs_obj_is_private(void *obj) return context->private; } +void obs_reset_audio_monitoring(void) +{ + if (!obs_audio_monitoring_available()) + return; + + pthread_mutex_lock(&obs->audio.monitoring_mutex); + + for (size_t i = 0; i < obs->audio.monitors.num; i++) { + struct audio_monitor *monitor = obs->audio.monitors.array[i]; + audio_monitor_reset(monitor); + } + + pthread_mutex_unlock(&obs->audio.monitoring_mutex); +} + bool obs_set_audio_monitoring_device(const char *name, const char *id) { if (!name || !id || !*name || !*id) @@ -3039,10 +3054,7 @@ bool obs_set_audio_monitoring_device(const char *name, const char *id) obs->audio.monitoring_device_name = bstrdup(name); obs->audio.monitoring_device_id = bstrdup(id); - for (size_t i = 0; i < obs->audio.monitors.num; i++) { - struct audio_monitor *monitor = obs->audio.monitors.array[i]; - audio_monitor_reset(monitor); - } + obs_reset_audio_monitoring(); pthread_mutex_unlock(&obs->audio.monitoring_mutex); return true; diff --git a/libobs/obs.h b/libobs/obs.h index 334508cef..d19b240a4 100644 --- a/libobs/obs.h +++ b/libobs/obs.h @@ -832,6 +832,8 @@ typedef bool (*obs_enum_audio_device_cb)(void *data, const char *name, EXPORT bool obs_audio_monitoring_available(void); +EXPORT void obs_reset_audio_monitoring(void); + EXPORT void obs_enum_audio_monitoring_devices(obs_enum_audio_device_cb cb, void *data);