Better bit allocation for all frame sizes that are not equal to 256.

This commit is contained in:
Jean-Marc Valin 2008-07-24 08:49:34 -04:00
parent 1d27ef8b2c
commit 5c0d486fe1
3 changed files with 10 additions and 10 deletions

2
README
View file

@ -8,7 +8,7 @@ To compile:
% make
To test the encoder:
% testcelt <rate> <channels> <frame size> <overlap> <bytes per packet> input.sw output.sw
% testcelt <rate> <channels> <frame size> <bytes per packet> input.sw output.sw
where input.sw is a 16-bit (machine endian) audio file sampled at
44.1 kHz or 48 kHz. The output file is already decompressed.

11
TODO
View file

@ -1,16 +1,13 @@
- Check minimum width of bands
- Adjust the energy resolution based on the bit-rate
- Revisit energy resolution based on the bit-rate
- Revisit static bit allocation (as a function of frame size and channels)
- Dynamic adjustment of energy quantisation
- Psychacoustics
* Error shaping within each band
* Desisions on the rate
- Intensity stereo option (e.g. threshold)
* Decisions on the rate
- Intensity stereo decisions
- Dynamic (intra-frame) bit allocation
- Joint encoding of stereo energy
- Disable intra-frame prediction for more than X pulses
- Remove contraction?
- Simplify search?
- Remove pulse spreading?
- Encode band shape (or just tilt)?
- Make energy encoding more robust to losses?

View file

@ -208,11 +208,14 @@ static void compute_allocation_table(CELTMode *mode, int res)
eband = 0;
for (j=0;j<BARK_BANDS;j++)
{
int edge, low, alloc;
int edge, low;
celt_int32_t alloc;
edge = mode->eBands[eband+1]*res;
alloc = band_allocation[i*BARK_BANDS+j];
if (mode->nbChannels == 2)
alloc += alloc/2;
alloc = alloc*3*mode->mdctSize/512;
else
alloc = alloc*mode->mdctSize/256;
if (edge < bark_freq[j+1])
{
int num, den;