Eliminate some divisions from rate.c.
authorGregory Maxwell <greg@xiph.org>
Sun, 19 Dec 2010 07:50:12 +0000 (02:50 -0500)
committerJean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Sun, 19 Dec 2010 12:53:04 +0000 (07:53 -0500)
libcelt/rate.c

index f2d38dd..202fdb1 100644 (file)
@@ -149,6 +149,7 @@ static inline int interp_bits2pulses(const CELTMode *m, int start, int end, int
    int i, j;
    int logM;
    const int C = CHANNELS(_C);
+   int stereo;
    int codedBands=-1;
    int alloc_floor;
    int left, percoeff;
@@ -157,6 +158,7 @@ static inline int interp_bits2pulses(const CELTMode *m, int start, int end, int
    SAVE_STACK;
 
    alloc_floor = C<<BITRES;
+   stereo = C>1;
 
    logM = LM<<BITRES;
    lo = 0;
@@ -324,7 +326,7 @@ static inline int interp_bits2pulses(const CELTMode *m, int start, int end, int
 
          /* Make sure not to bust */
          if (C*ebits[j] > (bits[j]>>BITRES))
-            ebits[j] = bits[j]/C >> BITRES;
+            ebits[j] = bits[j] >> stereo >> BITRES;
 
          /* More than 7 is useless because that's about as far as PVQ can go */
          if (ebits[j]>7)
@@ -332,7 +334,7 @@ static inline int interp_bits2pulses(const CELTMode *m, int start, int end, int
 
       } else {
          /* For N=1, all bits go to fine energy except for a single sign bit */
-         ebits[j] = IMIN(IMAX(0,(bits[j]/C >> BITRES)-1),7);
+         ebits[j] = IMIN(IMAX(0,(bits[j] >> stereo >> BITRES)-1),7);
          fine_priority[j] = (ebits[j]+1)*C<<BITRES >= (bits[j]-balance);
          /* N=1 bands can't take advantage of the re-balancing in
              quant_all_bands() because they don't have shape, only fine energy.
@@ -353,7 +355,7 @@ static inline int interp_bits2pulses(const CELTMode *m, int start, int end, int
    /* The skipped bands use all their bits for fine energy. */
    for (;j<end;j++)
    {
-      ebits[j] = bits[j]/C >> BITRES;
+      ebits[j] = bits[j] >> stereo >> BITRES;
       celt_assert(C*ebits[j]<<BITRES == bits[j]);
       bits[j] = 0;
       fine_priority[j] = ebits[j]<1;