[Speex-dev] fixed-point bug
tnewbern at comcast.net
Fri Sep 17 14:21:31 PDT 2004
I took a look into the fixed-point version noise problem. I found the white noise to appear only when using DTX. I was able to trace the problem down to the included code.
I found that the innov_gain was never scaled causing speex_rand_vec to generate a rather large white noise signal. I modified the code as follows which seems to fix the problem.
nb_celp.c - line #1269
/* If null mode (no transmission), just set a couple things to zero*/
if (st->submodes[st->submodeID] == NULL)
lpc = PUSH(stack,11, spx_coef_t);
bw_lpc(GAMMA_SCALING*.93, st->interp_qlpc, lpc, 10);
innov_gain += st->innov[i]*st->innov[i];
/* original code */
/* proposed fix */
speex_rand_vec(innov_gain, st->exc, st->frameSize);
More information about the Speex-dev