Showing the changes to libavfilter (1 of 1 file). Show all
Unified · Split
| @@ -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) { |