From 47ad4a093876af2f19216dae2dd121c2205231f0 Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> Date: Sat, 5 Jun 2010 01:18:40 -0400 Subject: [PATCH] Doing the log2Amp() just in one place --- libcelt/quant_bands.c | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/libcelt/quant_bands.c b/libcelt/quant_bands.c index 8ddedc221..d3fcb3002 100644 --- a/libcelt/quant_bands.c +++ b/libcelt/quant_bands.c @@ -177,8 +177,6 @@ void quant_fine_energy(const CELTMode *m, int start, celt_ener *eBands, celt_wor /*printf ("%f ", error[i] - offset);*/ } while (++c < C); } - for (i=start;i<C*m->nbEBands;i++) - eBands[i] = log2Amp(oldEBands[i]); } void quant_energy_finalise(const CELTMode *m, int start, celt_ener *eBands, celt_word16 *oldEBands, celt_word16 *error, int *fine_quant, int *fine_priority, int bits_left, ec_enc *enc, int _C) @@ -205,16 +203,19 @@ void quant_energy_finalise(const CELTMode *m, int start, celt_ener *eBands, celt offset = (q2-.5f)*(1<<(14-fine_quant[i]-1))*(1.f/16384); #endif oldEBands[i+c*m->nbEBands] += offset; - eBands[i+c*m->nbEBands] = log2Amp(oldEBands[i+c*m->nbEBands]); bits_left--; } while (++c < C); } } - for (i=start;i<C*m->nbEBands;i++) - { - if (oldEBands[i] < -QCONST16(7.f,DB_SHIFT)) - oldEBands[i] = -QCONST16(7.f,DB_SHIFT); - } + c=0; + do { + for (i=start;i<m->nbEBands;i++) + { + eBands[i+c*m->nbEBands] = log2Amp(oldEBands[i+c*m->nbEBands]); + if (oldEBands[i+c*m->nbEBands] < -QCONST16(7.f,DB_SHIFT)) + oldEBands[i+c*m->nbEBands] = -QCONST16(7.f,DB_SHIFT); + } + } while (++c < C); } void unquant_coarse_energy(const CELTMode *m, int start, celt_ener *eBands, celt_word16 *oldEBands, int budget, int intra, int *prob, ec_dec *dec, int _C) @@ -277,8 +278,6 @@ void unquant_fine_energy(const CELTMode *m, int start, celt_ener *eBands, celt_w oldEBands[i+c*m->nbEBands] += offset; } while (++c < C); } - for (i=start;i<C*m->nbEBands;i++) - eBands[i] = log2Amp(oldEBands[i]); } void unquant_energy_finalise(const CELTMode *m, int start, celt_ener *eBands, celt_word16 *oldEBands, int *fine_quant, int *fine_priority, int bits_left, ec_dec *dec, int _C) @@ -304,14 +303,17 @@ void unquant_energy_finalise(const CELTMode *m, int start, celt_ener *eBands, ce offset = (q2-.5f)*(1<<(14-fine_quant[i]-1))*(1.f/16384); #endif oldEBands[i+c*m->nbEBands] += offset; - eBands[i+c*m->nbEBands] = log2Amp(oldEBands[i+c*m->nbEBands]); bits_left--; } while (++c < C); } } - for (i=start;i<C*m->nbEBands;i++) - { - if (oldEBands[i] < -QCONST16(7.f,DB_SHIFT)) - oldEBands[i] = -QCONST16(7.f,DB_SHIFT); - } + c=0; + do { + for (i=start;i<m->nbEBands;i++) + { + eBands[i+c*m->nbEBands] = log2Amp(oldEBands[i+c*m->nbEBands]); + if (oldEBands[i+c*m->nbEBands] < -QCONST16(7.f,DB_SHIFT)) + oldEBands[i+c*m->nbEBands] = -QCONST16(7.f,DB_SHIFT); + } + } while (++c < C); } -- GitLab