libobs: Add obs_reset_audio_monitoring()

Reloads all audio monitoring devices
This commit is contained in:
tt2468
2022-06-26 01:44:27 -07:00
committed by Lain
parent a49b35c3de
commit 3b0ca4527a
3 changed files with 24 additions and 4 deletions
+6
View File
@@ -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.
+16 -4
View File
@@ -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;
+2
View File
@@ -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);