Tuning the spreading rotations

This commit is contained in:
Jean-Marc Valin 2009-09-29 22:35:32 -04:00
parent 4834c92e2b
commit 75732de1a7

View file

@ -46,7 +46,7 @@ static void exp_rotation(celt_norm_t *X, int len, int dir, int stride, int K)
celt_word16_t c, s; celt_word16_t c, s;
celt_word16_t gain, theta; celt_word16_t gain, theta;
celt_norm_t *Xptr; celt_norm_t *Xptr;
gain = celt_div((celt_word32_t)MULT16_16(Q15_ONE,len),(celt_word32_t)(len+2*K*((K>>1)+1))); gain = celt_div((celt_word32_t)MULT16_16(Q15_ONE,len),(celt_word32_t)(3+len+6*K));
/* FIXME: Make that HALF16 instead of HALF32 */ /* FIXME: Make that HALF16 instead of HALF32 */
theta = SUB16(Q15ONE, HALF32(MULT16_16_Q15(gain,gain))); theta = SUB16(Q15ONE, HALF32(MULT16_16_Q15(gain,gain)));
/*if (len==30) /*if (len==30)
@ -57,8 +57,8 @@ static void exp_rotation(celt_norm_t *X, int len, int dir, int stride, int K)
}*/ }*/
c = celt_cos_norm(EXTEND32(theta)); c = celt_cos_norm(EXTEND32(theta));
s = dir*celt_cos_norm(EXTEND32(SUB16(Q15ONE,theta))); /* sin(theta) */ s = dir*celt_cos_norm(EXTEND32(SUB16(Q15ONE,theta))); /* sin(theta) */
if (stride == 1) if (len > 8*stride)
stride = 2; stride *= len/(8*stride);
iter = 1; iter = 1;
for (k=0;k<iter;k++) for (k=0;k<iter;k++)
{ {