📄 mp3dec_layer2_fp.c
字号:
else
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[4][gr*12+bl][i] = ((*smpl_rw)[3][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[3][gr][i]])
* mp3dec_scale_values[scalefactor[4][gr][i]];
}
break;
}
}
else if (state_com->mc_dyn_cross_bits == 3) {
switch (state_com->mc_dyn_cross_mode[sbgr]) {
case 0 :
for (j = ch_start; j < channels; j++)
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[j][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[j][gr][i]];
break;
case 1 :
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[2][gr][i]];
if (state_com->mc_header.surround == 2 ||
state_com->mc_tc_alloc[sbgr] == 4 ||
state_com->mc_tc_alloc[sbgr] == 5 ||
(state_com->mc_tc_alloc[sbgr] != 3 && state_com->mc_dyn_cross_LR))
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[3][gr*12+bl][i] = ((*smpl_rw)[1][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[1][gr][i]])
* mp3dec_scale_values[scalefactor[3][gr][i]];
else
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[3][gr*12+bl][i] = ((*smpl_rw)[0][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[0][gr][i]])
* mp3dec_scale_values[scalefactor[3][gr][i]];
break;
case 2 :
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[3][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[3][gr][i]];
if (state_com->mc_header.surround == 2 ||
state_com->mc_tc_alloc[sbgr] == 1 ||
state_com->mc_tc_alloc[sbgr] == 5 ||
(state_com->mc_tc_alloc[sbgr] != 2 && !state_com->mc_dyn_cross_LR))
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[0][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[0][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
else
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[1][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[1][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
break;
case 3 :
if (state_com->mc_header.surround == 2 ||
state_com->mc_tc_alloc[sbgr] == 1 ||
state_com->mc_tc_alloc[sbgr] == 5 ||
(state_com->mc_tc_alloc[sbgr] != 2 && !state_com->mc_dyn_cross_LR))
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[0][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[0][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
else
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[1][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[1][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
if (state_com->mc_header.surround == 2 ||
state_com->mc_tc_alloc[sbgr] == 4 ||
state_com->mc_tc_alloc[sbgr] == 5 ||
(state_com->mc_tc_alloc[sbgr] != 3 && state_com->mc_dyn_cross_LR))
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[3][gr*12+bl][i] = ((*smpl_rw)[1][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[1][gr][i]])
* mp3dec_scale_values[scalefactor[3][gr][i]];
else
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[3][gr*12+bl][i] = ((*smpl_rw)[0][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[0][gr][i]])
* mp3dec_scale_values[scalefactor[3][gr][i]];
break;
case 4 :
for (bl = 0; bl < 12; bl++) {
(*smpl_rw)[3][gr*12+bl][i] = (*smpl_rw)[2][gr*12+bl][i];
(*smpl_rw)[2][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[2][gr][i]];
(*smpl_rw)[3][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[3][gr][i]];
}
break;
}
}
else if (state_com->mc_dyn_cross_bits == 4) {
switch (state_com->mc_dyn_cross_mode[sbgr]) {
case 0 :
for (j = ch_start; j < channels; j++)
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[j][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[j][gr][i]];
break;
case 1 :
for (bl = 0; bl < 12; bl++) {
(*smpl_rw)[2][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[2][gr][i]];
(*smpl_rw)[3][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[3][gr][i]];
(*smpl_rw)[4][gr*12+bl][i] = ((*smpl_rw)[1][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[1][gr][i]])
* mp3dec_scale_values[scalefactor[4][gr][i]];
}
break;
case 2 :
for (bl = 0; bl < 12; bl++) {
(*smpl_rw)[2][gr*12+bl][i] = (*smpl_rw)[2][gr*12+bl][i] * mp3dec_scale_values[scalefactor[2][gr][i]];
(*smpl_rw)[3][gr*12+bl][i] = ((*smpl_rw)[0][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[0][gr][i]])
* mp3dec_scale_values[scalefactor[3][gr][i]];
(*smpl_rw)[4][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[4][gr][i]];
}
break;
case 3 :
if ((state_com->mc_tc_alloc[sbgr] == 1) || (state_com->mc_tc_alloc[sbgr] == 7))
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[0][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[0][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
else if ((state_com->mc_tc_alloc[sbgr] == 2) || (state_com->mc_tc_alloc[sbgr] == 6))
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[1][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[1][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
else if (state_com->mc_dyn_cross_LR)
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[1][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[1][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
else
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[0][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[0][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
for (bl = 0; bl < 12; bl++) {
(*smpl_rw)[3][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[3][gr][i]];
(*smpl_rw)[4][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[4][gr][i]];
}
break;
case 4 :
for (bl = 0; bl < 12; bl++) {
(*smpl_rw)[2][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[2][gr][i]];
(*smpl_rw)[3][gr*12+bl][i] = ((*smpl_rw)[0][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[0][gr][i]])
* mp3dec_scale_values[scalefactor[3][gr][i]];
(*smpl_rw)[4][gr*12+bl][i] = ((*smpl_rw)[1][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[1][gr][i]])
* mp3dec_scale_values[scalefactor[4][gr][i]];
}
break;
case 5 :
if ((state_com->mc_tc_alloc[sbgr] == 1) || (state_com->mc_tc_alloc[sbgr] == 7))
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[0][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[0][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
else if ((state_com->mc_tc_alloc[sbgr] == 2) || (state_com->mc_tc_alloc[sbgr] == 6))
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[1][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[1][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
else if (state_com->mc_dyn_cross_LR)
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[1][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[1][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
else
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[0][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[0][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
for (bl = 0; bl < 12; bl++) {
(*smpl_rw)[3][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[3][gr][i]];
(*smpl_rw)[4][gr*12+bl][i] = ((*smpl_rw)[1][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[1][gr][i]])
* mp3dec_scale_values[scalefactor[4][gr][i]];
}
break;
case 6 :
if ((state_com->mc_tc_alloc[sbgr] == 1) || (state_com->mc_tc_alloc[sbgr] == 7))
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[0][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[0][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
else if ((state_com->mc_tc_alloc[sbgr] == 2) || (state_com->mc_tc_alloc[sbgr] == 6))
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[1][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[1][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
else if (state_com->mc_dyn_cross_LR)
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[1][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[1][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
else
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[0][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[0][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
for (bl = 0; bl < 12; bl++) {
(*smpl_rw)[3][gr*12+bl][i] = ((*smpl_rw)[0][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[0][gr][i]])
* mp3dec_scale_values[scalefactor[3][gr][i]];
(*smpl_rw)[4][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[4][gr][i]];
}
break;
case 7 :
if ((state_com->mc_tc_alloc[sbgr] == 1) || (state_com->mc_tc_alloc[sbgr] == 7))
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[0][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[0][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
else if ((state_com->mc_tc_alloc[sbgr] == 2) || (state_com->mc_tc_alloc[sbgr] == 6))
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[1][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[1][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
else if (state_com->mc_dyn_cross_LR)
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[1][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[1][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
else
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[0][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[0][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
for (bl = 0; bl < 12; bl++) {
(*smpl_rw)[3][gr*12+bl][i] = ((*smpl_rw)[0][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[0][gr][i]])
* mp3dec_scale_values[scalefactor[3][gr][i]];
(*smpl_rw)[4][gr*12+bl][i] = ((*smpl_rw)[1][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[1][gr][i]])
* mp3dec_scale_values[scalefactor[4][gr][i]];
}
break;
case 8 :
for (bl = 0; bl < 12; bl++) {
(*smpl_rw)[2][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[2][gr][i]];
(*smpl_rw)[4][gr*12+bl][i] = (*smpl_rw)[3][gr*12+bl][i];
(*smpl_rw)[3][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[3][gr][i]];
(*smpl_rw)[4][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[4][gr][i]];
}
break;
case 9 :
for (bl = 0; bl < 12; bl++) {
(*smpl_rw)[3][gr*12+bl][i] = (*smpl_rw)[2][gr*12+bl][i];
(*smpl_rw)[2][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[2][gr][i]];
(*smpl_rw)[3][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[3][gr][i]];
(*smpl_rw)[4][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[4][gr][i]];
}
break;
case 10 :
for (bl = 0; bl < 12; bl++) {
(*smpl_rw)[4][gr*12+bl][i] = (*smpl_rw)[2][gr*12+bl][i];
(*smpl_rw)[2][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[2][gr][i]];
(*smpl_rw)[3][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[3][gr][i]];
(*smpl_rw)[4][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[4][gr][i]];
}
break;
case 11 :
for (bl = 0; bl < 12; bl++) {
(*smpl_rw)[3][gr*12+bl][i] = (*smpl_rw)[2][gr*12+bl][i];
(*smpl_rw)[2][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[2][gr][i]];
(*smpl_rw)[3][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[3][gr][i]];
(*smpl_rw)[4][gr*12+bl][i] = ((*smpl_rw)[1][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[1][gr][i]])
* mp3dec_scale_values[scalefactor[4][gr][i]];
}
break;
case 12 :
for (bl = 0; bl < 12; bl++) {
(*smpl_rw)[4][gr*12+bl][i] = (*smpl_rw)[2][gr*12+bl][i];
(*smpl_rw)[2][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[2][gr][i]];
(*smpl_rw)[3][gr*12+bl][i] = ((*smpl_rw)[0][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[0][gr][i]])
* mp3dec_scale_values[scalefactor[3][gr][i]];
(*smpl_rw)[4][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[4][gr][i]];
}
break;
case 13:
if ((state_com->mc_tc_alloc[sbgr] == 1) || (state_com->mc_tc_alloc[sbgr] == 7))
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[0][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[0][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
else if ((state_com->mc_tc_alloc[sbgr] == 2) || (state_com->mc_tc_alloc[sbgr] == 6))
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[1][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[1][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
else if (state_com->mc_dyn_cross_LR)
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[1][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[1][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
else
for (bl = 0; bl < 12; bl++)
(*smpl_rw)[2][gr*12+bl][i] = ((*smpl_rw)[0][gr*12+bl][i] * mp3dec_rscale_values[scalefactor[0][gr][i]])
* mp3dec_scale_values[scalefactor[2][gr][i]];
for (bl = 0; bl < 12; bl++) {
(*smpl_rw)[4][gr*12+bl][i] = (*smpl_rw)[3][gr*12+bl][i];
(*smpl_rw)[3][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[3][gr][i]];
(*smpl_rw)[4][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[4][gr][i]];
}
break;
case 14 :
for (bl = 0; bl < 12; bl++) {
(*smpl_rw)[4][gr*12+bl][i] = (*smpl_rw)[2][gr*12+bl][i];
(*smpl_rw)[3][gr*12+bl][i] = (*smpl_rw)[2][gr*12+bl][i];
(*smpl_rw)[2][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[2][gr][i]];
(*smpl_rw)[3][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[3][gr][i]];
(*smpl_rw)[4][gr*12+bl][i] *= mp3dec_scale_values[scalefactor[4][gr][i]];
}
break;
}
}
}
}
}
#define ADD_PREDICT(sb, j, ch, idx, out) \
{ \
Ipp32s i; \
Ipp32f tmp; \
\
tmp = 0.0f; \
for (i = 0; i < state_com->mc_predsi[sb][idx]; i++) \
tmp += \
pred_buf[ch][sb][9+j-i-state_com->mc_delay_comp[sb][idx]] * \
((Ipp32s)state_com->mc_pred_coeff[sb][idx][i] - 127) * \
0.03125f; \
out += tmp; \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -