Fixed an overflow in the bit allocation table for large frame stereo
authorJean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Tue, 10 Feb 2009 04:54:52 +0000 (23:54 -0500)
committerJean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Tue, 10 Feb 2009 04:54:52 +0000 (23:54 -0500)
(need to make that a bit better)

libcelt/modes.c

index 6f1937a..061a7df 100644 (file)
@@ -228,7 +228,7 @@ static void compute_allocation_table(CELTMode *mode, int res)
          celt_int32_t alloc;
          edge = mode->eBands[eband+1]*res;
          alloc = band_allocation[i*BARK_BANDS+j];
-         alloc = alloc*C*mode->mdctSize;
+         alloc = alloc*C*mode->mdctSize/4;
          if (edge < bark_freq[j+1])
          {
             int num, den;
@@ -246,7 +246,7 @@ static void compute_allocation_table(CELTMode *mode, int res)
    for (i=0;i<mode->nbAllocVectors;i++)
    {
       for (j=0;j<mode->nbEBands;j++)
-         allocVectors[i*mode->nbEBands+j] = (allocVectors[i*mode->nbEBands+j]+128)/256;
+         allocVectors[i*mode->nbEBands+j] = (allocVectors[i*mode->nbEBands+j]+32)/64;
    }
    /*for (i=0;i<mode->nbAllocVectors;i++)
    {