D-Modem/pjproject-2.11.1/third_party/g7221/common/tables.c

299 lines
16 KiB
C
Raw Permalink Normal View History

2021-10-30 02:41:03 +08:00
/****************************************************************************
**
** ITU-T G.722.1 (2005-05) - Fixed point implementation for main body and Annex C
** > Software Release 2.1 (2008-06)
** (Simple repackaging; no change from 2005-05 Release 2.0 code)
**
** <EFBFBD> 2004 Polycom, Inc.
**
** All rights reserved.
**
****************************************************************************/
/****************************************************************************
Filename: tables.c
Purpose: Contains tables used by G.722.1 Annex C
Design Notes:
****************************************************************************/
/***************************************************************************
Include files
***************************************************************************/
#include "defs.h"
Word16 int_region_standard_deviation_table[REGION_POWER_TABLE_SIZE] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 1, 1, 1, 2, 3, 4, 6,
8, 11, 16, 23, 32, 45, 64, 91, 128, 181,
256, 362, 512, 724, 1024, 1448, 2048, 2896, 4096, 5793,
8192, 11585, 16384, 23170, 0,0,0,0,0,0,
0,0,0,0};
Word16 standard_deviation_inverse_table[REGION_POWER_TABLE_SIZE] = {
32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
32767, 32767, 32767, 32767, 32767, 23170, 16384, 11585, 8192, 5793,
4096, 2896, 2048, 1448, 1024, 724, 512, 362, 256, 181,
128, 91, 64, 45, 32, 23, 16, 11, 8, 6,
4, 3, 2, 1, 1, 1, 1, 0, 0, 0,
0, 0, 0, 0};
Word16 step_size_inverse_table[NUM_CATEGORIES]={
23167,16384,11585,8192,5793,4096,2896,2896
};
Word16 vector_dimension[NUM_CATEGORIES] = { 2, 2, 2, 4, 4, 5, 5, 1};
Word16 number_of_vectors[NUM_CATEGORIES] = {10,10,10, 5, 5, 4, 4,20};
/* The last category isn't really coded with scalar quantization. */
Word16 max_bin[NUM_CATEGORIES] = {13, 9, 6, 4, 3, 2, 1, 1};
Word16 max_bin_plus_one_inverse[NUM_CATEGORIES] =
{
2341,3277,4682,6554,8193,10923,16385,16385
};
/*
* Release 1.2.
* Add new version of int_dead_zone[] to go with
* changes to vector_huffman() in encoder.c.
*
*/
/************** See new version of table below
Word16 int_dead_zone[NUM_CATEGORIES]=
{
9830,10813,11796,12780,13763,14746,16384,16384
};
***************/
/******** New version of table added in Release 1.2 ********/
Word16 int_dead_zone[NUM_CATEGORIES]=
{
2457, 2703, 2949, 3195, 3440, 3686, 4096, 4096
};
/*
* Release 1.2.
* Added this new table to go with
* changes to vector_huffman() in encoder.c,
* accompanies the new table for int_dead_zone[].
*/
Word16 int_dead_zone_low_bits[NUM_CATEGORIES]=
{
2, 1, 0, 0, 3, 2, 0, 0
};
Word16 samples_to_rmlt_window[DCT_LENGTH]=
{ 44, 134, 224, 314, 404, 494, 584, 674, 764, 853,
943, 1033, 1123, 1213, 1302, 1392, 1482, 1571, 1661, 1750,
1840, 1929, 2019, 2108, 2197, 2286, 2376, 2465, 2554, 2643,
2732, 2821, 2909, 2998, 3087, 3175, 3264, 3352, 3441, 3529,
3617, 3705, 3793, 3881, 3969, 4057, 4144, 4232, 4319, 4407,
4494, 4581, 4668, 4755, 4842, 4928, 5015, 5101, 5188, 5274,
5360, 5446, 5532, 5617, 5703, 5788, 5873, 5959, 6043, 6128,
6213, 6297, 6382, 6466, 6550, 6634, 6718, 6801, 6885, 6968,
7051, 7134, 7217, 7299, 7382, 7464, 7546, 7628, 7709, 7791,
7872, 7953, 8034, 8115, 8195, 8276, 8356, 8436, 8515, 8595,
8674, 8753, 8832, 8911, 8989, 9068, 9146, 9223, 9301, 9378,
9455, 9532, 9609, 9685, 9762, 9838, 9913, 9989, 10064, 10139,
10214, 10288, 10363, 10437, 10510, 10584, 10657, 10730, 10803, 10875,
10948, 11020, 11091, 11163, 11234, 11305, 11375, 11446, 11516, 11586,
11655, 11724, 11793, 11862, 11930, 11998, 12066, 12134, 12201, 12268,
12334, 12401, 12467, 12532, 12598, 12663, 12728, 12792, 12857, 12920,
12984, 13047, 13110, 13173, 13235, 13297, 13359, 13420, 13481, 13542,
13602, 13662, 13722, 13782, 13841, 13899, 13958, 14016, 14074, 14131,
14188, 14245, 14301, 14357, 14413, 14468, 14523, 14578, 14632, 14686,
14739, 14793, 14845, 14898, 14950, 15002, 15053, 15104, 15155, 15205,
15255, 15305, 15354, 15403, 15451, 15500, 15547, 15595, 15642, 15688,
15734, 15780, 15826, 15871, 15916, 15960, 16004, 16047, 16091, 16133,
16176, 16218, 16259, 16300, 16341, 16382, 16422, 16461, 16501, 16540,
16578, 16616, 16654, 16691, 16728, 16764, 16800, 16836, 16871, 16906,
16940, 16974, 17008, 17041, 17074, 17106, 17138, 17170, 17201, 17232,
17262, 17292, 17321, 17350, 17379, 17407, 17435, 17462, 17489, 17516,
17542, 17567, 17593, 17617, 17642, 17666, 17689, 17713, 17735, 17758,
17779, 17801, 17822, 17842, 17863, 17882, 17901, 17920, 17939, 17957,
17974, 17991, 18008, 18024, 18040, 18055, 18070, 18085, 18099, 18113,
18126, 18139, 18151, 18163, 18174, 18185, 18196, 18206, 18216, 18225,
18234, 18242, 18250, 18257, 18265, 18271, 18277, 18283, 18288, 18293,
18298, 18302, 18305, 18308, 18311, 18313, 18315, 18316, 18317, 18317,
};
Word16 rmlt_to_samples_window[DCT_LENGTH]=
{ 44, 133, 222, 310, 399, 488, 577, 666, 754, 843,
932, 1020, 1109, 1198, 1286, 1375, 1464, 1552, 1641, 1729,
1817, 1906, 1994, 2082, 2171, 2259, 2347, 2435, 2523, 2611,
2699, 2786, 2874, 2962, 3049, 3137, 3224, 3312, 3399, 3486,
3573, 3660, 3747, 3834, 3921, 4008, 4094, 4181, 4267, 4353,
4439, 4526, 4611, 4697, 4783, 4869, 4954, 5040, 5125, 5210,
5295, 5380, 5465, 5549, 5634, 5718, 5802, 5886, 5970, 6054,
6138, 6221, 6304, 6388, 6471, 6553, 6636, 6719, 6801, 6883,
6965, 7047, 7129, 7211, 7292, 7373, 7454, 7535, 7616, 7696,
7777, 7857, 7937, 8016, 8096, 8175, 8254, 8333, 8412, 8491,
8569, 8647, 8725, 8803, 8880, 8957, 9035, 9111, 9188, 9264,
9341, 9417, 9492, 9568, 9643, 9718, 9793, 9868, 9942, 10016,
10090, 10163, 10237, 10310, 10383, 10455, 10528, 10600, 10672, 10743,
10815, 10886, 10957, 11027, 11098, 11168, 11237, 11307, 11376, 11445,
11514, 11582, 11650, 11718, 11785, 11853, 11920, 11986, 12053, 12119,
12185, 12250, 12315, 12380, 12445, 12509, 12573, 12637, 12701, 12764,
12826, 12889, 12951, 13013, 13075, 13136, 13197, 13257, 13318, 13378,
13437, 13497, 13556, 13614, 13673, 13731, 13788, 13846, 13903, 13959,
14016, 14072, 14128, 14183, 14238, 14292, 14347, 14401, 14454, 14508,
14561, 14613, 14665, 14717, 14769, 14820, 14871, 14921, 14971, 15021,
15070, 15119, 15168, 15216, 15264, 15311, 15359, 15405, 15452, 15498,
15544, 15589, 15634, 15678, 15722, 15766, 15810, 15853, 15895, 15938,
15979, 16021, 16062, 16103, 16143, 16183, 16223, 16262, 16300, 16339,
16377, 16414, 16452, 16488, 16525, 16561, 16596, 16632, 16666, 16701,
16735, 16768, 16801, 16834, 16867, 16899, 16930, 16961, 16992, 17022,
17052, 17082, 17111, 17140, 17168, 17196, 17223, 17250, 17277, 17303,
17329, 17354, 17379, 17404, 17428, 17452, 17475, 17498, 17520, 17542,
17564, 17585, 17606, 17626, 17646, 17665, 17684, 17703, 17721, 17739,
17756, 17773, 17790, 17806, 17821, 17836, 17851, 17865, 17879, 17893,
17906, 17918, 17931, 17942, 17954, 17965, 17975, 17985, 17995, 18004,
18012, 18021, 18028, 18036, 18043, 18049, 18055, 18061, 18066, 18071,
18076, 18079, 18083, 18086, 18089, 18091, 18093, 18094, 18095, 18095,
};
Word16 max_samples_to_rmlt_window[MAX_DCT_LENGTH]={
0, 43, 89, 133, 178, 222, 268, 314, 357, 403,
447, 493, 538, 582, 628, 671, 717, 763, 807, 853,
896, 942, 987, 1031, 1077, 1121, 1166, 1212, 1256, 1301,
1345, 1390, 1436, 1480, 1526, 1569, 1615, 1660, 1704, 1749,
1793, 1838, 1884, 1928, 1973, 2016, 2062, 2107, 2151, 2196,
2239, 2285, 2331, 2374, 2419, 2463, 2508, 2553, 2597, 2642,
2685, 2730, 2776, 2819, 2864, 2908, 2952, 2998, 3041, 3086,
3129, 3174, 3219, 3263, 3307, 3350, 3396, 3440, 3483, 3528,
3571, 3616, 3661, 3704, 3748, 3791, 3836, 3881, 3923, 3968,
4011, 4055, 4100, 4143, 4187, 4230, 4274, 4318, 4362, 4406,
4448, 4493, 4537, 4580, 4624, 4666, 4710, 4755, 4797, 4841,
4883, 4927, 4971, 5013, 5057, 5099, 5144, 5187, 5229, 5273,
5315, 5359, 5402, 5444, 5488, 5530, 5573, 5617, 5658, 5702,
5743, 5787, 5830, 5871, 5915, 5956, 6000, 6043, 6084, 6127,
6169, 6211, 6254, 6296, 6339, 6380, 6423, 6465, 6507, 6549,
6590, 6633, 6675, 6716, 6759, 6799, 6842, 6884, 6925, 6967,
7007, 7050, 7092, 7132, 7175, 7215, 7257, 7299, 7339, 7381,
7421, 7462, 7504, 7544, 7586, 7626, 7667, 7709, 7749, 7790,
7830, 7871, 7912, 7952, 7993, 8032, 8073, 8114, 8153, 8194,
8234, 8275, 8315, 8355, 8395, 8434, 8474, 8515, 8554, 8594,
8632, 8673, 8713, 8752, 8792, 8830, 8871, 8910, 8949, 8989,
9027, 9066, 9106, 9144, 9184, 9221, 9261, 9300, 9338, 9378,
9415, 9454, 9493, 9531, 9570, 9607, 9646, 9685, 9722, 9761,
9798, 9836, 9875, 9912, 9950, 9987, 10025, 10064, 10100, 10138,
10175, 10213, 10250, 10287, 10325, 10361, 10398, 10436, 10472, 10510,
10545, 10583, 10620, 10656, 10692, 10728, 10766, 10803, 10838, 10874,
10910, 10947, 10983, 11018, 11055, 11089, 11126, 11162, 11197, 11233,
11268, 11303, 11340, 11374, 11410, 11444, 11480, 11515, 11549, 11585,
11619, 11654, 11689, 11723, 11758, 11791, 11826, 11861, 11895, 11930,
11963, 11997, 12032, 12065, 12099, 12132, 12166, 12201, 12233, 12267,
12300, 12333, 12367, 12400, 12433, 12465, 12499, 12532, 12563, 12597,
12629, 12662, 12695, 12727, 12759, 12790, 12823, 12856, 12887, 12920,
12951, 12983, 13016, 13046, 13078, 13109, 13141, 13173, 13203, 13235,
13266, 13296, 13328, 13358, 13389, 13419, 13450, 13481, 13510, 13541,
13571, 13602, 13632, 13661, 13692, 13721, 13751, 13781, 13810, 13840,
13869, 13898, 13929, 13957, 13986, 14015, 14044, 14073, 14101, 14130,
14158, 14187, 14216, 14244, 14272, 14300, 14328, 14357, 14384, 14412,
14439, 14468, 14495, 14522, 14550, 14577, 14604, 14632, 14658, 14686,
14711, 14739, 14765, 14792, 14819, 14844, 14871, 14897, 14923, 14949,
14975, 15001, 15027, 15053, 15079, 15103, 15129, 15155, 15180, 15205,
15229, 15255, 15280, 15304, 15329, 15353, 15378, 15403, 15426, 15451,
15475, 15499, 15523, 15546, 15570, 15594, 15618, 15641, 15664, 15688,
15711, 15734, 15757, 15780, 15802, 15825, 15848, 15871, 15892, 15915,
15937, 15960, 15982, 16003, 16026, 16047, 16069, 16090, 16112, 16133,
16154, 16175, 16197, 16217, 16239, 16259, 16279, 16301, 16320, 16341,
16361, 16382, 16402, 16421, 16441, 16461, 16481, 16501, 16520, 16539,
16558, 16578, 16597, 16615, 16635, 16653, 16672, 16691, 16709, 16728,
16746, 16764, 16782, 16800, 16818, 16835, 16853, 16871, 16888, 16905,
16923, 16940, 16957, 16974, 16991, 17008, 17024, 17041, 17057, 17074,
17090, 17106, 17122, 17138, 17154, 17169, 17185, 17201, 17216, 17231,
17246, 17262, 17277, 17291, 17306, 17321, 17336, 17350, 17364, 17379,
17393, 17407, 17421, 17435, 17449, 17462, 17476, 17490, 17502, 17515,
17528, 17542, 17554, 17567, 17580, 17592, 17605, 17618, 17629, 17642,
17653, 17666, 17678, 17689, 17701, 17712, 17724, 17736, 17746, 17757,
17768, 17779, 17790, 17800, 17811, 17822, 17832, 17842, 17852, 17862,
17872, 17882, 17892, 17902, 17911, 17920, 17930, 17938, 17947, 17956,
17965, 17974, 17983, 17991, 17999, 18008, 18016, 18025, 18032, 18040,
18047, 18055, 18063, 18070, 18078, 18085, 18092, 18099, 18106, 18112,
18119, 18126, 18132, 18138, 18144, 18151, 18157, 18163, 18168, 18174,
18179, 18185, 18191, 18196, 18201, 18206, 18211, 18216, 18220, 18225,
18229, 18234, 18238, 18242, 18246, 18250, 18254, 18257, 18260, 18264,
18268, 18271, 18274, 18277, 18280, 18283, 18286, 18288, 18291, 18293,
18295, 18297, 18300, 18301, 18303, 18305, 18306, 18308, 18309, 18311,
18312, 18312, 18314, 18315, 18315, 18316, 18316, 18317, 18317, 18317
};
Word16 max_rmlt_to_samples_window[MAX_DCT_LENGTH]={
0, 43, 88, 131, 176, 219, 265, 310, 353, 398,
442, 487, 532, 575, 620, 663, 709, 754, 797, 842,
885, 931, 975, 1019, 1064, 1107, 1152, 1197, 1240, 1286,
1329, 1373, 1419, 1462, 1507, 1550, 1595, 1640, 1683, 1728,
1771, 1816, 1861, 1904, 1949, 1992, 2037, 2081, 2125, 2170,
2212, 2258, 2302, 2345, 2390, 2433, 2477, 2522, 2565, 2610,
2652, 2697, 2742, 2784, 2829, 2872, 2916, 2961, 3004, 3048,
3091, 3136, 3180, 3223, 3267, 3310, 3354, 3399, 3441, 3485,
3528, 3572, 3616, 3659, 3703, 3745, 3790, 3834, 3876, 3920,
3962, 4006, 4050, 4093, 4136, 4179, 4222, 4266, 4309, 4352,
4394, 4438, 4482, 4524, 4568, 4610, 4653, 4697, 4739, 4782,
4824, 4867, 4911, 4953, 4996, 5038, 5081, 5124, 5166, 5209,
5251, 5294, 5337, 5378, 5421, 5463, 5506, 5548, 5590, 5633,
5674, 5717, 5759, 5800, 5843, 5884, 5927, 5970, 6011, 6053,
6094, 6136, 6178, 6219, 6262, 6302, 6345, 6387, 6428, 6470,
6510, 6552, 6594, 6635, 6677, 6717, 6759, 6801, 6841, 6883,
6922, 6964, 7006, 7046, 7087, 7127, 7169, 7210, 7250, 7291,
7331, 7372, 7413, 7453, 7494, 7533, 7574, 7615, 7655, 7695,
7735, 7776, 7816, 7855, 7896, 7935, 7975, 8016, 8054, 8095,
8134, 8174, 8214, 8253, 8293, 8332, 8371, 8412, 8450, 8490,
8528, 8568, 8607, 8646, 8685, 8723, 8763, 8802, 8840, 8879,
8917, 8956, 8995, 9033, 9072, 9109, 9148, 9187, 9225, 9264,
9301, 9340, 9378, 9415, 9454, 9491, 9529, 9567, 9604, 9642,
9679, 9717, 9755, 9791, 9829, 9866, 9903, 9941, 9977, 10015,
10051, 10089, 10126, 10162, 10199, 10235, 10272, 10309, 10345, 10382,
10417, 10454, 10491, 10526, 10563, 10598, 10635, 10672, 10706, 10742,
10778, 10814, 10850, 10885, 10921, 10955, 10991, 11027, 11061, 11097,
11131, 11166, 11202, 11236, 11271, 11305, 11340, 11376, 11409, 11444,
11478, 11513, 11547, 11580, 11615, 11648, 11683, 11717, 11751, 11785,
11817, 11852, 11886, 11918, 11952, 11985, 12018, 12053, 12085, 12118,
12150, 12184, 12217, 12249, 12282, 12314, 12347, 12380, 12411, 12444,
12476, 12508, 12541, 12572, 12604, 12635, 12668, 12700, 12731, 12763,
12794, 12826, 12858, 12888, 12920, 12950, 12982, 13013, 13043, 13074,
13105, 13135, 13166, 13196, 13227, 13257, 13287, 13317, 13347, 13377,
13407, 13437, 13467, 13496, 13525, 13555, 13585, 13614, 13643, 13672,
13701, 13730, 13760, 13787, 13817, 13845, 13873, 13903, 13930, 13959,
13987, 14015, 14043, 14071, 14099, 14126, 14154, 14183, 14209, 14237,
14264, 14292, 14319, 14346, 14373, 14400, 14427, 14454, 14480, 14507,
14533, 14560, 14586, 14612, 14639, 14664, 14691, 14717, 14742, 14768,
14793, 14819, 14845, 14870, 14896, 14920, 14945, 14971, 14996, 15020,
15044, 15070, 15094, 15118, 15143, 15167, 15192, 15216, 15239, 15263,
15287, 15311, 15335, 15358, 15382, 15405, 15428, 15452, 15474, 15498,
15520, 15543, 15566, 15588, 15611, 15633, 15656, 15678, 15700, 15722,
15744, 15766, 15788, 15809, 15831, 15852, 15874, 15895, 15916, 15937,
15958, 15979, 16000, 16020, 16041, 16061, 16082, 16103, 16122, 16143,
16162, 16183, 16203, 16222, 16242, 16261, 16281, 16300, 16319, 16339,
16357, 16377, 16396, 16414, 16433, 16451, 16470, 16488, 16506, 16525,
16542, 16561, 16579, 16596, 16614, 16631, 16649, 16667, 16683, 16700,
16717, 16735, 16752, 16768, 16785, 16801, 16818, 16834, 16850, 16867,
16883, 16899, 16915, 16930, 16945, 16961, 16977, 16992, 17007, 17022,
17037, 17052, 17067, 17081, 17096, 17111, 17126, 17140, 17154, 17168,
17182, 17196, 17209, 17223, 17237, 17250, 17264, 17277, 17290, 17303,
17315, 17329, 17341, 17354, 17367, 17379, 17391, 17404, 17415, 17428,
17439, 17451, 17463, 17475, 17486, 17497, 17509, 17520, 17531, 17542,
17552, 17563, 17574, 17584, 17595, 17605, 17616, 17626, 17636, 17646,
17655, 17665, 17675, 17684, 17694, 17703, 17712, 17721, 17730, 17739,
17747, 17756, 17764, 17773, 17781, 17789, 17798, 17806, 17813, 17821,
17829, 17836, 17843, 17851, 17858, 17866, 17872, 17879, 17886, 17893,
17899, 17906, 17912, 17918, 17924, 17931, 17937, 17942, 17948, 17953,
17959, 17964, 17970, 17975, 17980, 17985, 17990, 17995, 17999, 18004,
18008, 18012, 18016, 18021, 18025, 18028, 18032, 18036, 18039, 18043,
18046, 18049, 18052, 18055, 18058, 18061, 18064, 18067, 18069, 18071,
18073, 18075, 18078, 18079, 18081, 18083, 18084, 18086, 18087, 18089,
18090, 18090, 18091, 18092, 18093, 18094, 18094, 18095, 18095, 18095
};