Preventing ridiculous bit depths > 16 bit/sample
authorJean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Wed, 23 Jun 2010 01:26:16 +0000 (21:26 -0400)
committerJean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Wed, 23 Jun 2010 01:26:16 +0000 (21:26 -0400)
libcelt/bands.c

index 4334e7d..41b713b 100644 (file)
@@ -895,6 +895,7 @@ void quant_all_bands(int encode, const CELTMode *m, int start, celt_norm *_X, ce
    int spread;
    celt_norm *lowband;
    int update_lowband = 1;
+   int C = _Y != NULL ? 2 : 1;
    SAVE_STACK;
 
    M = 1<<LM;
@@ -935,6 +936,9 @@ void quant_all_bands(int encode, const CELTMode *m, int start, celt_norm *_X, ce
       b = IMIN(remaining_bits+1,pulses[i]+curr_balance);
       if (b<0)
          b = 0;
+      /* Prevents ridiculous bit depths */
+      if (b > C*16*N<<BITRES)
+         b = C*16*N<<BITRES;
 
       if (M*eBands[i]-N >= M*eBands[start])
       {