📄 g729ev_main_table.c
字号:
/* ITU-T G.729EV Optimization/Characterization Candidate *//* Version: 1.0.a *//* Revision Date: June 28, 2006 *//* ITU-T G.729EV Optimization/Characterization Candidate ANSI-C Source Code Copyright (c) 2006 France Telecom, Matsushita Electric, Mindspeed, Siemens AG, ETRI, VoiceAge Corp. All rights reserved*/#include <stdlib.h>#include "stl.h"#include "G729EV_MAIN_defines.h"/************************ * Tables for filtering * ************************/const Word16 G729EV_MAIN_lp3k_b_hi[5] = /* Q27 tables */{ (Word16) 716, (Word16) 2671, (Word16) 3917, (Word16) 2671, (Word16) 716,};const Word16 G729EV_MAIN_lp3k_b_lo[5] = /* Q27 tables */{ (Word16) 28078, (Word16) 24525, (Word16) 11556, (Word16) 24525, (Word16) 28078,};const Word16 G729EV_MAIN_lp3k_a_hi[5] = /* Q27 tables */{ (Word16) 2048, (Word16) - 3684, (Word16) - 3481, (Word16) - 1448, (Word16) - 348,};const Word16 G729EV_MAIN_lp3k_a_lo[5] = /* Q27 tables */{ (Word16) 0, (Word16) 17073, (Word16) 5765, (Word16) 22456, (Word16) 25151,};/* 50 Hz high-pass filter coefficients (preprocessing of lower band at 8kHz) Q14*/const Word16 G729EV_MAIN_hp50_b[3] = { (Word16) 15655, (Word16) - 31310, (Word16) 15655 };const Word16 G729EV_MAIN_hp50_a[3] = { (Word16) 16384, (Word16) 32219, (Word16) - 15846 };/* filter coefficients (fc = 100 Hz) */const Word16 G729EV_MAIN_b100[3] = { 15398, -30795, 15398 }; /* Q14 */const Word16 G729EV_MAIN_a100[3] = { 16384, 31671, -15334 }; /* Q14 *//* Window Fir filter (even coefficiens): fc=0.51fs, gain=1.0, nbcoeff=64 (symetric order of 63)*//* Generated by kaiser window : beta =3.2, order = 63, wc = 0.51*/const Word16 G729EV_MAIN_qmf_J64D[G729EV_MAIN_S_QMF] = { /* First 13 Coeffs are Rescaled to 32768/31838 */ 31034, 9324, -6596, -3437, 3739, 1784, -2539, -1002, 1832, 559, -1345, -291, 984, /* Last Coeffs are Rescaled to 32768/1378 */ 2953, -16374, -757, 11481, -403, -7775, 895, 5043, -973, -3095, 827, 1774, -596, -928, 358, 435, -172, -175, 56};/* table for bitrate switching high-band attenuation */const Word16 G729EV_MAIN_switching_gain[G729EV_MAIN_COUNT_RCV_MAX + 1] = {/* 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,*/ 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 8, 10, 13, 16, 20, 25, 32, 40, 51, 64, 81, 102, 128, 161, 203, 256, 323, 406, 512, 645, 813, 1024, 1290, 1625, 2048, 2580, 3251, 4096, 5161, 6502, 8192, 10321, 13004, 16384, 20643, 26008, 32767};/* codebook for fixed-codebook gain correction in cascade CELP (3 bits) Q14*/const Word16 G729EV_MAIN_tab_gain_enha[8] = { 5428, 7184, 8656, 10110, 11710, 13716, 16840, 23448};/* codebook for fixed-codebook gain correction in cascade CELP (2 bits) Q14*/const Word16 G729EV_MAIN_tab_gain_enha2bits[4] = { 8211, 11599, 16384, 23143};const Word16 Sqrt_han_wind8k[G729EV_MAIN_L_FRAME4 + 1] = { 0, 161, 322, 482, 643, 803, 963, 1122, 1282, 1440, 1598, 1756, 1912, 2068, 2224, 2378, 2531, 2684, 2835, 2986, 3135, 3283, 3430, 3575, 3719, 3862, 4003, 4142, 4280, 4417, 4551, 4684, 4815, 4944, 5072, 5197, 5320, 5442, 5561, 5678, 5793, 5905, 6016, 6124, 6229, 6333, 6433, 6532, 6627, 6721, 6811, 6899, 6985, 7068, 7147, 7225, 7299, 7371, 7440, 7505, 7568, 7629, 7686, 7740, 7791, 7839, 7884, 7927, 7966, 8002, 8035, 8064, 8091, 8115, 8135, 8153, 8167, 8178, 8186, 8190, 8192};const Word16 G729EV_FEC_h_low[5] = { -410, 3572, 25602, 3572, -410 };const Word16 G729EV_FEC_h_high[5] = { -410, -3572, 25602, -3572, -410 };const Word16 interpol_frac1[G729EV_MAIN_NB_SUBFR] = { 14746, 26214, 31547, 32767 };const Word16 interpol_frac2[G729EV_MAIN_NB_SUBFR] = { 16384, 16384, 16384, 16384 };const Word16 sqi[7] = { 4, /*2 */ 9, /*3 */ 16, /*4 */ 25, /*5 */ 36, /*6 */ 49, /*7 */ 64}; /*8 */const Word16 inv_sqi[7] = { 8192, /*1/4 */ 3641, /*1/9 */ 2048, /*1/16 */ 1311, /*1/25 */ 910, /*1/36 */ 669, /*1/49 */ 512}; /*1/64 *//**************************** * Tables for MDCT subbands * ****************************//* subband division */const Word16 G729EV_TDAC_sb_bound[G729EV_TDAC_NB_SB + 1] = { 0, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240, 256, 272, 280};const Word16 G729EV_TDAC_nb_coef[G729EV_TDAC_NB_SB] = { 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 8};/***************************** * Tables for Huffman coding * *****************************//* Masks for bitstream packing */const UWord16 G729EV_MAIN_maskBit[G729EV_TDAC_MAX_LONG_HUFF + 1] = { 0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 0xFFFF};const Word16 G729EV_TDAC_len_huff_diff[25] = { 11, 11, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 14,};const UWord16 G729EV_TDAC_code_huff_diff[25] = { 0x0006, 0x0007, 0x0012, 0x0008, 0x0005, 0x0003, 0x0003, 0x0002, 0x0002, 0x000c, 0x0001, 0x0001, 0x0002, 0x0007, 0x000d, 0x0003, 0x0003, 0x0002, 0x0001, 000000, 0x0002, 0x0027, 0x004c, 0x009b, 0x009a,};/***************************************************************//* *//* MDCT TABLES *//* *//***************************************************************//* Cos table in Q15 */const Word16 G729EV_TDAC_xcos[25] = { (Word16) 32767, (Word16) 32767, (Word16) 32767, (Word16) 32767, (Word16) 32767, (Word16) 32767, (Word16) 10126, (Word16) - 26510, (Word16) - 26510, (Word16) 10126, (Word16) 32767, (Word16) - 26510, (Word16) 10126, (Word16) 10126, (Word16) - 26510, (Word16) 32767, (Word16) - 26510, (Word16) 10126, (Word16) 10126, (Word16) - 26510, (Word16) 32767, (Word16) 10126, (Word16) - 26510, (Word16) - 26510, (Word16) 10126};/* Sin table in Q15 */const Word16 G729EV_TDAC_xsin[25] = { (Word16) 0, (Word16) 0, (Word16) 0, (Word16) 0, (Word16) 0, (Word16) 0, (Word16) - 31164, (Word16) - 19261, (Word16) 19261, (Word16) 31164, (Word16) 0, (Word16) - 19261, (Word16) 31164, (Word16) - 31164, (Word16) 19261, (Word16) 0, (Word16) 19261, (Word16) - 31164, (Word16) 31164, (Word16) - 19261, (Word16) 0, (Word16) 31164, (Word16) 19261, (Word16) - 19261, (Word16) - 31164};const Word16 G729EV_TDAC_tab_map[G729EV_TDAC_NP * G729EV_TDAC_NPP] = { 0, 65, 50, 35, 20, 5, 70, 55, 40, 25, 10, 75, 60, 45, 30, 15, 16, 1, 66, 51, 36, 21, 6, 71, 56, 41, 26, 11, 76, 61, 46, 31, 32, 17, 2, 67, 52, 37, 22, 7, 72, 57, 42, 27, 12, 77, 62, 47, 48, 33, 18, 3, 68, 53, 38, 23, 8, 73, 58, 43, 28, 13, 78, 63, 64, 49, 34, 19, 4, 69, 54, 39, 24, 9, 74, 59, 44, 29, 14, 79};const Word16 G729EV_TDAC_tab_map2[G729EV_TDAC_NP * G729EV_TDAC_NPP] = { 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 16, 21, 26, 31, 36, 41, 46, 51, 56, 61, 66, 71, 76, 1, 6, 11, 32, 37, 42, 47, 52, 57, 62, 67, 72, 77, 2, 7, 12, 17, 22, 27, 48, 53, 58, 63, 68, 73, 78, 3, 8, 13, 18, 23, 28, 33, 38, 43, 64, 69, 74, 79, 4, 9, 14, 19, 24, 29, 34, 39, 44, 49, 54, 59};const Word16 G729EV_TDAC_tab_rev_ipp[G729EV_TDAC_NB_REV] = { 1, 2, 3, 5, 7, 11};const Word16 G729EV_TDAC_tab_rev_i[G729EV_TDAC_NB_REV] = { 8, 4, 12, 10, 14, 13};/* Q15 table */const Word16 G729EV_TDAC_rw1[G729EV_TDAC_L_WIN4] = { (Word16) 32767, (Word16) 32667, (Word16) 32365, (Word16) 31863, (Word16) 31164, (Word16) 30274, (Word16) 29197, (Word16) 27939, (Word16) 26510, (Word16) 24917, (Word16) 23170, (Word16) 21281, (Word16) 19261, (Word16) 17121, (Word16) 14876, (Word16) 12540, (Word16) 10126, (Word16) 7650, (Word16) 5126, (Word16) 2571, (Word16) 0, (Word16) - 2571, (Word16) - 5126, (Word16) - 7650, (Word16) - 10126, (Word16) - 12540, (Word16) - 14876, (Word16) - 17121, (Word16) - 19261, (Word16) - 21281, (Word16) - 23170, (Word16) - 24917, (Word16) - 26510, (Word16) - 27939, (Word16) - 29197, (Word16) - 30274, (Word16) - 31164, (Word16) - 31863, (Word16) - 32365, (Word16) - 32667, (Word16) - 32767, (Word16) - 32667, (Word16) - 32365, (Word16) - 31863, (Word16) - 31164, (Word16) - 30274, (Word16) - 29197, (Word16) - 27939, (Word16) - 26510, (Word16) - 24917, (Word16) - 23170, (Word16) - 21281, (Word16) - 19261, (Word16) - 17121, (Word16) - 14876, (Word16) - 12540, (Word16) - 10126, (Word16) - 7650, (Word16) - 5126, (Word16) - 2571, (Word16) 0, (Word16) 2571, (Word16) 5126, (Word16) 7650, (Word16) 10126, (Word16) 12540, (Word16) 14876, (Word16) 17121, (Word16) 19261, (Word16) 21281, (Word16) 23170, (Word16) 24917, (Word16) 26510, (Word16) 27939, (Word16) 29197, (Word16) 30274, (Word16) 31164, (Word16) 31863, (Word16) 32365, (Word16) 32667};/* Q15 tables */const Word16 G729EV_TDAC_rw2[G729EV_TDAC_L_WIN4] = { (Word16) 0, (Word16) 2571, (Word16) 5126, (Word16) 7650, (Word16) 10126, (Word16) 12540, (Word16) 14876, (Word16) 17121, (Word16) 19261, (Word16) 21281, (Word16) 23170, (Word16) 24917, (Word16) 26510, (Word16) 27939, (Word16) 29197, (Word16) 30274, (Word16) 31164, (Word16) 31863, (Word16) 32365, (Word16) 32667, (Word16) 32767, (Word16) 32667, (Word16) 32365, (Word16) 31863, (Word16) 31164, (Word16) 30274, (Word16) 29197, (Word16) 27939, (Word16) 26510, (Word16) 24917,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -