예제 #1
0
bool Analyzer::Update(float frequency)
{
	float *fftmem = (float*)(SDRAM_BASE_ADDR + 15*1048576);
	float *resignal = &fftmem[0*MAXFFTSIZE];
	float *imsignal = &fftmem[1*MAXFFTSIZE];
	float *refiltered = &fftmem[2*MAXFFTSIZE];
	float *imfiltered = &fftmem[3*MAXFFTSIZE];

	int extralen = max(int(4 * audio.SampleRateFloat() / frequency), 200);
	int datalen = (inputRing.used() >> 1);
	int mindatalen = min(max(int(11 * audio.SampleRateFloat() / frequency), 1024), MAXFFTSIZE);

	if (!resultready) {
		if (datalen < mindatalen + extralen) {
			enoughdata = false;
		}
		else {
			enoughdata = true;

			fftsizelog2 = msb(datalen);
			if (fftsizelog2 > MAXFFTSIZELOG2) {
				fftsizelog2 = MAXFFTSIZELOG2;
			}

			fftsize = 1 << fftsizelog2;

			SplitInput(resignal, refiltered, signalmean, filteredmean, fftsize);
		}
	}

	return !resultready;
}
예제 #2
0
파일: server.c 프로젝트: ranauei/melabot
int parse_server (struct socket_info *sinfo)
{
	struct inputstruct is;
	
	SplitInput(sinfo->buff,&is);
	
	if(isalpha((int)is.command[1])) {
		return(handle_server_command(sinfo,&is));
	}
            
	return(handle_numeric(sinfo,&is));
              
	return(0);
}