obs-filters: Fix noise-gate calculation errors

For both cases the cur_level calculations were "wrong". For one channel
case, I assume that was only an oversight, as for two channels case
cur_level "calculation", getting the level from downmixing to mono will
result in an attenuated level than expected. One solution is to use the
highest level of both channels to drive the gate.
This commit is contained in:
hwdro
2015-09-08 13:29:17 +03:00
parent b2714fa353
commit fc19d9d11b

View File

@@ -120,8 +120,8 @@ static struct obs_audio_data *noise_gate_filter_audio(void *data,
for (size_t i = 0; i < audio->frames; i++) {
float cur_level = (channels == 2)
? (fabsf(adata[0][i] + adata[1][i]) * 0.5f)
: (fabsf(adata[0][i]) * 0.5f);
? fmaxf(fabsf(adata[0][i]), fabsf(adata[1][i]))
: fabsf(adata[0][i]);
if (cur_level > open_threshold && !ng->is_open) {
ng->is_open = true;