[filters] use updated versions of filters + add Luma Key - #6014
Closed
sandboxcoder wants to merge 1 commit into
Closed
[filters] use updated versions of filters + add Luma Key#6014sandboxcoder wants to merge 1 commit into
sandboxcoder wants to merge 1 commit into
Conversation
3 tasks
BundleMonFiles added (4)
Total files change +12.67MB Final result: ✅ View report in BundleMon website ➡️ |
* add missing filters (Luma Key, 3-Band Eq, and Upward Compressor * add version 2 of all known filters that were updated
sandboxcoder
force-pushed
the
rno/filterTypes
branch
from
July 13, 2026 17:10
4a7664c to
ebc60cc
Compare
Contributor
Author
|
Closing this one because it can be released as a bundle update. See bundle PR: #6018 |
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.
yarn test:file test-dist/test/regular/api/clipboard.js --match "Copy/paste filters between scene collections"and verify legacy filter is converted into v2 filterDependencies
This change is semi-related to this OSN update which filters out disabled/obsolete filters. But that change is not required for this PR.
Regression test cases for QA
This PR updates the following filters: Image Mask/Blend, Color Correction, Color Key, Sharpen, Chroma Key, Noise Suppression, and Luma Key.
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.