Skip to content

feat: dynamic range compressor for dialogue boost / action limiting - #3117

Draft
fgmitesh wants to merge 17 commits into
recloudstream:masterfrom
fgmitesh:feat/dynamic-range-compressor
Draft

feat: dynamic range compressor for dialogue boost / action limiting#3117
fgmitesh wants to merge 17 commits into
recloudstream:masterfrom
fgmitesh:feat/dynamic-range-compressor

Conversation

@fgmitesh

@fgmitesh fgmitesh commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Adds a real-time dynamic range compressor accessible via a new
"Compressor" button next to Tracks in the player controls.

Ported from VLC's compressor.c (LGPL, Steve Harris / Ronald Wright).
Implemented as a Media3 AudioProcessor injected into DefaultAudioSink
— sits directly in the audio pipeline, zero overhead when disabled.

Controls: threshold, ratio, attack, release, makeup gain.
All adjustable live via sliders with no player reload needed.
Settings are persisted across sessions.
Defaults: threshold -14dB, ratio 4:1, attack 10ms, release 50ms,
makeup +6dB.

Works with both nextlib and default decoder paths.
Full TV remote navigation. Correctly included in isDialogOpen().

This class implements a real-time dynamic range compressor as an AudioProcessor, allowing for audio signal compression based on specified parameters. It includes methods for configuring audio format, processing input, and managing internal state.
Added support for dynamic range compression in audio sink.
Added a DynamicRangeCompressor instance to the audio sink for live parameter updates.
@fgmitesh

fgmitesh commented Aug 9, 2026

Copy link
Copy Markdown
Contributor Author

TESTING IS REMAINING = DRAFT FOR NOW

@fgmitesh

fgmitesh commented Aug 9, 2026

Copy link
Copy Markdown
Contributor Author

It's almost done (Yeah it's W.I.P)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant