diff --git a/docs/sphinx/reference-sources.rst b/docs/sphinx/reference-sources.rst index b9e06b079..2d376d374 100644 --- a/docs/sphinx/reference-sources.rst +++ b/docs/sphinx/reference-sources.rst @@ -1013,6 +1013,12 @@ General Source Functions --------------------- +.. function:: size_t obs_source_filter_count(const obs_source_t *source) + + Returns the number of filters the source has. + +--------------------- + .. function:: bool obs_source_enabled(const obs_source_t *source) void obs_source_set_enabled(obs_source_t *source, bool enabled) diff --git a/libobs/obs-source.c b/libobs/obs-source.c index e8c33be23..e1ad9bb48 100644 --- a/libobs/obs-source.c +++ b/libobs/obs-source.c @@ -4309,6 +4309,13 @@ obs_source_t *obs_source_get_filter_by_name(obs_source_t *source, return filter; } +size_t obs_source_filter_count(const obs_source_t *source) +{ + return obs_source_valid(source, "obs_source_filter_count") + ? source->filters.num + : 0; +} + bool obs_source_enabled(const obs_source_t *source) { return obs_source_valid(source, "obs_source_enabled") ? source->enabled diff --git a/libobs/obs.h b/libobs/obs.h index dd2a69fde..27c4bf036 100644 --- a/libobs/obs.h +++ b/libobs/obs.h @@ -1101,6 +1101,9 @@ EXPORT void obs_source_enum_filters(obs_source_t *source, EXPORT obs_source_t *obs_source_get_filter_by_name(obs_source_t *source, const char *name); +/** Gets the number of filters the source has. */ +EXPORT size_t obs_source_filter_count(const obs_source_t *source); + EXPORT void obs_source_copy_filters(obs_source_t *dst, obs_source_t *src); EXPORT void obs_source_copy_single_filter(obs_source_t *dst, obs_source_t *filter);