From 05778451e700e60d0b7ee3b86fa0096b76e9ae1f Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin Date: Fri, 18 Apr 2008 19:34:58 +1000 Subject: [PATCH] optimisation: removed the shifts from the vq_index() inner loop --- libcelt/quant_pitch.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/libcelt/quant_pitch.c b/libcelt/quant_pitch.c index 9dd00eba..8363abb1 100644 --- a/libcelt/quant_pitch.c +++ b/libcelt/quant_pitch.c @@ -42,10 +42,14 @@ #ifdef FIXED_POINT #define PGAIN_ODD(codebook, i) ((celt_word16_t)(((codebook)[(i)]&0x00ffU)<<7)) #define PGAIN_EVEN(codebook, i) ((celt_word16_t)(((codebook)[(i)]&0xff00U)>>1)) +#define PGAIN_ODD14(codebook, i) ((celt_word16_t)(((codebook)[(i)]&0x00ffU)<<6)) +#define PGAIN_EVEN14(codebook, i) ((celt_word16_t)(((codebook)[(i)]&0xff00U)>>2)) #else #define PGAIN_ODD(codebook, i) ((1.f/32768.f)*(celt_word16_t)(((codebook)[(i)]&0x00ffU)<<7)) #define PGAIN_EVEN(codebook, i) ((1.f/32768.f)*(celt_word16_t)(((codebook)[(i)]&0xff00U)>>1) ) +#define PGAIN_ODD14(codebook, i) PGAIN_ODD(codebook, i) +#define PGAIN_EVEN14(codebook, i) PGAIN_EVEN(codebook, i) #endif #define PGAIN(codebook, i) ((i)&1 ? PGAIN_ODD(codebook, (i)>>1) : PGAIN_EVEN(codebook, (i)>>1)) @@ -65,8 +69,8 @@ int vq_index(const celt_pgain_t *in, const celt_uint16_t *codebook, int len, int celt_word32_t dist=0; const celt_pgain_t *inp = in; j=0; do { - celt_pgain_t tmp1 = SHR16(SUB16(*inp++,PGAIN_EVEN(codebook, ind)),1); - celt_pgain_t tmp2 = SHR16(SUB16(*inp++,PGAIN_ODD(codebook, ind)),1); + celt_pgain_t tmp1 = SUB16(*inp++,PGAIN_EVEN14(codebook, ind)); + celt_pgain_t tmp2 = SUB16(*inp++,PGAIN_ODD14(codebook, ind)); ind++; dist = MAC16_16(dist, tmp1, tmp1); dist = MAC16_16(dist, tmp2, tmp2); @@ -94,7 +98,7 @@ int quant_pitch(celt_pgain_t *gains, int len, ec_enc *enc) /*for (i=0;i