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

📄 sbr_e_nf.c

📁 tcpmp.src.0.72RC1 优秀的多媒体播放器TCPMP的源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
    64.0f, 128.0f, 256.0f, 512.0f, 1024.0f, 2048.0f, 4096.0f, 8192.0f,    16384.0f, 32768.0f, 65536.0f, 131072.0f, 262144.0f, 524288.0f, 1.04858E+006f, 2.09715E+006f,    4.1943E+006f, 8.38861E+006f, 1.67772E+007f, 3.35544E+007f, 6.71089E+007f, 1.34218E+008f, 2.68435E+008f, 5.36871E+008f,    1.07374E+009f, 2.14748E+009f, 4.29497E+009f, 8.58993E+009f, 1.71799E+010f, 3.43597E+010f, 6.87195E+010f, 1.37439E+011f,    2.74878E+011f, 5.49756E+011f, 1.09951E+012f, 2.19902E+012f, 4.39805E+012f, 8.79609E+012f, 1.75922E+013f, 3.51844E+013f,    7.03687E+013f, 1.40737E+014f, 2.81475E+014f, 5.6295E+014f, 1.1259E+015f, 2.2518E+015f, 4.5036E+015f, 9.0072E+015f,    1.80144E+016f, 3.60288E+016f, 7.20576E+016f, 1.44115E+017f, 2.8823E+017f, 5.76461E+017f, 1.15292E+018f, 2.30584E+018f,    4.61169E+018f, 9.22337E+018f, 1.84467E+019f, 3.68935E+019f, 7.3787E+019f, 1.47574E+020f, 2.95148E+020f, 5.90296E+020f};void envelope_noise_dequantisation(sbr_info *sbr, uint8_t ch){    if (sbr->bs_coupling == 0)    {        int16_t exp;        uint8_t l, k;        uint8_t amp = (sbr->amp_res[ch]) ? 0 : 1;        for (l = 0; l < sbr->L_E[ch]; l++)        {            for (k = 0; k < sbr->n[sbr->f[ch][l]]; k++)            {                /* +6 for the *64 and -10 for the /32 in the synthesis QMF (fixed)                 * since this is a energy value: (x/32)^2 = (x^2)/1024                 */                /* exp = (sbr->E[ch][k][l] >> amp) + 6; */                exp = (sbr->E[ch][k][l] >> amp);                if ((exp < 0) || (exp >= 64))                {                    sbr->E_orig[ch][k][l] = 0;                } else {                    sbr->E_orig[ch][k][l] = E_deq_tab[exp];                    /* save half the table size at the cost of 1 multiply */                    if (amp && (sbr->E[ch][k][l] & 1))                    {                        sbr->E_orig[ch][k][l] = MUL_C(sbr->E_orig[ch][k][l], COEF_CONST(1.414213562));                    }                }            }        }        for (l = 0; l < sbr->L_Q[ch]; l++)        {            for (k = 0; k < sbr->N_Q; k++)            {                sbr->Q_div[ch][k][l] = calc_Q_div(sbr, ch, k, l);                sbr->Q_div2[ch][k][l] = calc_Q_div2(sbr, ch, k, l);            }        }    }}static const real_t E_pan_tab[25] = {    FRAC_CONST(0.000244081), FRAC_CONST(0.000488043),    FRAC_CONST(0.00097561),  FRAC_CONST(0.00194932),    FRAC_CONST(0.00389105),  FRAC_CONST(0.00775194),    FRAC_CONST(0.0153846),   FRAC_CONST(0.030303),    FRAC_CONST(0.0588235),   FRAC_CONST(0.111111),    FRAC_CONST(0.2),         FRAC_CONST(0.333333),    FRAC_CONST(0.5),         FRAC_CONST(0.666667),    FRAC_CONST(0.8),         FRAC_CONST(0.888889),    FRAC_CONST(0.941176),    FRAC_CONST(0.969697),    FRAC_CONST(0.984615),    FRAC_CONST(0.992248),    FRAC_CONST(0.996109),    FRAC_CONST(0.998051),    FRAC_CONST(0.999024),    FRAC_CONST(0.999512),    FRAC_CONST(0.999756)};void unmap_envelope_noise(sbr_info *sbr){    real_t tmp;    int16_t exp0, exp1;    uint8_t l, k;    uint8_t amp0 = (sbr->amp_res[0]) ? 0 : 1;    uint8_t amp1 = (sbr->amp_res[1]) ? 0 : 1;    for (l = 0; l < sbr->L_E[0]; l++)    {        for (k = 0; k < sbr->n[sbr->f[0][l]]; k++)        {            /* +6: * 64 ; +1: * 2 ; */            exp0 = (sbr->E[0][k][l] >> amp0) + 1;            /* UN_MAP removed: (x / 4096) same as (x >> 12) */            /* E[1] is always even so no need for compensating the divide by 2 with             * an extra multiplication             */            /* exp1 = (sbr->E[1][k][l] >> amp1) - 12; */            exp1 = (sbr->E[1][k][l] >> amp1);            if ((exp0 < 0) || (exp0 >= 64) ||                (exp1 < 0) || (exp1 > 24))            {                sbr->E_orig[1][k][l] = 0;                sbr->E_orig[0][k][l] = 0;            } else {                tmp = E_deq_tab[exp0];                if (amp0 && (sbr->E[0][k][l] & 1))                {                    tmp = MUL_C(tmp, COEF_CONST(1.414213562));                }                /* panning */                sbr->E_orig[0][k][l] = MUL_F(tmp, E_pan_tab[exp1]);                sbr->E_orig[1][k][l] = MUL_F(tmp, E_pan_tab[24 - exp1]);            }        }    }    for (l = 0; l < sbr->L_Q[0]; l++)    {        for (k = 0; k < sbr->N_Q; k++)        {            sbr->Q_div[0][k][l] = calc_Q_div(sbr, 0, k, l);            sbr->Q_div[1][k][l] = calc_Q_div(sbr, 1, k, l);            sbr->Q_div2[0][k][l] = calc_Q_div2(sbr, 0, k, l);            sbr->Q_div2[1][k][l] = calc_Q_div2(sbr, 1, k, l);        }    }}#endif#endif

⌨️ 快捷键说明

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