Fixed a root stability bug...
authorjmvalin <jmvalin@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Fri, 19 Jul 2002 18:48:15 +0000 (18:48 +0000)
committerjmvalin <jmvalin@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Fri, 19 Jul 2002 18:48:15 +0000 (18:48 +0000)
git-svn-id: http://svn.xiph.org/trunk/speex@3696 0101bb08-14d6-0310-b084-bc0e0c8e3800

libspeex/filters.c
libspeex/ltp.c

index 1c9143e..e42d0e5 100644 (file)
@@ -74,12 +74,16 @@ void lpc_flat(float gamma, float *lpc_in, float *lpc_out, int order)
    float re[10], im[10], conv[10];
    float alpha;
    alpha = 1/(4-4*gamma);
-   poly_roots(lpc_in, re, im, conv, 10, 20, 7);
+   poly_roots(lpc_in, re, im, conv, 10, 30, 7);
    for (i=0;i<order;i++)
    {
       float fact,tmp;
       float radius = sqrt(re[i]*re[i]+im[i]*im[i]);
+      /*if (radius>1)
+        fprintf(stderr, "radius = %f\n", radius);*/
       tmp=1-radius;
+      if (tmp<0)
+         tmp=0;
       if (tmp>2-2*gamma)
          fact = tmp;
       else
index 83a4755..51863f0 100644 (file)
@@ -275,7 +275,7 @@ float *exc2
 )
 {
    int i,j;
-   int cdbk_index, pitch, best_gain_index=0;
+   int cdbk_index, pitch=0, best_gain_index=0;
    float *best_exc;
    int best_pitch=0;
    float err, best_err=-1;
@@ -345,7 +345,6 @@ int lost)
    gain_cdbk=params->gain_cdbk;
 
    pitch = speex_bits_unpack_unsigned(bits, params->pitch_bits);
-   printf ("decode ltp: %d %d %d\n", start, end, pitch);
    pitch += start;
    gain_index = speex_bits_unpack_unsigned(bits, params->gain_bits);
    /*printf ("decode pitch: %d %d\n", pitch, gain_index);*/