mirror of
https://github.com/BlackLight/Voxifera.git
synced 2024-11-24 04:25:11 +01:00
Optimized DCT, 74% performance increment.
This commit is contained in:
parent
807baca8a4
commit
c80f671655
1 changed files with 22 additions and 12 deletions
26
main.c
26
main.c
|
@ -98,7 +98,7 @@ int main (int argc, char **argv) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
printf( "DEVICE : %s\n", device );
|
|
||||||
buf = (u8*) malloc(TOTSIZE);
|
buf = (u8*) malloc(TOTSIZE);
|
||||||
neutral = (double*) malloc(TOTSIZE*sizeof(double));
|
neutral = (double*) malloc(TOTSIZE*sizeof(double));
|
||||||
trans = (double*) malloc(TOTSIZE*sizeof(double));
|
trans = (double*) malloc(TOTSIZE*sizeof(double));
|
||||||
|
@ -133,17 +133,27 @@ int main (int argc, char **argv) {
|
||||||
printf ("capture done, computing DCT...\n" );
|
printf ("capture done, computing DCT...\n" );
|
||||||
t1 = time((unsigned) NULL);
|
t1 = time((unsigned) NULL);
|
||||||
|
|
||||||
for (i=0; i<TOTSIZE; ++i) {
|
|
||||||
t = PIconst*i;
|
|
||||||
v = 0.0;
|
|
||||||
|
|
||||||
for (j=0; j<TOTSIZE; ++j) {
|
/* porto fuori il loop per i = 0 così da evitare controlli su t (che dipende da i)
|
||||||
if (t && j)
|
* e j nel secondo loop più consistente . */
|
||||||
v += buf[j] * taylor_cosine( t * j, 10 );
|
v = 0;
|
||||||
else
|
for( j = 0; j < TOTSIZE; ++j ){
|
||||||
v += buf[j];
|
v += buf[j];
|
||||||
}
|
}
|
||||||
|
v *= coeff;
|
||||||
|
v -= neutral[0];
|
||||||
|
v = (v >= 0) ? v : -v;
|
||||||
|
trans[0] = log(v);
|
||||||
|
|
||||||
|
double init = buf[0];
|
||||||
|
for( i = 1; i < TOTSIZE; ++i ) {
|
||||||
|
t = PIconst * i;
|
||||||
|
v = init;
|
||||||
|
/* dato che ho inizializzato v a buf[0] e sono sicuro che t != 0,
|
||||||
|
* posso partire da j = 1 . */
|
||||||
|
for( j = 1; j < TOTSIZE; ++j ){
|
||||||
|
v += buf[j] * taylor_cosine( t * j, 10 );
|
||||||
|
}
|
||||||
v *= coeff;
|
v *= coeff;
|
||||||
v -= neutral[i];
|
v -= neutral[i];
|
||||||
v = (v >= 0) ? v : -v;
|
v = (v >= 0) ? v : -v;
|
||||||
|
|
Loading…
Reference in a new issue