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

📄 dec_rom.c

📁 关于AMR-WB+语音压缩编码的实现代码
💻 C
📖 第 1 页 / 共 4 页
字号:
   -776, -854, -891, -920,
   -552, -610, -663, -741,
   -321, -370, -476, -565,
   274, -160, -456, 201,
   265, 67, -160, -306,
   -8, -210, 79, 272,
   163, 236, 307, 308,
   578, 317, 64, 298,
   -9, 197, 342, 620,
   343, 232, 314, 622,
   173, 149, 548, 527,
   356, 370, 481, 376,
   135, 444, 488, 556,
   391, 471, 487, 653,
   228, 424, 576, 835,
   422, 372, 722, 682,
   295, 673, 693, 635,
   539, 596, 590, 449,
   475, 618, 659, 818,
   735, 517, 491, 673,
   602, 346, 257, 877,
   625, 635, 849, 720,
   727, 818, 698, 595,
   653, 481, 690, 1139,
   814, 762, 704, 908,
   507, 747, 898, 936,
   848, 855, 924, 785,
   646, 1037, 882, 795,
   772, 845, 1024, 1151,
   1133, 983, 818, 921,
   940, 1068, 1252, 1302,
   1588, 1767, 1718, 1513
};
/*
 * 5th split: isf12 to isf15
 */
const Word16 D_ROM_dico5_isf_noise[SIZE_BK_NOISE5 * 4] = {
   -810, -879, -945, -254,
   248, 184, 671, 128,
   288, 703, 918, 99,
   658, 558, 662, 219,
   552, 585, 910, 208,
   559, 804, 759, 119,
   606, 774, 921, -139,
   782, 761, 748, 208,
   756, 708, 983, 56,
   544, 864, 1010, 152,
   737, 698, 987, 299,
   771, 924, 879, 103,
   536, 785, 961, 405,
   667, 916, 801, 328,
   738, 705, 773, 439,
   823, 871, 992, 355,
   640, 1004, 1052, 369,
   724, 822, 949, 597,
   415, 655, 729, 482,
   1009, 896, 793, 363,
   908, 803, 687, -25,
   1016, 838, 1011, 189,
   947, 1112, 942, 222,
   914, 1049, 981, 527,
   956, 987, 1011, -120,
   781, 1049, 1121, 92,
   1178, 1053, 884, 47,
   1123, 1059, 1182, 118,
   933, 972, 1277, 357,
   1109, 918, 1101, 503,
   1039, 1286, 1220, 317,
   1351, 1207, 1010, 326
};
/*
 * Table of pitch and codebook gains
 *
 * g_pitch(Q14), g_code(Q11)
 *
 * pitch gain are ordered in table to reduce complexity
 * during quantization of gains.
 */
