Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mumble-voip/speexdsp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Marc Valin <jean-marc.valin@usherbrooke.ca>2008-09-06 06:31:56 +0400
committerJean-Marc Valin <jean-marc.valin@usherbrooke.ca>2008-09-06 07:07:38 +0400
commit097cf5e4e75e1310bd27e3ee39f7df38f8f8c91c (patch)
treeef1f3e13ee5b93fce22a162aabad05736373732f /libspeex/nb_celp.c
parent99a7ef29c4a4b7de435190b927354ba84bd65635 (diff)
The LPC analysis window and lag window are now in Q15.
Diffstat (limited to 'libspeex/nb_celp.c')
-rw-r--r--libspeex/nb_celp.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/libspeex/nb_celp.c b/libspeex/nb_celp.c
index a36da69..b696ebb 100644
--- a/libspeex/nb_celp.c
+++ b/libspeex/nb_celp.c
@@ -468,16 +468,17 @@ int nb_encode(void *state, void *vin, SpeexBits *bits)
ALLOC(autocorr, NB_ORDER+1, spx_word16_t);
/* Window for analysis */
for (i=0;i<NB_WINDOW_SIZE-NB_FRAME_SIZE;i++)
- w_sig[i] = EXTRACT16(SHR32(MULT16_16(st->winBuf[i],st->window[i]),SIG_SHIFT));
+ w_sig[i] = MULT16_16_Q15(st->winBuf[i],st->window[i]);
for (;i<NB_WINDOW_SIZE;i++)
- w_sig[i] = EXTRACT16(SHR32(MULT16_16(in[i-NB_WINDOW_SIZE+NB_FRAME_SIZE],st->window[i]),SIG_SHIFT));
+ w_sig[i] = MULT16_16_Q15(in[i-NB_WINDOW_SIZE+NB_FRAME_SIZE],st->window[i]);
/* Compute auto-correlation */
_spx_autocorr(w_sig, autocorr, NB_ORDER+1, NB_WINDOW_SIZE);
autocorr[0] = ADD16(autocorr[0],MULT16_16_Q15(autocorr[0],st->lpc_floor)); /* Noise floor in auto-correlation domain */
/* Lag windowing: equivalent to filtering in the power-spectrum domain */
for (i=0;i<NB_ORDER+1;i++)
- autocorr[i] = MULT16_16_Q14(autocorr[i],st->lagWindow[i]);
+ autocorr[i] = MULT16_16_Q15(autocorr[i],st->lagWindow[i]);
+ autocorr[0] = ADD16(autocorr[0],1);
/* Levinson-Durbin */
_spx_lpc(lpc, autocorr, NB_ORDER);