Change CWRS indexing to use Pyramid VQ's magnitude ordering.
authorTimothy B.B Terriberry <tterribe@xiph.org>
Fri, 19 Sep 2008 06:32:42 +0000 (02:32 -0400)
committerJean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Fri, 19 Sep 2008 11:38:24 +0000 (07:38 -0400)
commitd910274f790ba586c40a625bb9120d13554c3443
tree97b98b1c2b746fa1f5d9344bf7e5a6f3d621f115
parent7b0cb4ba0d2b5117d8ed4dbe0ab49c21090c8854
Change CWRS indexing to use Pyramid VQ's magnitude ordering.

This lets us encode and decode directly from the pulse vector without an
 intermediate transformation.
This makes old streams undecodable.
Additionally, ncwrs_u32() has been sped up for large N by using the sliding
 recurrence from Mohorko et al.
ncwrs_u64 could be sped up in a similar manner, but would require a larger
 table of multiplicative inverses (or several 32x32->64 bit multiplies).
Note that U(N,M) is now everywhere 1/2 the value it used to be.
libcelt/cwrs.c
libcelt/cwrs.h
tests/cwrs32-test.c
tests/cwrs64-test.c