More fine energy tuning, compensation for N=2
authorJean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Tue, 31 Aug 2010 03:35:02 +0000 (23:35 -0400)
committerJean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Tue, 31 Aug 2010 03:35:02 +0000 (23:35 -0400)
libcelt/rate.c
libcelt/rate.h

index 22752ca..319050f 100644 (file)
@@ -189,6 +189,10 @@ static inline void interp_bits2pulses(const CELTMode *m, int start, int end, int
       /* Offset for the number of fine bits compared to their "fair share" of total/N */
       offset = N*C*(((m->logN[j] + logM)>>1)-FINE_OFFSET);
 
+      /* N=2 is the only point that doesn't match the curve */
+      if (N==2)
+         offset += N*C<<BITRES>>2;
+
       /* Changing the offset for allocating the second and third fine energy bit */
       if (bits[j] + offset < den*2<<BITRES)
          offset += (m->logN[j] + logM)*N*C>>BITRES-1;
index 4761809..37f720c 100644 (file)
@@ -40,7 +40,7 @@
 #define LOG_MAX_PULSES 7
 
 #define BITRES 3
-#define FINE_OFFSET 19
+#define FINE_OFFSET 21
 #define QTHETA_OFFSET 6
 #define QTHETA_OFFSET_STEREO 4