/* Number of quantization level is 64 */
const Word16 D_ROM_qua_gain6b[64 * 2] = {
   1566, 1332,
   1577, 3557,
   3071, 6490,
   4193, 10163,
   4496, 2534,
   5019, 4488,
   5586, 15614,
   5725, 1422,
   6453, 580,
   6724, 6831,
   7657, 3527,
   8072, 2099,
   8232, 5319,
   8827, 8775,
   9740, 2868,
   9856, 1465,
   10087, 12488,
   10241, 4453,
   10859, 6618,
   11321, 3587,
   11417, 1800,
   11643, 2428,
   11718, 988,
   12312, 5093,
   12523, 8413,
   12574, 26214,
   12601, 3396,
   13172, 1623,
   13285, 2423,
   13418, 6087,
   13459, 12810,
   13656, 3607,
   14111, 4521,
   14144, 1229,
   14425, 1871,
   14431, 7234,
   14445, 2834,
   14628, 10036,
   14860, 17496,
   15161, 3629,
   15209, 5819,
   15299, 2256,
   15518, 4722,
   15663, 1060,
   15759, 7972,
   15939, 11964,
   16020, 2996,
   16086, 1707,
   16521, 4254,
   16576, 6224,
   16894, 2380,
   16906, 681,
   17213, 8406,
   17610, 3418,
   17895, 5269,
   18168, 11748,
   18230, 1575,
   18607, 32767,
   18728, 21684,
   19137, 2543,
   19422, 6577,
   19446, 4097,
   19450, 9056,
   20371, 14885
};
/* Number of quantization level is 128 */
const Word16 D_ROM_qua_gain7b[128 * 2] = {
   204, 441,
   464, 1977,
   869, 1077,
   1072, 3062,
   1281, 4759,
   1647, 1539,
   1845, 7020,
   1853, 634,
   1995, 2336,
   2351, 15400,
   2661, 1165,
   2702, 3900,
   2710, 10133,
   3195, 1752,
   3498, 2624,
   3663, 849,
   3984, 5697,
   4214, 3399,
   4415, 1304,
   4695, 2056,
   5376, 4558,
   5386, 676,
   5518, 23554,
   5567, 7794,
   5644, 3061,
   5672, 1513,
   5957, 2338,
   6533, 1060,
   6804, 5998,
   6820, 1767,
   6937, 3837,
   7277, 414,
   7305, 2665,
   7466, 11304,
   7942, 794,
   8007, 1982,
   8007, 1366,
   8326, 3105,
   8336, 4810,
   8708, 7954,
   8989, 2279,
   9031, 1055,
   9247, 3568,
   9283, 1631,
   9654, 6311,
   9811, 2605,
   10120, 683,
   10143, 4179,
   10245, 1946,
   10335, 1218,
   10468, 9960,
   10651, 3000,
   10951, 1530,
   10969, 5290,
   11203, 2305,
   11325, 3562,
   11771, 6754,
   11839, 1849,
   11941, 4495,
   11954, 1298,
   11975, 15223,
   11977, 883,
   11986, 2842,
   12438, 2141,
   12593, 3665,
   12636, 8367,
   12658, 1594,
   12886, 2628,
   12984, 4942,
   13146, 1115,
   13224, 524,
   13341, 3163,
   13399, 1923,
   13549, 5961,
   13606, 1401,
   13655, 2399,
   13782, 3909,
   13868, 10923,
   14226, 1723,
   14232, 2939,
   14278, 7528,
   14439, 4598,
   14451, 984,
   14458, 2265,
   14792, 1403,
   14818, 3445,
   14899, 5709,
   15017, 15362,
   15048, 1946,
   15069, 2655,
   15405, 9591,
   15405, 4079,
   15570, 7183,
   15687, 2286,
   15691, 1624,
   15699, 3068,
   15772, 5149,
   15868, 1205,
   15970, 696,
   16249, 3584,
   16338, 1917,
   16424, 2560,
   16483, 4438,
   16529, 6410,
   16620, 11966,
   16839, 8780,
   17030, 3050,
   17033, 18325,
   17092, 1568,
   17123, 5197,
   17351, 2113,
   17374, 980,
   17566, 26214,
   17609, 3912,
   17639, 32767,
   18151, 7871,
   18197, 2516,
   18202, 5649,
   18679, 3283,
   18930, 1370,
   19271, 13757,
   19317, 4120,
   19460, 1973,
   19654, 10018,
   19764, 6792,
   19912, 5135,
   20040, 2841,
   21234, 19833
};
/*
 * 1/4 resolution interpolation filter (-3 dB at 0.856*fs/2) in Q14
 */
const Word16 D_ROM_inter4_2[UP_SAMP * 2 * L_INTERPOL2] = {
   0, 1, 2, 1,
   -2, -7, -10, -7,
   4, 19, 28, 22,
   -2, -33, -55, -49,
   -10, 47, 91, 92,
   38, -52, -133, -153,
   -88, 43, 175, 231,
   165, -9, -209, -325,
   -275, -60, 226, 431,
   424, 175, -213, -544,
   -619, -355, 153, 656,
   871, 626, -16, -762,
   -1207, -1044, -249, 853,
   1699, 1749, 780, -923,
   -2598, -3267, -2147, 968,
   5531, 10359, 14031, 15401,
   14031, 10359, 5531, 968,
   -2147, -3267, -2598, -923,
   780, 1749, 1699, 853,
   -249, -1044, -1207, -762,
   -16, 626, 871, 656,
   153, -355, -619, -544,
   -213, 175, 424, 431,
   226, -60, -275, -325,
   -209, -9, 165, 231,
   175, 43, -88, -153,
   -133, -52, 38, 92,
   91, 47, -10, -49,
   -55, -33, -2, 22,
   28, 19, 4, -7,
   -10, -7, -2, 1,
   2, 1, 0, 0
};
/*
 * 1/5 resolution interpolation filter  (in Q14)
 * -1.5dB @ 6kHz, -6dB @ 6.4kHz, -10dB @ 6.6kHz, -20dB @ 6.9kHz, -25dB @ 7kHz, -55dB @ 8kHz
 */
