⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpeglayer2.cpp

📁 This code is based on mpeg_play, available from: http://bmrc.berkeley.edu/frame/research/mpeg/
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	switch(scaleselector[LS][i])	{	  case 0:scalefactor[LS][0][i]=scalefactorstable[getbits(6)];		 scalefactor[LS][1][i]=scalefactorstable[getbits(6)];		 scalefactor[LS][2][i]=scalefactorstable[getbits(6)];		 break;	  case 1:scalefactor[LS][0][i]=		 scalefactor[LS][1][i]=scalefactorstable[getbits(6)];		 scalefactor[LS][2][i]=scalefactorstable[getbits(6)];		 break;	  case 2:scalefactor[LS][0][i]=		 scalefactor[LS][1][i]=		 scalefactor[LS][2][i]=scalefactorstable[getbits(6)];		 break;	  case 3:scalefactor[LS][0][i]=scalefactorstable[getbits(6)];		 scalefactor[LS][1][i]=		 scalefactor[LS][2][i]=scalefactorstable[getbits(6)];		 break;	}      }      if(inputstereo && (j=bitalloc[RS][i]))      {	if(!tableindex)	{	  group[RS][i]=grouptableA[j];	  codelength[RS][i]=codelengthtableA[j];	  factor[RS][i]=factortableA[j];	  c[RS][i]=ctableA[j];	  d[RS][i]=dtableA[j];	}	else	{	  if(i<=2)	  {	    group[RS][i]=grouptableB1[j];	    codelength[RS][i]=codelengthtableB1[j];	    factor[RS][i]=factortableB1[j];	    c[RS][i]=ctableB1[j];	    d[RS][i]=dtableB1[j];	  }	  else	  {	    group[RS][i]=grouptableB234[j];	    if(i<=10)	    {	      codelength[RS][i]=codelengthtableB2[j];	      factor[RS][i]=factortableB2[j];	      c[RS][i]=ctableB2[j];	      d[RS][i]=dtableB2[j];	    }	    else if(i<=22)	    {	      codelength[RS][i]=codelengthtableB3[j];	      factor[RS][i]=factortableB3[j];	      c[RS][i]=ctableB3[j];	      d[RS][i]=dtableB3[j];	    }	    else	    {	      codelength[RS][i]=codelengthtableB4[j];	      factor[RS][i]=factortableB4[j];	      c[RS][i]=ctableB4[j];	      d[RS][i]=dtableB4[j];	    }	  }	}	switch(scaleselector[RS][i])	{	  case 0 : scalefactor[RS][0][i]=scalefactorstable[getbits(6)];		   scalefactor[RS][1][i]=scalefactorstable[getbits(6)];		   scalefactor[RS][2][i]=scalefactorstable[getbits(6)];		   break;	  case 1 : scalefactor[RS][0][i]=		   scalefactor[RS][1][i]=scalefactorstable[getbits(6)];		   scalefactor[RS][2][i]=scalefactorstable[getbits(6)];		   break;	  case 2 : scalefactor[RS][0][i]=		   scalefactor[RS][1][i]=		   scalefactor[RS][2][i]=scalefactorstable[getbits(6)];		   break;	  case 3 : scalefactor[RS][0][i]=scalefactorstable[getbits(6)];		   scalefactor[RS][1][i]=		   scalefactor[RS][2][i]=scalefactorstable[getbits(6)];		   break;	}      }    }  }// Read Sample  {    register int i;    for(int l=0;l<SCALEBLOCK;l++)    {      // Read Sample      for(i=0;i<s;i++)      {	if(bitalloc[LS][i])	{	  if(group[LS][i])	  {	    register const REAL *s;	    int code=getbits(codelength[LS][i]);	    code+=code<<1;            if (code > 2184) {//printf("fraction LS OverFlow code %d -> 2184 (1)\n", code);              code=2184;            }	    s=group[LS][i]+code;	    fraction[LS][0][i]=s[0];	    fraction[LS][1][i]=s[1];	    fraction[LS][2][i]=s[2];	  }	  else	  {	    fraction[LS][0][i]=	      REAL(getbits(codelength[LS][i]))*factor[LS][i]-1.0;	    fraction[LS][1][i]=	      REAL(getbits(codelength[LS][i]))*factor[LS][i]-1.0;	    fraction[LS][2][i]=	      REAL(getbits(codelength[LS][i]))*factor[LS][i]-1.0;	  }	}	else fraction[LS][0][i]=fraction[LS][1][i]=fraction[LS][2][i]=0.0;	if(inputstereo && bitalloc[RS][i])	{	  if(group[RS][i])	  {	    const REAL *s;	    int code=getbits(codelength[RS][i]);	    code+=code<<1;            if (code > 2184) {//printf("fraction LS OverFlow code %d -> 2184 (2)\n", code);              code=2184;            }	    s=group[RS][i]+code;	    fraction[RS][0][i]=s[0];	    fraction[RS][1][i]=s[1];	    fraction[RS][2][i]=s[2];	  }	  else	  {	    fraction[RS][0][i]=	      REAL(getbits(codelength[RS][i]))*factor[RS][i]-1.0;	    fraction[RS][1][i]=	      REAL(getbits(codelength[RS][i]))*factor[RS][i]-1.0;	    fraction[RS][2][i]=	      REAL(getbits(codelength[RS][i]))*factor[RS][i]-1.0;	  }	}	else fraction[RS][0][i]=fraction[RS][1][i]=fraction[RS][2][i]=0.0;      }      for(;i<n;i++)      {	if(bitalloc[LS][i])	{	  if(group[LS][i])	  {	    register const REAL *s;	    int code=getbits(codelength[LS][i]);	    code+=code<<1;	    s=group[LS][i]+code;	    fraction[LS][0][i]=fraction[RS][0][i]=s[0];	    fraction[LS][1][i]=fraction[RS][1][i]=s[1];	    fraction[LS][2][i]=fraction[RS][2][i]=s[2];	  }	  else	  {	    fraction[LS][0][i]=fraction[RS][0][i]=	      REAL(getbits(codelength[LS][i]))*factor[LS][i]-1.0;	    fraction[LS][1][i]=fraction[RS][1][i]=	      REAL(getbits(codelength[LS][i]))*factor[LS][i]-1.0;	    fraction[LS][2][i]=fraction[RS][2][i]=	      REAL(getbits(codelength[LS][i]))*factor[LS][i]-1.0;	  }	}	else fraction[LS][0][i]=fraction[LS][1][i]=fraction[LS][2][i]=	     fraction[RS][0][i]=fraction[RS][1][i]=fraction[RS][2][i]=0.0;      }      //Fraction      if(outputstereo)	for(i=0;i<n;i++)	{	  if(bitalloc[LS][i])	  {	    if(!group[LS][i])	    {	      fraction[LS][0][i]=(fraction[LS][0][i]+d[LS][i])*c[LS][i];	      fraction[LS][1][i]=(fraction[LS][1][i]+d[LS][i])*c[LS][i];	      fraction[LS][2][i]=(fraction[LS][2][i]+d[LS][i])*c[LS][i];	    }	    register REAL t=scalefactor[LS][l>>2][i];	    fraction[LS][0][i]*=t;	    fraction[LS][1][i]*=t;	    fraction[LS][2][i]*=t;	  }	  if(bitalloc[RS][i])	  {	    if(!group[RS][i])	    {	      fraction[RS][0][i]=(fraction[RS][0][i]+d[RS][i])*c[RS][i];	      fraction[RS][1][i]=(fraction[RS][1][i]+d[RS][i])*c[RS][i];	      fraction[RS][2][i]=(fraction[RS][2][i]+d[RS][i])*c[RS][i];	    }	    register REAL t=scalefactor[RS][l>>2][i];	    fraction[RS][0][i]*=t;	    fraction[RS][1][i]*=t;	    fraction[RS][2][i]*=t;	  }	}      else	for(i=0;i<n;i++)	  if(bitalloc[LS][i])	  {	    if(!group[LS][i])	    {	      fraction[LS][0][i]=(fraction[LS][0][i]+d[LS][i])*c[LS][i];	      fraction[LS][1][i]=(fraction[LS][1][i]+d[LS][i])*c[LS][i];	      fraction[LS][2][i]=(fraction[LS][2][i]+d[LS][i])*c[LS][i];	    }	    register REAL t=scalefactor[LS][l>>2][i];	    fraction[LS][0][i]*=t;	    fraction[LS][1][i]*=t;	    fraction[LS][2][i]*=t;	  }      for(;i<MAXSUBBAND;i++)	fraction[LS][0][i]=fraction[LS][1][i]=fraction[LS][2][i]=	fraction[RS][0][i]=fraction[RS][1][i]=fraction[RS][2][i]=0.0;      for(i=0;i<3;i++)	subbandsynthesis(fraction[LS][i],fraction[RS][i]);    }  }}

⌨️ 快捷键说明

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