void _vorbis_apply_window(ogg_int32_t *d,const void *window_p[2],
			  long *blocksizes,
			  int lW,int W,int nW){
  
  LOOKUP_T *window[2];
  long n=blocksizes[W];
  long ln=blocksizes[lW];
  long rn=blocksizes[nW];

  long leftbegin=n/4-ln/4;
  long leftend=leftbegin+ln/2;

  long rightbegin=n/2+n/4-rn/4;
  long rightend=rightbegin+rn/2;
  
  int i,p;

  window[0]=(LOOKUP_T*)(window_p[0]);
  window[1]=(LOOKUP_T*)(window_p[1]);
  
  for(i=0;i<leftbegin;i++)
    d[i]=0;

  for(p=0;i<leftend;i++,p++)
    d[i]=MULT31(d[i],window[lW][p]);

  for(i=rightbegin,p=rn/2-1;i<rightend;i++,p--)
    d[i]=MULT31(d[i],window[nW][p]);

  for(;i<n;i++)
    d[i]=0;
}
Esempio n. 2
0
static inline void TRANSFORM_EQUAL(FFTComplex * z, unsigned int n)
{
    register FFTSample t1,t2,t5,t6,temp1,temp2;
    register FFTSample * my_z = (FFTSample *)(z);
    my_z += n*4;
    t2    = MULT31(my_z[0], cPI2_8);
    temp1 = MULT31(my_z[1], cPI2_8);
    my_z += n*2;
    temp2 = MULT31(my_z[0], cPI2_8);
    t5    = MULT31(my_z[1], cPI2_8);
    t1 = ( temp1 + t2 );
    t2 = ( temp1 - t2 );
    t6 = ( temp2 + t5 );
    t5 = ( temp2 - t5 );
    my_z -= n*6;
    BUTTERFLIES(z[0],z[n],z[n*2],z[n*3]);
}