#include "stdafx.h" #include "mmsystem.h" #include "math.h" #include "makewave.h" #include "realfft.h" int cbhrecord::isnoise(unsigned char * buf, DWORD size) { static double pr[4096]; int i; for(i=0; i<4096; i++) { pr[i]=(double)(buf[i]-128); } realfftm(pr,4096); double s,smax; smax=0; for(i=15; i<100; i++) { if(smaxdwBytesRecorded)>tbsize) { stop(); return 1; } int j; j = isnoise((unsigned char*)pwh->lpData,pwh->dwBytesRecorded); if(j && (state==1)) { i=waveInPrepareHeader(hwavein,pwh,sizeof(WAVEHDR)); i=waveInAddBuffer(hwavein,pwh, sizeof(WAVEHDR)); return 0; } if(state==1)state=2; memcpy(tbuffer+rsize,pwh->lpData,pwh->dwBytesRecorded); rsize += pwh->dwBytesRecorded; if(j) state++; else state=2; i=waveInPrepareHeader(hwavein,pwh,sizeof(WAVEHDR)); i=waveInAddBuffer(hwavein,pwh, sizeof(WAVEHDR)); if((rsize >= tbsize) || (state>7)){ if(state>7) { state -=4; if((double)rsize-state*bsize>0) rsize-=state*bsize; } stop(); return 1; } return 0; }