History

avfilter/af_afftdn: remove special handling for first and last bin

Paul B Mahol committed 4 years ago

Commit e7caa181 parent ea777331 file · +6 −39Browse files

Showing the changes to libavfilter (1 of 1 file). Show all

Unified · Split

libavfilter/af_afftdn.c+6−39
@@ -309,20 +309,9 @@ static void process_frame(AudioFFTDeNoiseContext *s, DeNoiseChannel *dnch, · 308 unmodified lines
309 double *prior, double *prior_band_excit, int track_noise)309 double *prior, double *prior_band_excit, int track_noise)
310{310{
311 double d1, d2, d3, gain;311 double d1, d2, d3, gain;
312 int n, i1;312 int n = 0, i1;
313 313
314 d1 = fft_data[0].re * fft_data[0].re;314 for (int i = 0; i < s->fft_length2; i++) {
315 dnch->noisy_data[0] = d1;
316 d2 = d1 / dnch->abs_var[0];
317 d3 = RATIO * prior[0] + RRATIO * fmax(d2 - 1.0, 0.0);
318 gain = d3 / (1.0 + d3);
319 gain *= (gain + M_PI_4 / fmax(d2, 1.0E-6));
320 prior[0] = (d2 * gain);
321 dnch->clean_data[0] = (d1 * gain);
322 gain = sqrt(gain);
323 dnch->gain[0] = gain;
324 n = 0;
325 for (int i = 1; i < s->fft_length2; i++) {
326 d1 = fft_data[i].re * fft_data[i].re + fft_data[i].im * fft_data[i].im;315 d1 = fft_data[i].re * fft_data[i].re + fft_data[i].im * fft_data[i].im;
327 if (d1 > s->sample_floor)316 if (d1 > s->sample_floor)
328 n = i;317 n = i;
@@ -337,19 +326,7 @@ static void process_frame(AudioFFTDeNoiseContext *s, DeNoiseChannel *dnch, · 8 unmodified lines
337 gain = sqrt(gain);326 gain = sqrt(gain);
338 dnch->gain[i] = gain;327 dnch->gain[i] = gain;
339 }328 }
340 d1 = fft_data[0].im * fft_data[0].im;329
341 if (d1 > s->sample_floor)
342 n = s->fft_length2;
343
344 dnch->noisy_data[s->fft_length2] = d1;
345 d2 = d1 / dnch->abs_var[s->fft_length2];
346 d3 = RATIO * prior[s->fft_length2] + RRATIO * fmax(d2 - 1.0, 0.0);
347 gain = d3 / (1.0 + d3);
348 gain *= gain + M_PI_4 / fmax(d2, 1.0E-6);
349 prior[s->fft_length2] = d2 * gain;
350 dnch->clean_data[s->fft_length2] = d1 * gain;
351 gain = sqrt(gain);
352 dnch->gain[s->fft_length2] = gain;
353 if (n > s->fft_length2 - 2) {330 if (n > s->fft_length2 - 2) {
354 n = s->bin_count;331 n = s->bin_count;
355 i1 = s->noise_band_count;332 i1 = s->noise_band_count;
@@ -472,7 +449,7 @@ static void process_frame(AudioFFTDeNoiseContext *s, DeNoiseChannel *dnch, · 116 unmodified lines
472 dnch->gain[s->fft_length2] = limit_gain(dnch->gain[s->fft_length2], s->max_gain);449 dnch->gain[s->fft_length2] = limit_gain(dnch->gain[s->fft_length2], s->max_gain);
473 }450 }
474 451
475 for (int i = 1; i < s->fft_length2; i++) {452 for (int i = 0; i < s->fft_length2; i++) {
476 if (dnch->amt[i] > dnch->abs_var[i]) {453 if (dnch->amt[i] > dnch->abs_var[i]) {
477 dnch->gain[i] = 1.0;454 dnch->gain[i] = 1.0;
478 } else if (dnch->amt[i] > dnch->min_abs_var[i]) {455 } else if (dnch->amt[i] > dnch->min_abs_var[i]) {
@@ -483,13 +460,7 @@ static void process_frame(AudioFFTDeNoiseContext *s, DeNoiseChannel *dnch, · 4 unmodified lines
483 }460 }
484 }461 }
485 462
486 gain = dnch->gain[0];463 for (int i = 0; i < s->fft_length2; i++) {
487 dnch->clean_data[0] = (gain * gain * dnch->noisy_data[0]);
488 fft_data[0].re *= gain;
489 gain = dnch->gain[s->fft_length2];
490 dnch->clean_data[s->fft_length2] = (gain * gain * dnch->noisy_data[s->fft_length2]);
491 fft_data[0].im *= gain;
492 for (int i = 1; i < s->fft_length2; i++) {
493 gain = dnch->gain[i];464 gain = dnch->gain[i];
494 dnch->clean_data[i] = (gain * gain * dnch->noisy_data[i]);465 dnch->clean_data[i] = (gain * gain * dnch->noisy_data[i]);
495 fft_data[i].re *= gain;466 fft_data[i].re *= gain;
@@ -911,10 +882,6 @@ static void sample_noise_block(AudioFFTDeNoiseContext *s, · 415 unmodified lines
911 k = 0;882 k = 0;
912 n = j;883 n = j;
913 edgemax = fmin(s->fft_length2, s->noise_band_edge[15]);884 edgemax = fmin(s->fft_length2, s->noise_band_edge[15]);
914 dnch->fft_out[s->fft_length2].re = dnch->fft_out[0].im;
915 dnch->fft_out[0].im = 0.0;
916 dnch->fft_out[s->fft_length2].im = 0.0;
917
918 for (int i = j; i <= edgemax; i++) {885 for (int i = j; i <= edgemax; i++) {
919 if ((i == j) && (i < edgemax)) {886 if ((i == j) && (i < edgemax)) {
920 if (j > edge) {887 if (j > edge) {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t