removed some int div
authorJean-Marc Valin <Jean-Marc.Valin@csiro.au>
Thu, 27 Mar 2008 01:22:44 +0000 (12:22 +1100)
committerJean-Marc Valin <Jean-Marc.Valin@csiro.au>
Thu, 27 Mar 2008 01:22:44 +0000 (12:22 +1100)
libcelt/rate.c
libcelt/vq.c

index fe0bad4..2576159 100644 (file)
@@ -152,7 +152,7 @@ void compute_alloc_cache(CELTMode *m)
 
 #endif /* !STATIC_MODES */
 
 
 #endif /* !STATIC_MODES */
 
-static int bits2pulses(const CELTMode *m, int band, int bits)
+static inline int bits2pulses(const CELTMode *m, int band, int bits)
 {
    int i;
    int lo, hi;
 {
    int i;
    int lo, hi;
index ce8f056..58c8e57 100644 (file)
@@ -98,6 +98,7 @@ void alg_quant(celt_norm_t *X, celt_mask_t *W, int N, int K, const celt_norm_t *
    celt_word32_t sum;
    celt_word32_t xy, yy, yp;
    celt_word16_t Rpp;
    celt_word32_t sum;
    celt_word32_t xy, yy, yp;
    celt_word16_t Rpp;
+   int N_1; /* Inverse of N, in Q14 format (even for float) */
 #ifdef FIXED_POINT
    int yshift;
 #endif
 #ifdef FIXED_POINT
    int yshift;
 #endif
@@ -110,7 +111,8 @@ void alg_quant(celt_norm_t *X, celt_mask_t *W, int N, int K, const celt_norm_t *
    ALLOC(y, N, celt_norm_t);
    ALLOC(iy, N, int);
    ALLOC(signx, N, int);
    ALLOC(y, N, celt_norm_t);
    ALLOC(iy, N, int);
    ALLOC(signx, N, int);
-
+   N_1 = 16384/N;
+   
    for (j=0;j<N;j++)
    {
       if (X[j]>0)
    for (j=0;j<N;j++)
    {
       if (X[j]>0)
@@ -146,7 +148,7 @@ void alg_quant(celt_norm_t *X, celt_mask_t *W, int N, int K, const celt_norm_t *
       int best_id;
       
       /* Decide on how many pulses to find at once */
       int best_id;
       
       /* Decide on how many pulses to find at once */
-      pulsesAtOnce = pulsesLeft/N;
+      pulsesAtOnce = (pulsesLeft*N_1)>>14; /* pulsesLeft/N */
       if (pulsesAtOnce<1)
          pulsesAtOnce = 1;
 
       if (pulsesAtOnce<1)
          pulsesAtOnce = 1;