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

📄 sbr_huff.c

📁 tcpmp.src.0.72RC1 优秀的多媒体播放器TCPMP的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
    {  17,  20 },    {  18,  19 },    { -70, -59 },    { -58, -57 },    {  21,  22 },    { -56, -55 },    { -54,  23 },    { -53, -52 }};static const int8_t f_huffman_env_bal_3_0dB[24][2] = {    { -64,   1 },    { -65,   2 },    { -63,   3 },    { -66,   4 },    { -62,   5 },    { -61,   6 },    { -67,   7 },    { -68,   8 },    { -60,   9 },    {  10,  13 },    { -69,  11 },    { -59,  12 },    { -58, -76 },    {  14,  17 },    {  15,  16 },    { -75, -74 },    { -73, -72 },    {  18,  21 },    {  19,  20 },    { -71, -70 },    { -57, -56 },    {  22,  23 },    { -55, -54 },    { -53, -52 }};static const int8_t t_huffman_noise_3_0dB[62][2] = {    { -64,   1 },    { -63,   2 },    { -65,   3 },    { -66,   4 },    { -62,   5 },    { -67,   6 },    {   7,   8 },    { -61, -68 },    {   9,  30 },    {  10,  15 },    { -60,  11 },    { -69,  12 },    {  13,  14 },    { -59, -53 },    { -95, -94 },    {  16,  23 },    {  17,  20 },    {  18,  19 },    { -93, -92 },    { -91, -90 },    {  21,  22 },    { -89, -88 },    { -87, -86 },    {  24,  27 },    {  25,  26 },    { -85, -84 },    { -83, -82 },    {  28,  29 },    { -81, -80 },    { -79, -78 },    {  31,  46 },    {  32,  39 },    {  33,  36 },    {  34,  35 },    { -77, -76 },    { -75, -74 },    {  37,  38 },    { -73, -72 },    { -71, -70 },    {  40,  43 },    {  41,  42 },    { -58, -57 },    { -56, -55 },    {  44,  45 },    { -54, -52 },    { -51, -50 },    {  47,  54 },    {  48,  51 },    {  49,  50 },    { -49, -48 },    { -47, -46 },    {  52,  53 },    { -45, -44 },    { -43, -42 },    {  55,  58 },    {  56,  57 },    { -41, -40 },    { -39, -38 },    {  59,  60 },    { -37, -36 },    { -35,  61 },    { -34, -33 }};static const int8_t t_huffman_noise_bal_3_0dB[24][2] = {    { -64,   1 },    { -65,   2 },    { -63,   3 },    {   4,   9 },    { -66,   5 },    { -62,   6 },    {   7,   8 },    { -76, -75 },    { -74, -73 },    {  10,  17 },    {  11,  14 },    {  12,  13 },    { -72, -71 },    { -70, -69 },    {  15,  16 },    { -68, -67 },    { -61, -60 },    {  18,  21 },    {  19,  20 },    { -59, -58 },    { -57, -56 },    {  22,  23 },    { -55, -54 },    { -53, -52 }};static INLINE int16_t sbr_huff_dec(bitfile *ld, sbr_huff_tab t_huff){    uint8_t bit;    int16_t index = 0;    while (index >= 0)    {        bit = (uint8_t)faad_get1bit(ld);        index = t_huff[index][bit];    }    return index + 64;}/* table 10 */void sbr_envelope(bitfile *ld, sbr_info *sbr, uint8_t ch){    uint8_t env, band;    int8_t delta = 0;    sbr_huff_tab t_huff, f_huff;    if ((sbr->L_E[ch] == 1) && (sbr->bs_frame_class[ch] == FIXFIX))        sbr->amp_res[ch] = 0;    else        sbr->amp_res[ch] = sbr->bs_amp_res;    if ((sbr->bs_coupling) && (ch == 1))    {        delta = 1;        if (sbr->amp_res[ch])        {            t_huff = t_huffman_env_bal_3_0dB;            f_huff = f_huffman_env_bal_3_0dB;        } else {            t_huff = t_huffman_env_bal_1_5dB;            f_huff = f_huffman_env_bal_1_5dB;        }    } else {        delta = 0;        if (sbr->amp_res[ch])        {            t_huff = t_huffman_env_3_0dB;            f_huff = f_huffman_env_3_0dB;        } else {            t_huff = t_huffman_env_1_5dB;            f_huff = f_huffman_env_1_5dB;        }    }    for (env = 0; env < sbr->L_E[ch]; env++)    {        if (sbr->bs_df_env[ch][env] == 0)        {            if ((sbr->bs_coupling == 1) && (ch == 1))            {                if (sbr->amp_res[ch])                {                    sbr->E[ch][0][env] = (uint16_t)(faad_getbits(ld, 5                        DEBUGVAR(1,272,"sbr_envelope(): bs_data_env")) << delta);                } else {                    sbr->E[ch][0][env] = (uint16_t)(faad_getbits(ld, 6                        DEBUGVAR(1,273,"sbr_envelope(): bs_data_env")) << delta);                }            } else {                if (sbr->amp_res[ch])                {                    sbr->E[ch][0][env] = (uint16_t)(faad_getbits(ld, 6                        DEBUGVAR(1,274,"sbr_envelope(): bs_data_env")) << delta);                } else {                    sbr->E[ch][0][env] = (uint16_t)(faad_getbits(ld, 7                        DEBUGVAR(1,275,"sbr_envelope(): bs_data_env")) << delta);                }            }            for (band = 1; band < sbr->n[sbr->f[ch][env]]; band++)            {                sbr->E[ch][band][env] = (sbr_huff_dec(ld, f_huff) << delta);            }        } else {            for (band = 0; band < sbr->n[sbr->f[ch][env]]; band++)            {                sbr->E[ch][band][env] = (sbr_huff_dec(ld, t_huff) << delta);            }        }    }    extract_envelope_data(sbr, ch);}/* table 11 */void sbr_noise(bitfile *ld, sbr_info *sbr, uint8_t ch){    uint8_t noise, band;    int8_t delta = 0;    sbr_huff_tab t_huff, f_huff;    if ((sbr->bs_coupling == 1) && (ch == 1))    {        delta = 1;        t_huff = t_huffman_noise_bal_3_0dB;        f_huff = f_huffman_env_bal_3_0dB;    } else {        delta = 0;        t_huff = t_huffman_noise_3_0dB;        f_huff = f_huffman_env_3_0dB;    }    for (noise = 0; noise < sbr->L_Q[ch]; noise++)    {        if(sbr->bs_df_noise[ch][noise] == 0)        {            if ((sbr->bs_coupling == 1) && (ch == 1))            {                sbr->Q[ch][0][noise] = (faad_getbits(ld, 5                    DEBUGVAR(1,276,"sbr_noise(): bs_data_noise")) << delta);            } else {                sbr->Q[ch][0][noise] = (faad_getbits(ld, 5                    DEBUGVAR(1,277,"sbr_noise(): bs_data_noise")) << delta);            }            for (band = 1; band < sbr->N_Q; band++)            {                sbr->Q[ch][band][noise] = (sbr_huff_dec(ld, f_huff) << delta);            }        } else {            for (band = 0; band < sbr->N_Q; band++)            {                sbr->Q[ch][band][noise] = (sbr_huff_dec(ld, t_huff) << delta);            }        }    }    extract_noise_floor_data(sbr, ch);}#endif

⌨️ 快捷键说明

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