const Word16 D_ROM_fir_up[120] = {
   -1, -4, -7, -6, 0,
   12, 24, 30, 23, 0,
   -33, -62, -73, -52, 0,
   68, 124, 139, 96, 0,
   -119, -213, -235, -160, 0,
   191, 338, 368, 247, 0,
   -291, -510, -552, -369, 0,
   430, 752, 812, 542, 0,
   -634, -1111, -1204, -809, 0,
   963, 1708, 1881, 1288, 0,
   -1616, -2974, -3432, -2496, 0,
   3792, 8219, 12368, 15317, 16384,
   15317, 12368, 8219, 3792, 0,
   -2496, -3432, -2974, -1616, 0,
   1288, 1881, 1708, 963, 0,
   -809, -1204, -1111, -634, 0,
   542, 812, 752, 430, 0,
   -369, -552, -510, -291, 0,
   247, 368, 338, 191, 0,
   -160, -235, -213, -119, 0,
   96, 139, 124, 68, 0,
   -52, -73, -62, -33, 0,
   23, 30, 24, 12, 0,
   -6, -7, -4, -1, 0
};
/* table x4/5 */
const Word16 D_ROM_fir_down[120] = {
   -1, -3, -6, -5,
   0, 9, 19, 24,
   18, 0, -26, -50,
   -58, -41, 0, 54,
   99, 111, 77, 0,
   -95, -170, -188, -128,
   0, 153, 270, 294,
   198, 0, -233, -408,
   -441, -295, 0, 344,
   601, 649, 434, 0,
   -507, -888, -964, -647,
   0, 770, 1366, 1505,
   1030, 0, -1293, -2379,
   -2746, -1997, 0, 3034,
   6575, 9894, 12254, 13107,
   12254, 9894, 6575, 3034,
   0, -1997, -2746, -2379,
   -1293, 0, 1030, 1505,
   1366, 770, 0, -647,
   -964, -888, -507, 0,
   434, 649, 601, 344,
   0, -295, -441, -408,
   -233, 0, 198, 294,
   270, 153, 0, -128,
   -188, -170, -95, 0,
   77, 111, 99, 54,
   0, -41, -58, -50,
   -26, 0, 18, 24,
   19, 9, 0, -5,
   -6, -3, -1, 0
};
/*
 * Impulse response with phase dispersion
 */
/* 2.0 - 6.4 kHz phase dispersion */
const Word16 D_ROM_ph_imp_low[L_SUBFR] = {
   20182, 9693, 3270, -3437, 2864, -5240, 1589, -1357,
   600, 3893, -1497, -698, 1203, -5249, 1199, 5371,
   -1488, -705, -2887, 1976, 898, 721, -3876, 4227,
   -5112, 6400, -1032, -4725, 4093, -4352, 3205, 2130,
   -1996, -1835, 2648, -1786, -406, 573, 2484, -3608,
   3139, -1363, -2566, 3808, -639, -2051, -541, 2376,
   3932, -6262, 1432, -3601, 4889, 370, 567, -1163,
   -2854, 1914, 39, -2418, 3454, 2975, -4021, 3431
};
/* 3.2 - 6.4 kHz phase dispersion */
const Word16 D_ROM_ph_imp_mid[L_SUBFR] = {
   24098, 10460, -5263, -763, 2048, -927, 1753, -3323,
   2212, 652, -2146, 2487, -3539, 4109, -2107, -374,
   -626, 4270, -5485, 2235, 1858, -2769, 744, 1140,
   -763, -1615, 4060, -4574, 2982, -1163, 731, -1098,
   803, 167, -714, 606, -560, 639, 43, -1766,
   3228, -2782, 665, 763, 233, -2002, 1291, 1871,
   -3470, 1032, 2710, -4040, 3624, -4214, 5292, -4270,
   1563, 108, -580, 1642, -2458, 957, 544, 2540
};
/*
 * Table for synthesis of signal at 16kHz with HF extension.
 */
const Word16 D_ROM_hp_gain[16] = {
   3624, 4673, 5597, 6479, 7425, 8378, 9324, 10264,
   11210, 12206, 13391, 14844, 16770, 19655, 24289, 32728
};
/*
 * isp and isf tables for initialization
 */
const Word16 D_ROM_isp[M] = {
   32138, 30274, 27246, 23170, 18205, 12540, 6393, 0,
   -6393, -12540, -18205, -23170, -27246, -30274, -32138, 1475
};
const Word16 D_ROM_isf[M] = {
   1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192,
   9216, 10240, 11264, 12288, 13312, 14336, 15360, 3840
};
/*
 * means of ISFs
 */
const Word16 D_ROM_mean_isf[ORDER] = {
   738, 1326, 2336, 3578, 4596, 5662, 6711, 7730,
   8750, 9753, 10705, 11728, 12833, 13971, 15043, 4037
};
const Word16 D_ROM_mean_isf_noise[ORDER] = {
   478, 1100, 2213, 3267, 4219, 5222, 6198, 7240,
   8229, 9153, 10098, 11108, 12144, 13184, 14165, 3803
};
/* 16-byte align end */
/*
 * LTP gain & fixed codebook gain consealement
 */
