...
authorjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Sun, 30 Nov 2003 16:35:21 +0000 (16:35 +0000)
committerjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Sun, 30 Nov 2003 16:35:21 +0000 (16:35 +0000)
git-svn-id: http://svn.xiph.org/trunk/speex@5657 0101bb08-14d6-0310-b084-bc0e0c8e3800

libspeex/filters.c
libspeex/ltp.c
libspeex/quant_lsp.c

index dbcd943..b39ebcb 100644 (file)
@@ -66,7 +66,7 @@ void bw_lpc(spx_word16_t gamma, spx_coef_t *lpc_in, spx_coef_t *lpc_out, int ord
 
 #ifdef FIXED_POINT
 
 
 #ifdef FIXED_POINT
 
-/* FIXME: These functions are ugly and probably might too much error */
+/* FIXME: These functions are ugly and probably introduce too much error */
 void signal_mul(spx_sig_t *x, spx_sig_t *y, spx_word32_t scale, int len)
 {
    int i;
 void signal_mul(spx_sig_t *x, spx_sig_t *y, spx_word32_t scale, int len)
 {
    int i;
@@ -180,8 +180,7 @@ spx_word16_t compute_rms(spx_sig_t *x, int len)
       sum += SHR(sum2,6);
    }
    
       sum += SHR(sum2,6);
    }
    
-   /*FIXME: remove division*/
-   return SHR(SHL((spx_word32_t)spx_sqrt(1+sum/len),(sig_shift+3)),SIG_SHIFT);
+   return SHR(SHL((spx_word32_t)spx_sqrt(1+DIV32(sum,len)),(sig_shift+3)),SIG_SHIFT);
 }
 
 
 }
 
 
index 107577d..3bdda1a 100644 (file)
@@ -245,10 +245,7 @@ int cdbk_offset
          x[i][0]=0;
          for (j=0;j<nsf;j++)
          {
          x[i][0]=0;
          for (j=0;j<nsf;j++)
          {
-            /* FIXME: Check for overflows */
-            /*x[i][j]+=e[i][0]*r[j]/SIG_SCALING;*/
-            x[i][j]+=SHL(MULT16_32_Q15(r[j], e[i][0]),1);
-            /*printf ("%d\n", (int)r[j]);*/
+            x[i][j]=ADD32(x[i][j],SHL(MULT16_32_Q15(r[j], e[i][0]),1));
          }
       }
    }
          }
       }
    }
@@ -351,16 +348,15 @@ int cdbk_offset
          g1=ptr[1]+32;
          g2=ptr[2]+32;
 
          g1=ptr[1]+32;
          g2=ptr[2]+32;
 
-         /* FIXME: check for possible overflows on sum and MULT16_32 */
-         sum += MULT16_32_Q14(MULT16_16_16(g0,64),C[0]);
-         sum += MULT16_32_Q14(MULT16_16_16(g1,64),C[1]);
-         sum += MULT16_32_Q14(MULT16_16_16(g2,64),C[2]);
-         sum -= MULT16_32_Q14(MULT16_16_16(g0,g1),C[3]);
-         sum -= MULT16_32_Q14(MULT16_16_16(g2,g1),C[4]);
-         sum -= MULT16_32_Q14(MULT16_16_16(g2,g0),C[5]);
-         sum -= MULT16_32_Q15(MULT16_16_16(g0,g0),C[6]);
-         sum -= MULT16_32_Q15(MULT16_16_16(g1,g1),C[7]);
-         sum -= MULT16_32_Q15(MULT16_16_16(g2,g2),C[8]);
+         sum = ADD32(sum,MULT16_32_Q14(MULT16_16_16(g0,64),C[0]));
+         sum = ADD32(sum,MULT16_32_Q14(MULT16_16_16(g1,64),C[1]));
+         sum = ADD32(sum,MULT16_32_Q14(MULT16_16_16(g2,64),C[2]));
+         sum = SUB32(sum,MULT16_32_Q14(MULT16_16_16(g0,g1),C[3]));
+         sum = SUB32(sum,MULT16_32_Q14(MULT16_16_16(g2,g1),C[4]));
+         sum = SUB32(sum,MULT16_32_Q14(MULT16_16_16(g2,g0),C[5]));
+         sum = SUB32(sum,MULT16_32_Q15(MULT16_16_16(g0,g0),C[6]));
+         sum = SUB32(sum,MULT16_32_Q15(MULT16_16_16(g1,g1),C[7]));
+         sum = SUB32(sum,MULT16_32_Q15(MULT16_16_16(g2,g2),C[8]));
 
          /* We could force "safe" pitch values to handle packet loss better */
 
 
          /* We could force "safe" pitch values to handle packet loss better */
 
index d008071..8fed7e4 100644 (file)
@@ -35,8 +35,6 @@
 
 #include "misc.h"
 
 
 #include "misc.h"
 
-/* FIXME: Get rid of this kludge quick before someone gets hurt */
-
 #ifdef FIXED_POINT
 
 #define LSP_LINEAR(i) (SHL(i+1,11))
 #ifdef FIXED_POINT
 
 #define LSP_LINEAR(i) (SHL(i+1,11))
@@ -98,7 +96,7 @@ static int lsp_quant(spx_word16_t *x, signed char *cdbk, int nbVec, int nbDim)
       for (j=0;j<nbDim;j++)
       {
          tmp=SUB16(x[j],SHL((spx_word16_t)*ptr++,5));
       for (j=0;j<nbDim;j++)
       {
          tmp=SUB16(x[j],SHL((spx_word16_t)*ptr++,5));
-         dist+=MULT16_16(tmp,tmp);
+         dist=MAC16_16(dist,tmp,tmp);
       }
       if (dist<best_dist || i==0)
       {
       }
       if (dist<best_dist || i==0)
       {
@@ -128,7 +126,7 @@ static int lsp_weight_quant(spx_word16_t *x, spx_word16_t *weight, signed char *
       for (j=0;j<nbDim;j++)
       {
          tmp=SUB16(x[j],SHL((spx_word16_t)*ptr++,5));
       for (j=0;j<nbDim;j++)
       {
          tmp=SUB16(x[j],SHL((spx_word16_t)*ptr++,5));
-         dist+=MULT16_32_Q15(weight[j],MULT16_16(tmp,tmp));
+         dist=MAC16_32_Q15(dist,weight[j],MULT16_16(tmp,tmp));
       }
       if (dist<best_dist || i==0)
       {
       }
       if (dist<best_dist || i==0)
       {
@@ -147,7 +145,6 @@ void lsp_quant_nb(spx_lsp_t *lsp, spx_lsp_t *qlsp, int order, SpeexBits *bits)
 {
    int i;
    int id;
 {
    int i;
    int id;
-   /* FIXME: get rid of that static allocation */
    spx_word16_t quant_weight[10];
    
    for (i=0;i<order;i++)
    spx_word16_t quant_weight[10];
    
    for (i=0;i<order;i++)