Browse Source

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.
hwdro 10 years ago
parent
commit
fc19d9d11b
1 changed files with 2 additions and 2 deletions
  1. 2 2
      plugins/obs-filters/noise-gate-filter.c

+ 2 - 2
plugins/obs-filters/noise-gate-filter.c

@@ -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;