diff --git a/README b/README index 33ee0d5f..87278175 100644 --- a/README +++ b/README @@ -8,7 +8,7 @@ To compile: % make To test the encoder: -% testcelt input.sw output.sw +% testcelt 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. diff --git a/TODO b/TODO index 54411e77..05826ed2 100644 --- a/TODO +++ b/TODO @@ -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? diff --git a/libcelt/modes.c b/libcelt/modes.c index e41d2a6f..3fc4a875 100644 --- a/libcelt/modes.c +++ b/libcelt/modes.c @@ -208,11 +208,14 @@ static void compute_allocation_table(CELTMode *mode, int res) eband = 0; for (j=0;jeBands[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;