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

📄 mp3dec_layer2_fp.c

📁 audio-video-codecs.rar语音编解码器
💻 C
📖 第 1 页 / 共 4 页
字号:
                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 + -