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