Little corrections to dsp command line parsing and small optimization on main.c

This commit is contained in:
evilsocket 2009-05-24 17:20:00 +02:00
parent 4a52ddf55c
commit 51687876a7
3 changed files with 7 additions and 11 deletions

View file

@ -1,5 +1,5 @@
all: all:
gcc -Wall -ansi -pedantic -o vocal main.c dsp.c utils.c -lm -w -O3 -funroll-loops -fno-rtti -ffast-math -fno-stack-protector -ffunction-sections gcc -Wall -ansi -pedantic -o vocal main.c dsp.c utils.c -lm -w -O3 -funroll-loops -fno-rtti -ffast-math -fno-stack-protector -ffunction-sections -funsafe-math-optimizations -fno-trapping-math
clean: clean:
rm vocal rm vocal

3
dsp.c
View file

@ -2,8 +2,9 @@
int init_dsp( char *device ) { int init_dsp( char *device ) {
int dsp, arg; int dsp, arg;
char *dev = (device == NULL ? "/dev/dsp" : device);
if ((dsp=open( (device == NULL ? "/dev/dsp" : device), O_RDONLY)) < 0) { if ((dsp=open( dev, O_RDONLY)) < 0) {
perror("open of sound device failed"); perror("open of sound device failed");
return -1; return -1;
} }

11
main.c
View file

@ -18,7 +18,7 @@ int main (int argc, char **argv) {
int i, j, dsp, fd, ch, size, recognized; int i, j, dsp, fd, ch, size, recognized;
int TOTSIZE = BUF_SIZE*SAMPLE_SIZE; int TOTSIZE = BUF_SIZE*SAMPLE_SIZE;
char *line, *tmp, *cmd = NULL, *fname = NULL, device = NULL; char *line, *tmp, *cmd = NULL, *fname = NULL, *device = NULL;
char **match = NULL; char **match = NULL;
double deviance; double deviance;
@ -46,7 +46,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));
@ -78,8 +78,7 @@ int main (int argc, char **argv) {
close(dsp); close(dsp);
printf ("capture done, computing DCT...\n"); printf ("capture done, computing DCT...\n" );
int count = 0;
t1 = time((unsigned) NULL); t1 = time((unsigned) NULL);
for (i=0; i<TOTSIZE; ++i) { for (i=0; i<TOTSIZE; ++i) {
@ -91,9 +90,6 @@ int main (int argc, char **argv) {
v += buf[j] * cos(t*j); v += buf[j] * cos(t*j);
else else
v += buf[j]; v += buf[j];
if (t*j < D_M_PI)
count++;
} }
v *= coeff; v *= coeff;
@ -107,7 +103,6 @@ int main (int argc, char **argv) {
t2 = time((unsigned) NULL); t2 = time((unsigned) NULL);
printf ("DCT computing: done in %u seconds\n", (unsigned int) (t2-t1)); printf ("DCT computing: done in %u seconds\n", (unsigned int) (t2-t1));
printf ("%d arg < 2*pi\n", count);
for (i=0; i<TOTSIZE; i++) for (i=0; i<TOTSIZE; i++)
sum += trans[i]; sum += trans[i];