annotate tools/audio_processor_test/gen_tone/gen_tone.cpp @ 70:bbd58fb592c9 pygar svn.71

[svn r71] better benchmarks
author rlm
date Wed, 12 May 2010 00:14:01 -0400
parents 90197e3375e2
children
rev   line source
rlm@23 1 #include <stdio.h>
rlm@23 2 #include <assert.h>
rlm@23 3 #include <string.h>
rlm@23 4 #include <sndfile.h>
rlm@23 5 #include <stdlib.h>
rlm@23 6 #include "SndfileWavUtil.h"
rlm@23 7
rlm@23 8 // foreward declaration. This is defined in DFT.cpp
rlm@23 9 int DFT(int dir,int m,double *x1,double *y1);
rlm@23 10
rlm@23 11 const int Points = 8;
rlm@23 12
rlm@23 13 int
rlm@23 14 do_gen (int argc, char * argv [])
rlm@23 15 {
rlm@23 16 int frames;
rlm@23 17 int targ_freqA;
rlm@23 18 int targ_freqB;
rlm@23 19 char* refWavFile;
rlm@23 20 char* outWavFile;
rlm@23 21 FILE* outPCM;
rlm@23 22 const int short_sz = sizeof(short int);
rlm@23 23
rlm@23 24 frames = atoi(argv[1]);
rlm@23 25 targ_freqA = atoi(argv[2]);
rlm@23 26 targ_freqB = atoi(argv[3]);
rlm@23 27 refWavFile = argv[4];
rlm@23 28 outWavFile = argv[5];
rlm@23 29
rlm@23 30 outPCM = fopen("output.pcm", "w");
rlm@23 31
rlm@23 32 printf("targ_freqA %d\ntarg_freqB %d\nframes %d\n", targ_freqA, targ_freqB, frames);
rlm@23 33
rlm@23 34 while(frames-- > 0){
rlm@23 35
rlm@23 36 double dreal[Points];
rlm@23 37 double dimag[Points];
rlm@23 38
rlm@23 39 for(int i = 0; i < Points; i++)
rlm@23 40 dreal[i] = (i == targ_freqA) ? 1000 : (i == targ_freqB) ? 1000 : 0;
rlm@23 41 for(int i = 0; i < Points; i++)
rlm@23 42 dimag[i] = 0.0;
rlm@23 43
rlm@23 44 DFT(-1,Points,dreal,dimag);
rlm@23 45
rlm@23 46 for(int i = 0; i < Points; i++){
rlm@23 47 short int rv = (int)dreal[i];
rlm@23 48 assert(fwrite(&rv,short_sz,1,outPCM));
rlm@23 49 }
rlm@23 50
rlm@23 51 }
rlm@23 52
rlm@23 53 fclose(outPCM);
rlm@23 54
rlm@23 55 generate_wav("output.pcm", refWavFile, outWavFile);
rlm@23 56 }
rlm@23 57
rlm@23 58 int
rlm@23 59 main(int argc, char* argv[])
rlm@23 60 {
rlm@23 61 do_gen(argc, argv);
rlm@23 62 exit(1);
rlm@23 63 }