diff options
author | Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> | 2009-09-30 06:35:32 +0400 |
---|---|---|
committer | Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> | 2009-09-30 06:35:32 +0400 |
commit | 75732de1a7d174e919e0a266fb74ffa9f75e39d0 (patch) | |
tree | fb4e0ed161da0f7ae1d3b975b01d3562dd6f2107 /libcelt/vq.c | |
parent | 4834c92e2b9ee315d55f001fd63df2cc6caa1cea (diff) |
Tuning the spreading rotations
Diffstat (limited to 'libcelt/vq.c')
-rw-r--r-- | libcelt/vq.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/libcelt/vq.c b/libcelt/vq.c index f236cf0..d414dc3 100644 --- a/libcelt/vq.c +++ b/libcelt/vq.c @@ -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 gain, theta; 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 */ theta = SUB16(Q15ONE, HALF32(MULT16_16_Q15(gain,gain))); /*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)); s = dir*celt_cos_norm(EXTEND32(SUB16(Q15ONE,theta))); /* sin(theta) */ - if (stride == 1) - stride = 2; + if (len > 8*stride) + stride *= len/(8*stride); iter = 1; for (k=0;k<iter;k++) { |