diff options
Diffstat (limited to 'third_party/g7221/common/tables.c')
-rw-r--r-- | third_party/g7221/common/tables.c | 298 |
1 files changed, 298 insertions, 0 deletions
diff --git a/third_party/g7221/common/tables.c b/third_party/g7221/common/tables.c new file mode 100644 index 00000000..1018e647 --- /dev/null +++ b/third_party/g7221/common/tables.c @@ -0,0 +1,298 @@ +/**************************************************************************** +** +** 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) +** +** © 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 +}; |