/* pitch gain weight */
const Word16 D_ROM_pdown_unusable[7] = {32767, 31130, 29491, 24576, 7537, 1638, 328};
const Word16 D_ROM_cdown_unusable[7] = {32767, 16384, 8192, 8192, 8192, 4915, 3277};
/* codebook gain weight */
const Word16 D_ROM_pdown_usable[7] = {32767, 32113, 31457, 24576, 7537, 1638, 328};
const Word16 D_ROM_cdown_usable[7] = {32767, 32113, 32113, 32113, 32113, 32113, 22938};
/*
 * filter coefficients (gain=4.0)
 */
const Word16 D_ROM_fir_6k_7k[L_FIR] = {
   -32, 47, 32, -27, -369,
   1122, -1421, 0, 3798, -8880,
   12349, -10984, 3548, 7766, -18001,
   22118, -18001, 7766, 3548, -10984,
   12349, -8880, 3798, 0, -1421,
   1122, -369, -27, 32, 47,
   -32
};
const Word16 D_ROM_fir_7k[L_FIR] = {
   -21, 47, -89, 146, -203,
   229, -177, 0, 335, -839,
   1485, -2211, 2931, -3542, 3953,
   28682, 3953, -3542, 2931, -2211,
   1485, -839, 335, 0, -177,
   229, -203, 146, -89, 47,
   -21
};
/*
 * LPC interpolation coef {0.45, 0.8, 0.96, 1.0}; in Q15
 */
const Word16 D_ROM_interpol_frac[NB_SUBFR] = {14746, 26214, 31457, 32767};
/*
 * Math tables
 */
const Word16 D_ROM_pow2[33] = {
   16384, 16743, 17109, 17484, 17867, 18258, 18658, 19066, 19484, 19911,
   20347, 20792, 21247, 21713, 22188, 22674, 23170, 23678, 24196, 24726,
   25268, 25821, 26386, 26964, 27554, 28158, 28774, 29405, 30048, 30706,
   31379, 32066, 32767
};
const Word16 D_ROM_isqrt[49] = {
   32767, 31790, 30894, 30070, 29309, 28602, 27945, 27330, 26755, 26214,
   25705, 25225, 24770, 24339, 23930, 23541, 23170, 22817, 22479, 22155,
   21845, 21548, 21263, 20988, 20724, 20470, 20225, 19988, 19760, 19539,
   19326, 19119, 18919, 18725, 18536, 18354, 18176, 18004, 17837, 17674,
   17515, 17361, 17211, 17064, 16921, 16782, 16646, 16514, 16384
};
const Word16 D_ROM_log2[33] = {
   0, 1455, 2866, 4236, 5568, 6863, 8124, 9352, 10549, 11716,
   12855, 13967, 15054, 16117, 17156, 18172, 19167, 20142, 21097, 22033,
   22951, 23852, 24735, 25603, 26455, 27291, 28113, 28922, 29716, 30497,
   31266, 32023, 32767
};
/* table of cos(x) in Q15 */
const Word16 D_ROM_cos[129] = {
   32767,
   32758, 32729, 32679, 32610, 32522, 32413, 32286, 32138,
   31972, 31786, 31581, 31357, 31114, 30853, 30572, 30274,
   29957, 29622, 29269, 28899, 28511, 28106, 27684, 27246,
   26791, 26320, 25833, 25330, 24812, 24279, 23732, 23170,
   22595, 22006, 21403, 20788, 20160, 19520, 18868, 18205,
   17531, 16846, 16151, 15447, 14733, 14010, 13279, 12540,
   11793, 11039, 10279, 9512, 8740, 7962, 7180, 6393,
   5602, 4808, 4011, 3212, 2411, 1608, 804, 0,
   -804, -1608, -2411, -3212, -4011, -4808, -5602, -6393,
   -7180, -7962, -8740, -9512, -10279, -11039, -11793, -12540,
   -13279, -14010, -14733, -15447, -16151, -16846, -17531, -18205,
   -18868, -19520, -20160, -20788, -21403, -22006, -22595, -23170,
   -23732, -24279, -24812, -25330, -25833, -26320, -26791, -27246,
   -27684, -28106, -28511, -28899, -29269, -29622, -29957, -30274,
   -30572, -30853, -31114, -31357, -31581, -31786, -31972, -32138,
   -32286, -32413, -32522, -32610, -32679, -32729, -32758, -32768
};

⌨️ 快捷键说明

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