drft.java

来自「java ogg player library. for play back o」· Java 代码 · 共 1,318 行 · 第 1/2 页

JAVA
1,318
字号
	    break;	  }	  dradf2(ido,l1,c,ch,wa, iw-1);	  state=110;	  break;	case 103:	  dradf2(ido,l1,ch,c,wa, iw-1);	case 104:	  if(ido==1)na=1-na;	  if(na!=0){	    state=109;	    break;	  }	  dradfg(ido,ip,l1,idl1,c,c,c,ch,ch,wa,iw-1);	  na=1;	  state=110;	  break;	case 109:	  dradfg(ido,ip,l1,idl1,ch,ch,ch,c,c,wa,iw-1);	  na=0;	case 110:	  l2=l1;  	  break loop;	}      }    }    if(na==1)return;    for(i=0;i<n;i++)c[i]=ch[i];  }  static void dradb2(int ido,int l1,float[] cc,float[] ch,float[] wa1, int index){    int i,k,t0,t1,t2,t3,t4,t5,t6;    float ti2,tr2;    t0=l1*ido;        t1=0;    t2=0;    t3=(ido<<1)-1;    for(k=0;k<l1;k++){      ch[t1]=cc[t2]+cc[t3+t2];      ch[t1+t0]=cc[t2]-cc[t3+t2];      t2=(t1+=ido)<<1;    }    if(ido<2)return;    if(ido!=2){      t1=0;      t2=0;      for(k=0;k<l1;k++){	t3=t1;	t5=(t4=t2)+(ido<<1);	t6=t0+t1;	for(i=2;i<ido;i+=2){	  t3+=2;	  t4+=2;	  t5-=2;	  t6+=2;	  ch[t3-1]=cc[t4-1]+cc[t5-1];	  tr2=cc[t4-1]-cc[t5-1];	  ch[t3]=cc[t4]-cc[t5];	  ti2=cc[t4]+cc[t5];	  ch[t6-1]=wa1[index+i-2]*tr2-wa1[index+i-1]*ti2;	  ch[t6]=wa1[index+i-2]*ti2+wa1[index+i-1]*tr2;	}	t2=(t1+=ido)<<1;      }      if((ido%2)==1)return;    }    t1=ido-1;    t2=ido-1;    for(k=0;k<l1;k++){      ch[t1]=cc[t2]+cc[t2];      ch[t1+t0]=-(cc[t2+1]+cc[t2+1]);      t1+=ido;      t2+=ido<<1;    }  }  static void dradb3(int ido,int l1,float[] cc,float[] ch,		     float[] wa1, int index1,		     float[] wa2, int index2){    int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;    float ci2,ci3,di2,di3,cr2,cr3,dr2,dr3,ti2,tr2;    t0=l1*ido;    t1=0;    t2=t0<<1;    t3=ido<<1;    t4=ido+(ido<<1);    t5=0;    for(k=0;k<l1;k++){      tr2=cc[t3-1]+cc[t3-1];      cr2=cc[t5]+(taur*tr2);      ch[t1]=cc[t5]+tr2;      ci3=taui*(cc[t3]+cc[t3]);      ch[t1+t0]=cr2-ci3;      ch[t1+t2]=cr2+ci3;      t1+=ido;      t3+=t4;      t5+=t4;    }    if(ido==1)return;    t1=0;    t3=ido<<1;    for(k=0;k<l1;k++){      t7=t1+(t1<<1);      t6=(t5=t7+t3);      t8=t1;      t10=(t9=t1+t0)+t0;      for(i=2;i<ido;i+=2){	t5+=2;	t6-=2;	t7+=2;	t8+=2;	t9+=2;	t10+=2;	tr2=cc[t5-1]+cc[t6-1];	cr2=cc[t7-1]+(taur*tr2);	ch[t8-1]=cc[t7-1]+tr2;	ti2=cc[t5]-cc[t6];	ci2=cc[t7]+(taur*ti2);	ch[t8]=cc[t7]+ti2;	cr3=taui*(cc[t5-1]-cc[t6-1]);	ci3=taui*(cc[t5]+cc[t6]);	dr2=cr2-ci3;	dr3=cr2+ci3;	di2=ci2+cr3;	di3=ci2-cr3;	ch[t9-1]=wa1[index1+i-2]*dr2-wa1[index1+i-1]*di2;	ch[t9]=wa1[index1+i-2]*di2+wa1[index1+i-1]*dr2;	ch[t10-1]=wa2[index2+i-2]*dr3-wa2[index2+i-1]*di3;	ch[t10]=wa2[index2+i-2]*di3+wa2[index2+i-1]*dr3;      }      t1+=ido;    }  }  static void dradb4(int ido,int l1,float[] cc,float[] ch,		     float[] wa1, int index1,		     float[] wa2, int index2,		     float[] wa3, int index3){    int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8;    float ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4;    t0=l1*ido;      t1=0;    t2=ido<<2;    t3=0;    t6=ido<<1;    for(k=0;k<l1;k++){      t4=t3+t6;      t5=t1;      tr3=cc[t4-1]+cc[t4-1];      tr4=cc[t4]+cc[t4];       tr1=cc[t3]-cc[(t4+=t6)-1];      tr2=cc[t3]+cc[t4-1];      ch[t5]=tr2+tr3;      ch[t5+=t0]=tr1-tr4;      ch[t5+=t0]=tr2-tr3;      ch[t5+=t0]=tr1+tr4;      t1+=ido;      t3+=t2;    }    if(ido<2)return;    if(ido!=2){      t1=0;      for(k=0;k<l1;k++){	t5=(t4=(t3=(t2=t1<<2)+t6))+t6;	t7=t1;	for(i=2;i<ido;i+=2){	  t2+=2;	  t3+=2;	  t4-=2;	  t5-=2;	  t7+=2;	  ti1=cc[t2]+cc[t5];	  ti2=cc[t2]-cc[t5];	  ti3=cc[t3]-cc[t4];	  tr4=cc[t3]+cc[t4];	  tr1=cc[t2-1]-cc[t5-1];	  tr2=cc[t2-1]+cc[t5-1];	  ti4=cc[t3-1]-cc[t4-1];	  tr3=cc[t3-1]+cc[t4-1];	  ch[t7-1]=tr2+tr3;	  cr3=tr2-tr3;	  ch[t7]=ti2+ti3;	  ci3=ti2-ti3;	  cr2=tr1-tr4;	  cr4=tr1+tr4;	  ci2=ti1+ti4;	  ci4=ti1-ti4;	  ch[(t8=t7+t0)-1]=wa1[index1+i-2]*cr2-wa1[index1+i-1]*ci2;	  ch[t8]=wa1[index1+i-2]*ci2+wa1[index1+i-1]*cr2;	  ch[(t8+=t0)-1]=wa2[index2+i-2]*cr3-wa2[index2+i-1]*ci3;	  ch[t8]=wa2[index2+i-2]*ci3+wa2[index2+i-1]*cr3;	  ch[(t8+=t0)-1]=wa3[index3+i-2]*cr4-wa3[index3+i-1]*ci4;	  ch[t8]=wa3[index3+i-2]*ci4+wa3[index3+i-1]*cr4;	}	t1+=ido;      }      if(ido%2 == 1)return;    }    t1=ido;    t2=ido<<2;    t3=ido-1;    t4=ido+(ido<<1);    for(k=0;k<l1;k++){      t5=t3;      ti1=cc[t1]+cc[t4];      ti2=cc[t4]-cc[t1];      tr1=cc[t1-1]-cc[t4-1];      tr2=cc[t1-1]+cc[t4-1];      ch[t5]=tr2+tr2;      ch[t5+=t0]=sqrt2*(tr1-ti1);      ch[t5+=t0]=ti2+ti2;      ch[t5+=t0]=-sqrt2*(tr1+ti1);            t3+=ido;      t1+=t2;      t4+=t2;    }  }  static void dradbg(int ido,int ip,int l1,int idl1,float[] cc,float[] c1,		     float[] c2,float[] ch,float[] ch2,float[] wa, int index ){    int idij,ipph=0,i,j,k,l,ik,is,t0=0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10=0,      t11,t12;    float dc2,ai1,ai2,ar1,ar2,ds2;    int nbd=0;    float dcp=0,arg,dsp=0,ar1h,ar2h;    int ipp2=0;    int state=100;    loop: while(true){      switch(state){      case 100:	t10=ip*ido;	t0=l1*ido;	arg=tpi/(float)ip;	dcp=(float)Math.cos(arg);	dsp=(float)Math.sin(arg);	nbd=(ido-1)>>>1;	ipp2=ip;	ipph=(ip+1)>>>1;	if(ido<l1){	  state=103;	  break;	}	t1=0;	t2=0;	for(k=0;k<l1;k++){	  t3=t1;	  t4=t2;	  for(i=0;i<ido;i++){	    ch[t3]=cc[t4];	    t3++;	    t4++;	  }	  t1+=ido;	  t2+=t10;	}	state=106;	break;      case 103:	t1=0;	for(i=0;i<ido;i++){	  t2=t1;	  t3=t1;	  for(k=0;k<l1;k++){	    ch[t2]=cc[t3];	    t2+=ido;	    t3+=t10;	  }	  t1++;	}      case 106:	t1=0;	t2=ipp2*t0;	t7=(t5=ido<<1);	for(j=1;j<ipph;j++){	  t1+=t0;	  t2-=t0;	  t3=t1;	  t4=t2;	  t6=t5;	  for(k=0;k<l1;k++){	    ch[t3]=cc[t6-1]+cc[t6-1];	    ch[t4]=cc[t6]+cc[t6];	    t3+=ido;	    t4+=ido;	    t6+=t10;	  }	  t5+=t7;	}	if (ido == 1){	  state=116;	  break;	}	if(nbd<l1){	  state=112;	  break;	}	t1=0;	t2=ipp2*t0;	t7=0;	for(j=1;j<ipph;j++){	  t1+=t0;	  t2-=t0;	  t3=t1;	  t4=t2;	  t7+=(ido<<1);	  t8=t7;	  for(k=0;k<l1;k++){	    t5=t3;	    t6=t4;	    t9=t8;	    t11=t8;	    for(i=2;i<ido;i+=2){	      t5+=2;	      t6+=2;	      t9+=2;	      t11-=2;	      ch[t5-1]=cc[t9-1]+cc[t11-1];	      ch[t6-1]=cc[t9-1]-cc[t11-1];	      ch[t5]=cc[t9]-cc[t11];	      ch[t6]=cc[t9]+cc[t11];	    }	    t3+=ido;	    t4+=ido;	    t8+=t10;	  }	}	state=116;	break;      case 112:	t1=0;	t2=ipp2*t0;	t7=0;	for(j=1;j<ipph;j++){	  t1+=t0;	  t2-=t0;	  t3=t1;	  t4=t2;	  t7+=(ido<<1);	  t8=t7;	  t9=t7;	  for(i=2;i<ido;i+=2){	    t3+=2;	    t4+=2;	    t8+=2;	    t9-=2;	    t5=t3;	    t6=t4;	    t11=t8;	    t12=t9;	    for(k=0;k<l1;k++){	      ch[t5-1]=cc[t11-1]+cc[t12-1];	      ch[t6-1]=cc[t11-1]-cc[t12-1];	      ch[t5]=cc[t11]-cc[t12];	      ch[t6]=cc[t11]+cc[t12];	      t5+=ido;	      t6+=ido;	      t11+=t10;	      t12+=t10;	    }	  }	}      case 116:	ar1=1.f;	ai1=0.f;	t1=0;	t9=(t2=ipp2*idl1);	t3=(ip-1)*idl1;	for(l=1;l<ipph;l++){	  t1+=idl1;	  t2-=idl1;	  	  ar1h=dcp*ar1-dsp*ai1;	  ai1=dcp*ai1+dsp*ar1;	  ar1=ar1h;	  t4=t1;	  t5=t2;	  t6=0;	  t7=idl1;	  t8=t3;	  for(ik=0;ik<idl1;ik++){	    c2[t4++]=ch2[t6++]+ar1*ch2[t7++];	    c2[t5++]=ai1*ch2[t8++];	  }	  dc2=ar1;	  ds2=ai1;	  ar2=ar1;	  ai2=ai1;	  t6=idl1;	  t7=t9-idl1;	  for(j=2;j<ipph;j++){	    t6+=idl1;	    t7-=idl1;	    ar2h=dc2*ar2-ds2*ai2;	    ai2=dc2*ai2+ds2*ar2;	    ar2=ar2h;	    t4=t1;	    t5=t2;	    t11=t6;	    t12=t7;	    for(ik=0;ik<idl1;ik++){	      c2[t4++]+=ar2*ch2[t11++];	      c2[t5++]+=ai2*ch2[t12++];	    }	  }	}	t1=0;	for(j=1;j<ipph;j++){	  t1+=idl1;	  t2=t1;	  for(ik=0;ik<idl1;ik++)ch2[ik]+=ch2[t2++];	}	t1=0;	t2=ipp2*t0;	for(j=1;j<ipph;j++){	  t1+=t0;	  t2-=t0;	  t3=t1;	  t4=t2;	  for(k=0;k<l1;k++){	    ch[t3]=c1[t3]-c1[t4];	    ch[t4]=c1[t3]+c1[t4];	    t3+=ido;	    t4+=ido;	  }	}	if(ido==1){	  state=132;	  break;	}	if(nbd<l1){	  state=128;	  break;	}	t1=0;	t2=ipp2*t0;	for(j=1;j<ipph;j++){	  t1+=t0;	  t2-=t0;	  t3=t1;	  t4=t2;	  for(k=0;k<l1;k++){	    t5=t3;	    t6=t4;	    for(i=2;i<ido;i+=2){	      t5+=2;	      t6+=2;	      ch[t5-1]=c1[t5-1]-c1[t6];	      ch[t6-1]=c1[t5-1]+c1[t6];	      ch[t5]=c1[t5]+c1[t6-1];	      ch[t6]=c1[t5]-c1[t6-1];	    }	    t3+=ido;	    t4+=ido;	  }	}	state=132;	break;      case 128:	t1=0;	t2=ipp2*t0;	for(j=1;j<ipph;j++){	  t1+=t0;	  t2-=t0;	  t3=t1;	  t4=t2;	  for(i=2;i<ido;i+=2){	    t3+=2;	    t4+=2;	    t5=t3;	    t6=t4;	    for(k=0;k<l1;k++){	      ch[t5-1]=c1[t5-1]-c1[t6];	      ch[t6-1]=c1[t5-1]+c1[t6];	      ch[t5]=c1[t5]+c1[t6-1];	      ch[t6]=c1[t5]-c1[t6-1];	      t5+=ido;	      t6+=ido;	    }	  }	}      case 132:	if(ido==1)return;	for(ik=0;ik<idl1;ik++)c2[ik]=ch2[ik];	t1=0;	for(j=1;j<ip;j++){	  t2=(t1+=t0);	  for(k=0;k<l1;k++){	    c1[t2]=ch[t2];	    t2+=ido;	  }	}	if(nbd>l1){	  state=139;	  break;	}	is= -ido-1;	t1=0;	for(j=1;j<ip;j++){	  is+=ido;	  t1+=t0;	  idij=is;	  t2=t1;	  for(i=2;i<ido;i+=2){	    t2+=2;	    idij+=2;	    t3=t2;	    for(k=0;k<l1;k++){	      c1[t3-1]=wa[index+idij-1]*ch[t3-1]-wa[index+idij]*ch[t3];	      c1[t3]=wa[index+idij-1]*ch[t3]+wa[index+idij]*ch[t3-1];	      t3+=ido;	    }	  }	}	return;      case 139:	is= -ido-1;	t1=0;	for(j=1;j<ip;j++){	  is+=ido;	  t1+=t0;	  t2=t1;	  for(k=0;k<l1;k++){	    idij=is;	    t3=t2;	    for(i=2;i<ido;i+=2){	      idij+=2;	      t3+=2;	      c1[t3-1]=wa[index+idij-1]*ch[t3-1]-wa[index+idij]*ch[t3];	      c1[t3]=wa[index+idij-1]*ch[t3]+wa[index+idij]*ch[t3-1];	    }	    t2+=ido;	  }	}	break loop;       }    }  }  static void drftb1(int n, float[] c, float[] ch, float[] wa, int index, int[] ifac){    int i,k1,l1,l2=0;    int na;    int nf,ip=0,iw,ix2,ix3,ido=0,idl1=0;    nf=ifac[1];    na=0;    l1=1;    iw=1;    for(k1=0;k1<nf;k1++){      int state=100;      loop: while(true){	switch(state){	case 100:	  ip=ifac[k1 + 2];	  l2=ip*l1;	  ido=n/l2;	  idl1=ido*l1;	  if(ip!=4){	    state=103;	    break;	  }	  ix2=iw+ido;	  ix3=ix2+ido;	  if(na!=0)	    dradb4(ido,l1,ch,c,wa,index+iw-1,wa,index+ix2-1,wa,index+ix3-1);	  else	    dradb4(ido,l1,c,ch,wa,index+iw-1,wa,index+ix2-1,wa,index+ix3-1);	  na=1-na;	  state=115;	  break;	case 103:	  if(ip!=2){	    state=106;	    break;	  }	  if(na!=0)	    dradb2(ido,l1,ch,c,wa,index+iw-1);	  else	    dradb2(ido,l1,c,ch,wa,index+iw-1);	  na=1-na;	  state=115;	  break;	case 106:	  if(ip!=3){	    state=109;	    break;	  }	  ix2=iw+ido;	  if(na!=0)	    dradb3(ido,l1,ch,c,wa,index+iw-1,wa,index+ix2-1);	  else	    dradb3(ido,l1,c,ch,wa,index+iw-1,wa,index+ix2-1);	  na=1-na;	  state=115;	  break;	case 109:	  //    The radix five case can be translated later.....	  //    if(ip!=5)goto L112;          //	  //ix2=iw+ido;	  //ix3=ix2+ido;	  //ix4=ix3+ido;	  //if(na!=0)	  //  dradb5(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1,wa+ix4-1);	  //else	  //  dradb5(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1,wa+ix4-1);	  //na=1-na;	  //state=115;           //break;	  if(na!=0)	    dradbg(ido,ip,l1,idl1,ch,ch,ch,c,c,wa,index+iw-1);	  else	    dradbg(ido,ip,l1,idl1,c,c,c,ch,ch,wa,index+iw-1);	  if(ido==1)na=1-na;	case 115:	  l1=l2;	  iw+=(ip-1)*ido;  	  break loop;	}      }    }    if(na==0)return;    for(i=0;i<n;i++)c[i]=ch[i];  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?