📄 mpeglayer2.cpp
字号:
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 + -