dec_rom.c

来自「现在关于h.264的源码很多」· C语言 代码 · 共 2,113 行 · 第 1/4 页

C
2,113
字号
   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 + =
减小字号Ctrl + -
显示快捷键?