shithub: opus

Download patch

ref: 0de9d8abec2fe2a2477c88b0974ca5f4abcb64ff
parent: a75e25dac59fb6750a635d4d36f6c8dd22e900d5
author: Jean-Marc Valin <[email protected]>
date: Mon Mar 24 13:06:08 EDT 2008

Making bits2pulses() use a fixed number of iterations to allow further
optimisations.

--- a/libcelt/rate.c
+++ b/libcelt/rate.c
@@ -154,11 +154,15 @@
 
 static int bits2pulses(const CELTMode *m, int band, int bits)
 {
+   int i;
    int lo, hi;
    lo = 0;
    hi = MAX_PULSES-1;
    
-   while (hi-lo != 1)
+   /* Instead of using the "bisection confition" we use a fixed number of 
+      iterations because it should be faster */
+   /*while (hi-lo != 1)*/
+   for (i=0;i<LOG_MAX_PULSES;i++)
    {
       int mid = (lo+hi)>>1;
       if (m->bits[band][mid] >= bits)
--- a/libcelt/rate.h
+++ b/libcelt/rate.h
@@ -33,6 +33,7 @@
 #define RATE_H
 
 #define MAX_PULSES 64
+#define LOG_MAX_PULSES 6
 
 /** Computes a cache of the pulses->bits mapping in each band */
 void compute_alloc_cache(CELTMode *m);