audio_filter: Add noise gate filter
This is a noise gate audio filter implementation for VLC player. This implementation ports the concept from MPlayer's af_gate.c by Anders Johansson, while following VLC's module structure as seen in gain.c. The noise gate reduces the power of audio signals that fall below a certain threshold, reducing background noise and unwanted sounds.
Key implementation details:
- Multi-channel support by processing each channel independently,
- proper memory management,
- EMA based smooth transitioning when signals cross the threshold in either direction,
- uses attack/release times to control how quickly gain changes occur, and
- calculates a running power estimate for each channel using a time constant.
Several parameters from the original code are exposed as user options (threshold, attack time, release time), while others were omitted for simplicity. Since the original MPlayer implementation had incomplete gating logic, it has been completed here with proper attenuation and smooth transitions using an additional gain parameter for both threshold crossing directions.