Unified · Split
| @@ -309,20 +309,9 @@ static void process_frame(AudioFFTDeNoiseContext *s, DeNoiseChannel *dnch, · 308 unmodified lines | ||
| 309 | 309 | double *prior, double *prior_band_excit, int track_noise) |
| 310 | 310 | { |
| 311 | 311 | double d1, d2, d3, gain; |
| 312 | − int n, i1; | |
| 313 | − | |
| 314 | − d1 = fft_data[0].re * fft_data[0].re; | |
| 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++) { | |
| 312 | + int n = 0, i1; | |
| 313 | + | |
| 314 | + for (int i = 0; i < s->fft_length2; i++) { | |
| 326 | 315 | d1 = fft_data[i].re * fft_data[i].re + fft_data[i].im * fft_data[i].im; |
| 327 | 316 | if (d1 > s->sample_floor) |
| 328 | 317 | n = i; |
| @@ -337,19 +326,7 @@ static void process_frame(AudioFFTDeNoiseContext *s, DeNoiseChannel *dnch, · 8 unmodified lines | ||
| 337 | 326 | gain = sqrt(gain); |
| 338 | 327 | dnch->gain[i] = gain; |
| 339 | 328 | } |
| 340 | − d1 = fft_data[0].im * fft_data[0].im; | |
| 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; | |
| 329 | + | |
| 353 | 330 | if (n > s->fft_length2 - 2) { |
| 354 | 331 | n = s->bin_count; |
| 355 | 332 | i1 = s->noise_band_count; |
| @@ -472,7 +449,7 @@ static void process_frame(AudioFFTDeNoiseContext *s, DeNoiseChannel *dnch, · 116 unmodified lines | ||
| 472 | 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 | 453 | if (dnch->amt[i] > dnch->abs_var[i]) { |
| 477 | 454 | dnch->gain[i] = 1.0; |
| 478 | 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]; | |
| 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++) { | |
| 463 | + for (int i = 0; i < s->fft_length2; i++) { | |
| 493 | 464 | gain = dnch->gain[i]; |
| 494 | 465 | dnch->clean_data[i] = (gain * gain * dnch->noisy_data[i]); |
| 495 | 466 | fft_data[i].re *= gain; |
| @@ -911,10 +882,6 @@ static void sample_noise_block(AudioFFTDeNoiseContext *s, · 415 unmodified lines | ||
| 911 | 882 | k = 0; |
| 912 | 883 | n = j; |
| 913 | 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 | 885 | for (int i = j; i <= edgemax; i++) { |
| 919 | 886 | if ((i == j) && (i < edgemax)) { |
| 920 | 887 | if (j > edge) { |