Filters
Filters in OBS attach to any source (scenes or inputs) to alter how that source looks or sounds, such as color correction, chroma key, and noise suppression. The plugin exposes the full OBS filter API: listing available filter types, reading and writing per-source filter chains, and reacting to filter changes via events.
Functions
| Function | Description |
|---|---|
GetSourceFilterKindList() | Refresh list of available filter types |
GetCachedFilterKinds() | Get locally cached filter type list |
GetSourceFilterList(SourceName) | Fetch all filters on a source |
GetCachedFiltersForSource(SourceName) | Get locally cached filters for a source |
HasCachedFiltersForSource(SourceName) | Check if filter data is cached for a source |
CreateSourceFilter(Source, Name, Kind, Settings) | Add a new filter to a source |
RemoveSourceFilter(Source, FilterName) | Remove a filter from a source |
SetSourceFilterEnabled(Source, Filter, Enabled) | Enable or disable a filter |
SetSourceFilterName(Source, OldName, NewName) | Rename a filter |
SetSourceFilterIndex(Source, Filter, Index) | Change filter position in chain (0 = top) |
SetSourceFilterSettings(Source, Filter, Settings, Overlay) | Update filter configuration |
GetSourceFilter(Source, Filter) | Fetch specific filter details |
GetSourceFilterDefaultSettings(Kind) | Get default settings for a filter type |
Note: Filters are identified by a SourceName + FilterName pair (no UUIDs). Filter index
0is the topmost filter in the processing chain.
Events
Subscribe to these events to react to filter changes:
OnSourceFilterCreated(SourceName, FilterName, FilterKind, FilterIndex, bEnabled): Filter added to a sourceOnSourceFilterRemoved(SourceName, FilterName): Filter removed from a sourceOnSourceFilterNameChanged(SourceName, OldName, NewName): Filter was renamedOnSourceFilterSettingsChanged(SourceName, FilterName): Filter settings were modifiedOnSourceFilterEnableStateChanged(SourceName, FilterName, bEnabled): Filter enabled/disabledOnSourceFilterListReindexed(SourceName): Filter order changed on a source
Example
// Add a color correction filter to a source, then disable it.
Subsystem->CreateSourceFilter(
TEXT("Webcam"),
TEXT("Warmth"),
TEXT("color_filter_v2"),
Settings);
Subsystem->SetSourceFilterEnabled(TEXT("Webcam"), TEXT("Warmth"), false);
// Move a filter to the top of the chain.
Subsystem->SetSourceFilterIndex(TEXT("Webcam"), TEXT("Warmth"), 0);