st->Y2 = (float*)speex_alloc(N*sizeof(float));
SpeexEchoState *speex_echo_state_init(int frame_size, int filter_length){   int i,j,N,M;   SpeexEchoState *st = (SpeexEchoState *)speex_alloc(sizeof(SpeexEchoState));   st->frame_size = frame_size;   st->window_size = 2*frame_size;   N = st->window_size;   M = st->M = (filter_length+st->frame_size-1)/frame_size;   st->cancel_count=0;   st->adapt_rate = .01f;   st->sum_adapt = 0;   st->Sey = 0;   st->Syy = 0;   st->See = 0;            st->fft_lookup = (struct drft_lookup*)speex_alloc(sizeof(struct drft_lookup));   spx_drft_init(st->fft_lookup, N);      st->x = (float*)speex_alloc(N*sizeof(float));   st->d = (float*)speex_alloc(N*sizeof(float));   st->y = (float*)speex_alloc(N*sizeof(float));   st->y2 = (float*)speex_alloc(N*sizeof(float));   st->Yps = (float*)speex_alloc(N*sizeof(float));   st->last_y = (float*)speex_alloc(N*sizeof(float));   st->Yf = (float*)speex_alloc((st->frame_size+1)*sizeof(float));   st->Rf = (float*)speex_alloc((st->frame_size+1)*sizeof(float));   st->Xf = (float*)speex_alloc((st->frame_size+1)*sizeof(float));   st->fratio = (float*)speex_alloc((st->frame_size+1)*sizeof(float));   st->X = (float*)speex_alloc(M*N*sizeof(float));   st->D = (float*)speex_alloc(N*sizeof(float));   st->Y = (float*)speex_alloc(N*sizeof(float));   st->Y2 = (float*)speex_alloc(N*sizeof(float));   st->E = (float*)speex_alloc(N*sizeof(float));   st->W = (float*)speex_alloc(M*N*sizeof(float));   st->PHI = (float*)speex_alloc(M*N*sizeof(float));   st->power = (float*)speex_alloc((frame_size+1)*sizeof(float));   st->power_1 = (float*)speex_alloc((frame_size+1)*sizeof(float));   st->grad = (float*)speex_alloc(N*M*sizeof(float));      for (i=0;i<N*M;i++)   {      st->W[i] = st->PHI[i] = 0;   }   st->adapted = 0;   st->Pey = st->Pyy = 0;   st->Pe = st->Py = 0;   return st;}