Add new source filters#6022
Closed
sandboxcoder wants to merge 3 commits into
Closed
Conversation
* add missing filters (Luma Key, 3-Band Eq, and Upward Compressor * add version 2 of all known filters that were updated
* use custom branch
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates Streamlabs Desktop’s source filter allowlist to expose newly added OBS/OSN filters (Luma Key, Upward Compressor, 3-Band Equalizer) and to add v2 IDs for several existing filters, alongside bumping the bundled obs-studio-node dependency and updating English filter labels.
Changes:
- Bump
obs-studio-nodedependency version to pick up updated/filtered OBS filter IDs. - Extend the filter type union + allowlist to include new filters and v2 variants of existing filters.
- Add new English i18n strings for the newly exposed filters.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
scripts/repositories.json |
Updates the obs-studio-node dependency version used for native dependency installs. |
app/services/source-filters.ts |
Adds new filter IDs (and v2 variants) to the type union and the allowlisted filter types exposed in the UI. |
app/i18n/en-US/filters.json |
Adds en-US translation keys for the new filter names shown in the UI. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
BundleMonFiles added (4)
Total files change +12.67MB Final result: ✅ View report in BundleMon website ➡️ |
* The legacy version of luma_key_filter is not supported
sandboxcoder
marked this pull request as ready for review
July 16, 2026 00:01
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Dependencies
This change depends on this OSN update which filters out disabled/obsolete filters.
Regression test cases for QA
This PR updates the following filters to their version 2 counterparts: Image Mask/Blend, Color Correction, Color Key, Sharpen, Chroma Key, Noise Suppression.
This PR adds Upward Compressor (Audio filter), Luma Key Filter (Video), and 3-Band Equalizer (Audio filter)
What changed from version 1 to version 2?
Color Correction - v2 adds proper color space negotiation so the filter works correctly in SDR/WCG pipelines without mangling HDR content, whereas v1 blindly assumed GS_RGBA for everything.
Image Mask/Blend- v2 is a precision and color-pipeline upgrade — higher-resolution opacity and proper sRGB/color space awareness
Color Key Filter- v2 is a substantial rework: opacity is redesigned from an alpha-packed color hack into a proper float parameter, brightness scaling is removed, the contrast/brightness ranges are expanded, and the whole render path gains proper color space awareness.
Sharpness - only adds SRGB capability flag
Chroma Key - the chroma key v2 changes are a mirror of the color key v2 changes — opacity redesigned from an alpha-packed color hack to a proper float, brightness scaling removed, expanded ranges, and full color space pipeline awareness added.
Noise Suppression (Audio) - The change is essentially: v2 promotes RNN noise suppression as the preferred default when available, rather than only falling back to it when Speex isn't present. RNN = Recurrent Neural Network. It refers to a neural network-based noise suppression approach (specifically the https://jmvalin.ca/demo/rnnoise/ library), as opposed to the classic DSP-based Speex noise suppression.
New filters that this PR exposes
Luma Key Filer:
The luma key filter makes pixels transparent based on their brightness (luminance) rather than a specific color. It exposes four parameters:
For example, with default settings (luma_min=0.0, luma_max=1.0, no smoothing), nothing is keyed. If you set luma_min=0.5, pixels darker than 50% brightness become transparent — useful for removing black backgrounds or applying overlays that blend based on brightness
rather than color.
It's commonly used with white/black backgrounds or as a way to composite elements where a color-based chroma key wouldn't work.
Upwards Compressor: The upward compressor is an audio dynamics filter that boosts quiet sounds up toward a threshold, as opposed to a traditional (downward) compressor which turns loud sounds down.
How it works:
Parameters:
Practical use: leveling out a quiet speaker or microphone so soft parts of speech become more audible without turning up the overall volume — the opposite problem from what a downward compressor solves. It shares the same underlying code as the expander filter, just
with is_upwcomp = true which flips the gain direction.
3 Band Equalizer: It's a simple 3-band equalizer audio filter. It splits the audio signal into three frequency bands and lets you boost or cut each by ±20 dB:
How it works under the hood:
The crossover frequencies are hardcoded at 800 Hz and 5000 Hz. For each audio sample it runs two 4-pole lowpass filters in series (one tuned to 800 Hz, one to 5000 Hz) using a simple first-order IIR structure. The three bands are then derived by subtraction:
Each band is scaled by its gain multiplier and the three are summed back together. The EQ_EPSILON added each step prevents denormal floating-point values from causing performance issues.
It's intentionally simple — no adjustable crossover frequencies, no shelf or peak filters, just three fixed bands with gain controls.