Minor div optimization -- reducing denominators
authorJean-Marc Valin <jmvalin@jmvalin.ca>
Thu, 30 Jan 2014 16:27:37 +0000 (11:27 -0500)
committerJean-Marc Valin <jmvalin@jmvalin.ca>
Thu, 30 Jan 2014 16:27:37 +0000 (11:27 -0500)
celt/bands.c
celt/rate.c

index 0acb25c..30a5894 100644 (file)
@@ -282,7 +282,7 @@ void anti_collapse(const CELTMode *m, celt_norm *X_, unsigned char *collapse_mas
       N0 = m->eBands[i+1]-m->eBands[i];
       /* depth in 1/8 bits */
       celt_assert(pulses[i]>=0);
       N0 = m->eBands[i+1]-m->eBands[i];
       /* depth in 1/8 bits */
       celt_assert(pulses[i]>=0);
-      depth = celt_udiv(1+pulses[i], (m->eBands[i+1]-m->eBands[i])<<LM);
+      depth = celt_udiv(1+pulses[i], (m->eBands[i+1]-m->eBands[i]))>>LM;
 
 #ifdef FIXED_POINT
       thresh32 = SHR32(celt_exp2(-SHL16(depth, 10-BITRES)),1);
 
 #ifdef FIXED_POINT
       thresh32 = SHR32(celt_exp2(-SHL16(depth, 10-BITRES)),1);
index f2e49a5..f85c3ee 100644 (file)
@@ -466,7 +466,7 @@ static OPUS_INLINE int interp_bits2pulses(const CELTMode *m, int start, int end,
 
          /* Divide with rounding */
          ebits[j] = IMAX(0, (bits[j] + offset + (den<<(BITRES-1))));
 
          /* Divide with rounding */
          ebits[j] = IMAX(0, (bits[j] + offset + (den<<(BITRES-1))));
-         ebits[j] = celt_udiv(ebits[j], den<<BITRES);
+         ebits[j] = celt_udiv(ebits[j], den)>>BITRES;
 
          /* Make sure not to bust */
          if (C*ebits[j] > (bits[j]>>BITRES))
 
          /* Make sure not to bust */
          if (C*ebits[j] > (bits[j]>>BITRES))