denoiser now behaves correctly with 240-sample frames
authorjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Tue, 20 May 2003 02:46:34 +0000 (02:46 +0000)
committerjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Tue, 20 May 2003 02:46:34 +0000 (02:46 +0000)
git-svn-id: http://svn.xiph.org/trunk/speex@4732 0101bb08-14d6-0310-b084-bc0e0c8e3800

libspeex/denoise.c
libspeex/testdenoise.c

index 2a1b5f3..30bab00 100644 (file)
@@ -99,6 +99,8 @@ DenoiseState *denoise_state_init(int frame_size)
       }
    }
 
+   if (st->ps_size < 3*st->frame_size/4)
+      st->ps_size = st->ps_size * 3 / 2;
    N = st->ps_size;
    N3 = 2*N - st->frame_size;
    N4 = st->frame_size - N3;
@@ -120,6 +122,8 @@ DenoiseState *denoise_state_init(int frame_size)
    st->outbuf = (float*)speex_alloc(N3*sizeof(float));
 
    conj_window(st->window, 2*N3);
+   for (i=2*N3;i<2*st->ps_size;i++)
+      st->window[i]=1;
    for (i=N3-1;i>=0;i--)
    {
       st->window[i+N3+N4]=st->window[i+N3];
@@ -301,7 +305,7 @@ int denoise(DenoiseState *st, float *x)
 #endif
 
    /* Noise estimation always updated for the 20 first times */
-   if (st->nb_adapt<20)
+   if (st->nb_adapt<15)
    {
       update_noise(st, ps);
       st->last_update=0;
index 0dfde8e..dfab883 100644 (file)
@@ -1,7 +1,7 @@
 #include "speex_denoise.h"
 #include <stdio.h>
 
-#define NN 160
+#define NN 240
 
 int main()
 {