diff --git a/libcelt/bands.c b/libcelt/bands.c index 05cab6e0..d6e4068c 100644 --- a/libcelt/bands.c +++ b/libcelt/bands.c @@ -71,6 +71,10 @@ void exp_rotation(celt_norm_t *X, int len, int dir, int stride, int iter) } } + +const celt_word16_t sqrtC_1[2] = {QCONST16(1.f, 14), QCONST16(1.414214f, 14)}; + +#ifdef FIXED_POINT /* Compute the amplitude (sqrt energy) in each of the bands */ void compute_band_energies(const CELTMode *m, const celt_sig_t *X, celt_ener_t *bank) { @@ -83,19 +87,27 @@ void compute_band_energies(const CELTMode *m, const celt_sig_t *X, celt_ener_t * for (i=0;inbEBands;i++) { int j; - float sum = 1e-10; + celt_word32_t maxval=0; + celt_word32_t sum = 0; for (j=B*eBands[i];j 0) + { + int shift = celt_ilog2(maxval)-10; + for (j=B*eBands[i];jeBands; + B = m->nbMdctBlocks; + C = m->nbChannels; + for (c=0;cnbEBands;i++) + { + int j; + float sum = 1e-10; + for (j=B*eBands[i];j