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

gitlab.com/quite/celt.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTimothy B.B Terriberry <tterribe@xiph.org>2008-09-19 10:32:42 +0400
committerJean-Marc Valin <jean-marc.valin@usherbrooke.ca>2008-09-19 15:38:24 +0400
commitd910274f790ba586c40a625bb9120d13554c3443 (patch)
tree97b98b1c2b746fa1f5d9344bf7e5a6f3d621f115 /tests
parent7b0cb4ba0d2b5117d8ed4dbe0ab49c21090c8854 (diff)
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.
Diffstat (limited to 'tests')
-rw-r--r--tests/cwrs32-test.c29
-rw-r--r--tests/cwrs64-test.c27
2 files changed, 19 insertions, 37 deletions
diff --git a/tests/cwrs32-test.c b/tests/cwrs32-test.c
index b9ea1a8..6b193e3 100644
--- a/tests/cwrs32-test.c
+++ b/tests/cwrs32-test.c
@@ -21,33 +21,24 @@ int main(int _argc,char **_argv){
inc=nc/10000;
if(inc<1)inc=1;
for(i=0;i<nc;i+=inc){
- celt_uint32_t u[NMAX];
- int x[MMAX];
- int s[MMAX];
- int x2[MMAX];
- int s2[MMAX];
+ celt_uint32_t u[NMAX>MMAX+2?NMAX:MMAX+2];
int y[NMAX];
+ celt_uint32_t v;
int k;
memcpy(u,uu,n*sizeof(*u));
- cwrsi32(n,m,i,x,s,u);
- /*printf("%6u of %u:",i,nc);*/
- /*for(k=0;k<m;k++){
- printf(" %c%i",k>0&&x[k]==x[k-1]?' ':s[k]?'-':'+',x[k]);
- }
+ cwrsi32(n,m,i,nc,y,u);
+ /*printf("%6u of %u:",i,nc);
+ for(k=0;k<n;k++)printf(" %+3i",y[k]);
printf(" ->");*/
- memcpy(u,uu,n*sizeof(*u));
- if(icwrs32(n,m,x,s,u)!=i){
+ if(icwrs32(n,m,&v,y,u)!=i){
fprintf(stderr,"Combination-index mismatch.\n");
return 1;
}
- comb2pulse(n,m,y,x,s);
- /*for(j=0;j<n;j++)printf(" %c%i",y[j]?y[j]<0?'-':'+':' ',abs(y[j]));
- printf("\n");*/
- pulse2comb(n,m,x2,s2,y);
- for(k=0;k<m;k++)if(x[k]!=x2[k]||s[k]!=s2[k]){
- fprintf(stderr,"Pulse-combination mismatch.\n");
- return 1;
+ if(v!=nc){
+ fprintf(stderr,"Combination count mismatch.\n");
+ return 2;
}
+ /*printf(" %6u\n",i);*/
}
/*printf("\n");*/
}
diff --git a/tests/cwrs64-test.c b/tests/cwrs64-test.c
index e476367..e699deb 100644
--- a/tests/cwrs64-test.c
+++ b/tests/cwrs64-test.c
@@ -24,33 +24,24 @@ int main(int _argc,char **_argv){
if(inc<1)inc=1;
/*printf("%d/%d: %llu",n,m, nc);*/
for(i=0;i<nc;i+=inc){
- celt_uint64_t u[NMAX];
- int x[MMAX];
- int s[MMAX];
- int x2[MMAX];
- int s2[MMAX];
+ celt_uint64_t u[NMAX>MMAX+2?NMAX:MMAX+2];
int y[NMAX];
+ celt_uint64_t v;
int k;
memcpy(u,uu,n*sizeof(*u));
- cwrsi64(n,m,i,x,s,u);
+ cwrsi64(n,m,i,nc,y,u);
/*printf("%llu of %llu:",i,nc);
- for(k=0;k<m;k++){
- printf(" %c%i",k>0&&x[k]==x[k-1]?' ':s[k]?'-':'+',x[k]);
- }
+ for(k=0;k<n;k++)printf(" %+3i",y[k]);
printf(" ->");*/
- memcpy(u,uu,n*sizeof(*u));
- if(icwrs64(n,m,x,s,u)!=i){
+ if(icwrs64(n,m,&v,y,u)!=i){
fprintf(stderr,"Combination-index mismatch.\n");
return 1;
}
- comb2pulse(n,m,y,x,s);
- /*for(j=0;j<n;j++)printf(" %c%i",y[j]?y[j]<0?'-':'+':' ',abs(y[j]));
- printf("\n");*/
- pulse2comb(n,m,x2,s2,y);
- for(k=0;k<m;k++)if(x[k]!=x2[k]||s[k]!=s2[k]){
- fprintf(stderr,"Pulse-combination mismatch.\n");
- return 1;
+ if(v!=nc){
+ fprintf(stderr,"Combination count mismatch.\n");
+ return 2;
}
+ /*printf(" %6llu\n",i);*/
}
/*printf("\n");*/
}