Adjusting pre-emphasis coefs to be exact in 16-bit precision
authorJean-Marc Valin <jean-marc.valin@octasic.com>
Thu, 27 Jan 2011 22:01:59 +0000 (17:01 -0500)
committerJean-Marc Valin <jean-marc.valin@octasic.com>
Thu, 27 Jan 2011 22:01:59 +0000 (17:01 -0500)
libcelt/modes.c

index 25393b2..7c4cc8d 100644 (file)
@@ -316,26 +316,26 @@ CELTMode *celt_mode_create(celt_int32 Fs, int frame_size, int *error)
       approximate that. */
    if(Fs < 12000) /* 8 kHz */
    {
-      mode->preemph[0] =  QCONST16(.35f, 15);
-      mode->preemph[1] = -QCONST16(.18f, 15);
-      mode->preemph[2] =  QCONST16(.272f, SIG_SHIFT);
-      mode->preemph[3] =  QCONST16(3.6765f, 13);
+      mode->preemph[0] =  QCONST16(0.3500061035f, 15);
+      mode->preemph[1] = -QCONST16(0.1799926758f, 15);
+      mode->preemph[2] =  QCONST16(0.2719726562f, SIG_SHIFT);
+      mode->preemph[3] =  QCONST16(3.6765136719f, 13);
    } else if(Fs < 24000) /* 16 kHz */
    {
-      mode->preemph[0] =  QCONST16(.6f, 15);
-      mode->preemph[1] = -QCONST16(.18f, 15);
-      mode->preemph[2] =  QCONST16(.4425f, SIG_SHIFT);
+      mode->preemph[0] =  QCONST16(0.6000061035f, 15);
+      mode->preemph[1] = -QCONST16(0.1799926758f, 15);
+      mode->preemph[2] =  QCONST16(0.4425048828f, SIG_SHIFT);
       mode->preemph[3] =  QCONST16(2.259887f, 13);
    } else if(Fs < 40000) /* 32 kHz */
    {
-      mode->preemph[0] =  QCONST16(.78f, 15);
-      mode->preemph[1] = -QCONST16(.1f, 15);
+      mode->preemph[0] =  QCONST16(0.7799987793f, 15);
+      mode->preemph[1] = -QCONST16(0.1000061035f, 15);
       mode->preemph[2] =  QCONST16(.75f, SIG_SHIFT);
-      mode->preemph[3] =  QCONST16(1.33333333f, 13);
+      mode->preemph[3] =  QCONST16(1.3333740234f, 13);
    } else /* 48 kHz */
    {
-      mode->preemph[0] =  QCONST16(.85f, 15);
-      mode->preemph[1] =  QCONST16(.0f, 15);
+      mode->preemph[0] =  QCONST16(0.8500061035f, 15);
+      mode->preemph[1] =  QCONST16(0.0f, 15);
       mode->preemph[2] =  QCONST16(1.f, SIG_SHIFT);
       mode->preemph[3] =  QCONST16(1.f, 13);
    }