diff --git a/libobs/obs-source.c b/libobs/obs-source.c index 25b7cb824..da9fbf8f5 100644 --- a/libobs/obs-source.c +++ b/libobs/obs-source.c @@ -2435,3 +2435,19 @@ void obs_source_dec_showing(obs_source_t *source) { obs_source_deactivate(source, AUX_VIEW); } + +void obs_source_enum_filters(obs_source_t *source, + obs_source_enum_proc_t callback, void *param) +{ + if (!source || !callback) + return; + + pthread_mutex_lock(&source->filter_mutex); + + for (size_t i = 0; i < source->filters.num; i++) { + struct obs_source *filter = source->filters.array[i]; + callback(source, filter, param); + } + + pthread_mutex_unlock(&source->filter_mutex); +} diff --git a/libobs/obs.h b/libobs/obs.h index e2ca0d8a6..dbf2c9faf 100644 --- a/libobs/obs.h +++ b/libobs/obs.h @@ -794,6 +794,10 @@ EXPORT void obs_source_inc_showing(obs_source_t *source); */ EXPORT void obs_source_dec_showing(obs_source_t *source); +/** Enumerates filters assigned to the source */ +EXPORT void obs_source_enum_filters(obs_source_t *source, + obs_source_enum_proc_t callback, void *param); + /* ------------------------------------------------------------------------- */ /* Functions used by sources */