summaryrefslogtreecommitdiff
path: root/audio_codec/libamr/dec_rom.c (plain)
blob: 6752a62e333b002571b19b6c936a0e1381c221b5
1/*
2 *===================================================================
3 * 3GPP AMR Wideband Floating-point Speech Codec
4 *===================================================================
5 */
6#include "typedef.h"
7
8#define L_SUBFR 64 /* Subframe size */
9#define L_FIR 31
10#define ORDER 16 /* Order of linear prediction filter */
11#define M 16 /* Order of LP filter */
12#define NB_SUBFR 4 /* Number of subframe per frame */
13#define UP_SAMP 4
14#define L_INTERPOL2 16
15
16#define SIZE_BK1 256
17#define SIZE_BK2 256
18#define SIZE_BK21 64
19#define SIZE_BK22 128
20#define SIZE_BK23 128
21#define SIZE_BK24 32
22#define SIZE_BK25 32
23#define SIZE_BK21_36b 128
24#define SIZE_BK22_36b 128
25#define SIZE_BK23_36b 64
26#define SIZE_BK_NOISE1 64
27#define SIZE_BK_NOISE2 64
28#define SIZE_BK_NOISE3 64
29#define SIZE_BK_NOISE4 32
30#define SIZE_BK_NOISE5 32
31
32/* 16-byte align start */
33#ifdef ENABLE_CPU2_DECODER
34CPU2_DATA_START
35#endif
36/*
37 * isf codebooks: two-stage VQ with split-by-5 in 2nd stage
38 *
39 * codebook vector dimension number of vectors
40 * ~~~~~~~~ ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
41 * 1_1 9 256
42 * 1_2 7 256
43 * 2_1 3 64
44 * 2_2 3 128
45 * 2_3 3 128
46 * 2_4 3 32
47 * 2_5 4 32
48 */
49
50/*
51 * 1st stage codebook; 1st split: isf0 to isf8
52 */
53
54const Word16 D_ROM_dico1_isf[SIZE_BK1 * 9] = {
55
56 579, 1081, 1035, 390, 3, -263, -198, -82, 38,
57 18, -68, -12, 313, 761, 405, 249, 111, -76,
58 740, 1263, 1292, 1006, 997, 1019, 1017, 976, 923,
59 -91, 827, 948, 648, 613, 535, 522, 490, 421,
60 41, -44, -281, -472, 652, 534, 193, 135, -90,
61 41, -121, -356, -60, 663, 307, 61, -48, -344,
62 557, 946, 1049, 867, 846, 990, 1112, 1262, 1241,
63 -118, -204, 328, 512, 870, 793, 610, 402, 186,
64 156, 293, 74, -338, -475, -897, -594, -161, -497,
65 226, 131, -138, 307, 169, -271, -164, -387, -624,
66 62, -32, -61, -252, -541, -828, -1027, -523, -662,
67 102, -61, 141, 112, -270, -251, -541, 25, -150,
68 6, -132, -356, -686, -96, -322, -522, -31, -326,
69 -36, -209, -521, -229, 307, -132, -5, -99, -384,
70 60, -51, -237, -668, -973, -407, -708, -75, -172,
71 26, -138, -266, 111, -302, 43, -278, -356, -359,
72 570, 822, 496, -154, -312, -92, 137, 279, 371,
73 -146, 368, 409, 68, 6, 77, 167, 202, 162,
74 633, 898, 996, 756, 662, 683, 783, 909, 996,
75 -103, 294, 607, 415, 483, 462, 480, 431, 408,
76 -120, -338, -612, -524, 584, 331, 92, 433, 276,
77 -178, -293, -154, -41, 269, 100, -9, 213, 160,
78 830, 736, 278, 820, 1254, 686, 712, 1039, 473,
79 -218, -304, 463, 454, 397, 273, 202, 286, 273,
80 -232, 7, 6, -388, -472, -427, -378, -167, -100,
81 -294, -183, 134, -47, 101, -88, -84, -117, -3,
82 57, 17, -202, -634, -989, -1119, -533, 176, -36,
83 120, -28, 23, 111, -319, 318, -22, -77, 266,
84 -271, -464, -434, -658, -640, -385, -385, -99, -69,
85 -198, -259, -266, -44, -39, -139, -137, 171, 66,
86 9, -145, -377, -846, -1000, -111, -325, 342, 135,
87 -81, -286, -380, 192, -57, 307, 76, -24, -140,
88 677, 702, 247, 56, 249, 141, -105, -236, -99,
89 36, -39, -69, 348, 198, -93, 322, 91, -72,
90 503, 885, 1508, 1307, 1282, 1172, 1119, 1209, 1061,
91 416, 719, 989, 1227, 1001, 1052, 954, 741, 1044,
92 -127, -376, -657, 139, 623, 223, 501, 306, 220,
93 -113, -384, -796, 504, 438, 85, 213, -83, -194,
94 585, 1132, 1233, 1091, 1247, 1433, 1512, 1448, 1314,
95 -174, -422, 7, 1155, 1089, 1182, 1003, 945, 806,
96 8, -126, -317, -103, -351, -695, -98, -268, -537,
97 33, -103, -290, 167, -39, -407, 44, -208, -375,
98 104, -23, -64, -291, -637, -851, -1084, -61, -112,
99 -75, -306, -434, 218, -148, -354, -680, -133, -216,
100 -121, -377, -718, -97, -130, -361, -156, -379, -599,
101 -56, -254, -586, 235, 157, -214, 11, -260, -149,
102 -124, -267, -397, -580, -593, -527, -805, -385, 346,
103 -193, -440, -708, -351, -141, -255, -499, -147, -185,
104 448, 660, 494, 208, 509, 461, 338, 291, 149,
105 -223, 88, 335, 159, 212, 191, 286, 308, 205,
106 -31, 469, 803, 659, 619, 658, 843, 987, 1113,
107 -171, -242, 514, 362, 295, 524, 552, 694, 585,
108 -64, -308, -448, -21, 284, 786, 446, 289, 92,
109 -218, -390, -7, 169, 206, 330, 352, 408, 358,
110 -36, 702, 959, 859, 861, 1115, 1269, 1357, 1305,
111 -133, -341, -65, 678, 417, 440, 486, 518, 780,
112 33, -44, -191, -344, -461, -755, -201, 217, -31,
113 -353, -547, -44, 123, -61, -68, -79, 29, 60,
114 73, -57, -406, -766, -1243, -1203, 240, 400, 165,
115 -73, -282, -601, -213, -171, -375, 332, 35, -103,
116 -29, -207, -553, -476, -638, -908, 172, -22, -135,
117 -192, -239, -164, -103, -111, -47, 153, 125, 110,
118 -1, -203, -570, -1030, -1424, -535, 155, 1, 147,
119 -333, -653, -865, -197, -158, -21, -44, 95, 108,
120 389, 588, 490, 33, -237, -524, -628, -136, -260,
121 40, -177, -462, 453, 862, 380, 131, -130, -405,
122 842, 1678, 1841, 1549, 1474, 1256, 1082, 905, 742,
123 370, 1216, 1768, 1633, 1212, 636, 22, -330, 71,
124 -76, -281, -741, -742, 898, 619, 277, 71, -222,
125 -32, -265, -556, -25, 994, 682, 305, 126, -165,
126 73, 738, 893, 968, 993, 1768, 2273, 1840, 1391,
127 -69, -349, -585, 234, 1158, 903, 626, 510, 251,
128 -1, -99, -272, -210, -603, -351, -540, -811, -383,
129 -16, -230, -504, 410, 149, -205, -343, -651, -639,
130 103, -9, -227, -205, -562, -781, -1079, -1208, -156,
131 143, 63, -135, -67, -317, -602, -784, -1154, -640,
132 -144, -391, -674, -622, -200, -254, -660, -947, -395,
133 -40, -250, -625, 27, 543, 94, -131, -386, -673,
134 -123, -371, -757, -451, -564, -614, -415, -711, -35,
135 -116, -309, -593, -268, 239, -33, -338, -650, -135,
136 94, 251, 554, 57, -312, -423, -154, -57, 235,
137 -268, -71, 381, 114, -44, -87, 125, 173, 133,
138 1513, 1714, 1238, 534, 276, 315, 461, 459, 508,
139 -131, -19, 1149, 670, 486, 356, 309, 369, 296,
140 -223, -501, -899, -722, -70, 6, 131, 310, 394,
141 -99, -303, -517, 249, 64, -53, 135, -11, 453,
142 -147, -399, -730, -401, 817, 738, 802, 749, 575,
143 -154, -435, -739, 800, 593, 366, 529, 318, 326,
144 -224, 45, -39, -387, -515, -518, -608, -384, -321,
145 -315, -377, 143, -101, -113, -377, -177, -144, -12,
146 117, 40, -239, -651, -1051, -581, -737, -990, -328,
147 26, -50, -157, -23, -453, -283, -531, -546, 192,
148 -252, -501, -743, -589, -627, -499, -328, -118, -72,
149 -324, -494, -244, -306, -144, -177, -262, -135, -78,
150 -36, -234, -519, -961, -1290, -314, -479, -371, -45,
151 -95, -292, -535, -8, -300, 112, -164, -277, 198,
152 -99, -128, 880, 836, 579, 351, 23, -95, -217,
153 -27, -258, 124, 1011, 597, 425, 144, 7, -73,
154 421, 1293, 1640, 1623, 1742, 1617, 1499, 1284, 1006,
155 -95, 752, 1680, 1569, 1618, 1436, 1200, 980, 712,
156 -69, -300, -683, -435, 1132, 899, 504, 332, 109,
157 -74, -323, -637, 563, 1074, 608, 371, 105, -49,
158 -78, 831, 1194, 1110, 1378, 1481, 1492, 1365, 1217,
159 -259, -121, 1440, 1334, 1628, 1490, 1438, 1223, 933,
160 -82, -306, -613, -222, -378, -675, -545, -671, -845,
161 53, -124, -347, 422, 52, -125, -270, -529, 9,
162 79, -89, -320, -662, -999, -1199, -1243, -676, -297,
163 -68, -273, -611, 137, -146, -397, -627, -845, -220,
164 -112, -346, -797, -826, 234, -132, -188, -278, -522,
165 -159, -405, -734, -419, 293, 74, -167, -167, 184,
166 -153, -437, -833, -1080, -336, -472, -561, -340, -253,
167 -169, -423, -820, -904, -131, -19, -346, -604, 31,
168 33, -31, 312, 62, -148, 49, -59, 564, 486,
169 -306, -333, 194, -44, 67, 72, 147, 205, 243,
170 -207, -49, 1360, 983, 969, 991, 1014, 1110, 973,
171 -211, -172, 883, 627, 711, 674, 705, 798, 746,
172 -88, -325, -763, -974, 687, 908, 514, 382, 172,
173 -292, -612, -805, 63, 131, 270, 259, 352, 348,
174 -235, -84, 955, 818, 1120, 1289, 1559, 1480, 1285,
175 -180, -461, -614, 657, 691, 745, 854, 783, 713,
176 -97, -309, -477, -614, -777, -734, -768, -526, -472,
177 -344, -476, -35, -169, 49, -77, -150, -240, -141,
178 -52, -268, -639, -919, -1278, -1113, -342, -333, -151,
179 -68, -242, -585, -73, -209, -478, -159, -429, 133,
180 -197, -499, -1005, -1268, -272, -224, -105, -67, 17,
181 -363, -618, -414, -116, -62, 20, 10, 116, 108,
182 -195, -475, -906, -1260, -891, -441, -277, -142, -28,
183 -226, -519, -950, -700, -275, -266, -116, -105, 82,
184 404, 511, 520, 327, 17, -194, -333, -536, -586,
185 -114, -130, 276, 237, 204, 342, 135, -16, -111,
186 670, 1208, 1168, 860, 742, 601, 528, 403, 309,
187 397, 621, 966, 752, 579, 398, 400, 329, 252,
188 191, 180, -137, -467, 272, 106, -95, 17, -192,
189 -80, -290, -626, 194, 598, 196, 21, -281, 77,
190 510, 864, 1108, 807, 939, 902, 925, 717, 481,
191 137, 367, 534, 764, 670, 382, 296, 153, 84,
192 303, 497, 144, -85, -125, -539, -482, -464, -764,
193 233, 347, 68, -147, 169, -210, -242, -226, -482,
194 307, 422, 154, -175, -386, -722, -724, -904, -1015,
195 309, 308, 160, -60, -470, -420, -598, -791, -219,
196 68, 121, -137, -560, -146, -446, -515, -494, -729,
197 130, 53, -227, 46, 474, 32, -161, -192, -490,
198 213, 164, -71, -465, -876, -161, -456, -587, -48,
199 218, 117, 39, 177, -194, -88, -226, -418, 50,
200 210, 547, 569, 279, 121, -44, -50, 10, -84,
201 58, 140, 182, -5, 267, 117, 106, 211, 198,
202 539, 835, 913, 719, 617, 544, 591, 565, 642,
203 153, 559, 872, 460, 222, 108, 188, 180, 183,
204 158, 119, 284, -153, -271, 229, 87, 110, -57,
205 -183, 82, 118, 21, 13, 40, 118, 191, 185,
206 162, 889, 654, 108, -34, 244, 488, 561, 532,
207 163, 56, 609, 341, 50, 329, 68, 266, 218,
208 100, 206, 18, -304, -107, -436, -487, -65, -306,
209 -86, 154, 134, -30, -45, -73, -104, -80, -96,
210 245, 330, 10, -440, -849, -1082, 79, 40, -265,
211 196, 372, 272, -181, -493, -389, 275, 80, -59,
212 2, -12, -246, -505, -100, -436, 21, -187, -431,
213 -221, -48, 36, -271, -186, -147, -109, 26, 71,
214 213, 140, 72, -351, -620, -84, -363, 69, 46,
215 91, 167, -3, -95, -99, -105, -48, 114, 147,
216 259, 249, 172, 607, 406, 52, 59, -189, -320,
217 115, -85, -54, 574, 128, 226, -59, -253, 130,
218 -62, 1033, 1308, 1035, 1127, 1098, 1029, 961, 823,
219 39, 364, 757, 940, 728, 660, 659, 583, 770,
220 -115, -338, -760, -471, 394, 37, 441, 178, 6,
221 -57, -305, -525, 796, 453, 188, -4, -114, 248,
222 71, 444, 797, 731, 1096, 1157, 1222, 1029, 811,
223 135, 359, 551, 425, 749, 815, 874, 704, 502,
224 132, 247, 0, -206, -449, -750, -258, -514, -633,
225 248, 249, 91, 121, -195, -499, -90, -282, -435,
226 78, 20, -277, -623, -983, -1224, -415, -458, -639,
227 347, 509, 208, -179, -464, -728, -76, -237, -486,
228 -103, -343, -756, -713, -265, -609, -191, -398, -636,
229 -121, -383, -749, 567, 252, -36, -354, -417, -50,
230 204, 100, -149, -650, -1081, -47, -7, -263, 111,
231 -46, -180, -267, -324, -562, -394, -692, 398, 292,
232 482, 670, 683, 624, 442, 165, 116, 36, -149,
233 108, 247, 291, 247, 355, 122, 109, 224, 296,
234 -14, 945, 990, 801, 755, 815, 847, 913, 892,
235 292, 349, 725, 482, 388, 329, 429, 620, 667,
236 -34, 197, 213, -127, 84, 494, 620, 575, 375,
237 126, 207, 172, 167, 362, 202, 296, 395, 455,
238 -6, 250, 539, 467, 636, 801, 1149, 1287, 1118,
239 27, 240, 369, 280, 440, 411, 634, 892, 953,
240 159, 170, -58, -395, -797, -690, 77, -211, -334,
241 -5, -28, -13, -74, -335, -603, 300, 88, -205,
242 82, -33, -364, -698, -1203, -1153, 110, -146, -289,
243 113, 1, -243, -588, -994, -496, 414, 160, 42,
244 -56, -247, -440, -693, -996, -479, 11, -178, -357,
245 -151, -353, -327, -211, -340, 141, 65, 425, 453,
246 34, -169, -455, -932, -1215, 138, 499, 256, 324,
247 68, 139, -15, -547, -478, 17, 306, 502, 481,
248 -32, -134, 445, 129, -143, -244, -503, -507, -599,
249 61, -140, -345, 496, 458, -2, 20, -227, -514,
250 394, 1765, 1666, 1339, 1117, 806, 642, 479, 380,
251 215, 519, 920, 1053, 1090, 791, 528, 290, 155,
252 -54, -233, -647, -602, 639, 294, -2, -167, -442,
253 -78, -315, -791, -113, 820, 403, 158, -116, -356,
254 529, 1851, 2003, 1228, 622, -41, -416, 344, 819,
255 -105, -379, -236, 1224, 893, 749, 568, 356, 214,
256 -17, -199, -144, 50, -283, -247, -578, -846, -1087,
257 69, -11, -381, -206, 209, -284, -387, -416, -716,
258 39, -5, -145, -374, -682, -909, -1074, -1169, -1066,
259 287, 226, 67, -221, -662, -171, -421, -642, -707,
260 -132, -348, -538, -448, -20, -4, -354, -748, -933,
261 4, -75, -289, -598, 317, 52, -208, -297, -559,
262 -88, -264, -358, -589, -631, -248, -523, -822, -1071,
263 70, -8, 54, -314, -515, 92, -146, -274, -493,
264 199, 62, 391, 158, -141, 71, -219, -203, -207,
265 152, 40, 329, 162, -29, 48, -149, 108, 127,
266 635, 1058, 883, 492, 372, 312, 317, 274, 241,
267 267, 722, 1256, 882, 625, 248, 8, -81, -60,
268 -58, -138, -291, -600, -12, -2, -39, 147, 117,
269 -107, -345, -513, 459, 76, 92, -272, 388, 262,
270 362, 516, 203, -409, -716, -831, -331, 185, 209,
271 -117, -391, -298, 671, 292, 538, 257, 166, -38,
272 -102, -319, -194, -283, -573, -262, -579, -219, -444,
273 -235, 78, 11, -168, -101, -229, -263, -321, -123,
274 70, 50, -170, -599, -996, -588, -263, -516, -455,
275 394, 363, 229, -136, -538, 21, -183, -348, -201,
276 -124, -368, -640, -879, -847, -209, -409, -494, -515,
277 -127, -341, -541, -425, -510, -10, -252, -473, -291,
278 84, -69, -201, -676, -868, 103, -311, -132, -320,
279 5, -173, -188, -297, -628, 197, -57, 7, -11,
280 49, -160, 56, 558, 111, 33, -311, -440, -463,
281 -1, -246, -307, 862, 453, 139, -170, -355, -232,
282 279, 966, 1642, 1478, 1463, 1123, 795, 525, 339,
283 -197, -38, 1702, 1331, 1252, 950, 692, 504, 426,
284 -108, -344, -861, -1172, 444, 354, 88, -46, -220,
285 -53, -321, -494, 1113, 744, 364, 198, -34, -75,
286 457, 955, 1177, 1214, 1427, 1457, 1345, 917, 539,
287 -69, 199, 897, 1140, 1343, 1183, 977, 742, 522,
288 122, 44, -269, 27, -155, -562, -307, -590, -773,
289 154, 42, -160, 252, -129, -305, -471, -733, -371,
290 135, 185, -82, -416, -722, -913, -504, -743, -880,
291 149, 214, -84, -329, -680, -835, -426, -661, -81,
292 -128, -380, -735, -998, -337, 17, -182, -467, -697,
293 -84, -290, -510, -592, 13, 440, 154, -38, -279,
294 70, -61, -246, -727, -1047, -80, -381, -535, -704,
295 178, -2, -146, -670, -938, 482, 138, 63, 65,
296 -11, 15, 772, 443, 142, -20, -209, -126, -161,
297 -32, -249, 95, 552, 124, 30, -343, 82, -86,
298 148, 751, 1515, 1105, 867, 606, 474, 448, 399,
299 -163, -257, 899, 1097, 906, 751, 502, 390, 294,
300 -51, -258, -447, -806, -368, 763, 464, 364, 183,
301 -166, -374, -367, 87, 35, 399, 418, 856, 833,
302 -205, -310, 588, 778, 785, 1065, 1118, 1245, 1157,
303 -173, -312, 107, 345, 400, 790, 870, 1113, 1001,
304 -7, -120, -387, -410, -614, -943, -226, -384, -491,
305 -203, -288, -51, -331, -90, -178, -408, -573, -338,
306 56, -29, -273, -627, -1041, -798, -247, -467, 148,
307 66, -2, -205, -205, -575, -349, -57, -352, -58,
308 -45, -225, -471, -924, -497, 77, -32, 44, -135,
309 -277, -491, -497, -502, -424, -202, -137, 77, 96,
310 26, -179, -469, -1008, -1260, 262, -35, -132, -259,
311 -66, -232, -447, -533, -789, -191, -100, -267, 364
312};
313
314/*
315 * 1st stage codebook; 2nd split: isf9 to isf15
316 */
317
318const Word16 D_ROM_dico2_isf[SIZE_BK2 * 7] = {
319
320 1357, 1313, 1136, 784, 438, 181, 145,
321 636, 648, 667, 568, 442, 217, 362,
322 427, 440, 674, 524, 332, 117, -417,
323 121, 295, 468, 465, 230, 44, -221,
324 -147, -240, 149, 80, 390, 278, 106,
325 -418, -556, 552, 511, 235, 144, -95,
326 43, 193, 274, 150, 67, 34, -273,
327 -43, -126, 171, 416, 282, 63, -354,
328 -372, -86, -344, -108, -94, -182, -89,
329 -600, -840, -200, 465, 258, -11, -253,
330 -48, 329, 97, -290, -543, -795, -354,
331 -570, -117, 187, 10, -133, -416, -76,
332 -618, -129, -247, -371, 45, -76, 277,
333 -1022, -1079, 126, 474, 254, 127, 52,
334 -281, 76, -167, -361, -283, -551, -283,
335 -119, -52, -1, 134, -32, -204, -415,
336 1064, 827, 637, 684, 464, 209, 12,
337 482, 416, 449, 371, 335, 294, 194,
338 719, 576, 365, 135, 113, 91, -199,
339 298, 176, 493, 366, 194, 163, 36,
340 -35, -236, -259, -36, -4, 99, 152,
341 -98, -306, -27, 228, 90, 111, -86,
342 91, 13, -211, -258, -106, 86, -64,
343 73, -35, -57, -31, 162, 35, -192,
344 -109, -335, -629, -66, -61, -128, 322,
345 -495, -669, -728, 193, 31, -220, 122,
346 324, 95, -89, -91, -409, -710, -154,
347 0, -234, 92, 33, -343, -609, -220,
348 -343, -408, -476, -655, -153, 82, 222,
349 -490, -745, -255, 49, -48, 135, -127,
350 119, -67, -328, -390, -272, -545, -56,
351 -57, -130, -10, -7, -164, -47, -22,
352 984, 1064, 961, 568, 210, -27, 16,
353 811, 691, 754, 514, 224, -35, 166,
354 662, 704, 618, 386, 57, -211, -257,
355 510, 359, 418, 393, 91, -144, -18,
356 -193, -31, -27, 223, 89, -143, 24,
357 -112, -98, 471, 319, 185, 3, 175,
358 252, 146, -47, 272, 48, -211, -234,
359 146, 69, 203, 364, 68, -52, 51,
360 -259, -478, -697, -349, -758, -501, 63,
361 -501, -769, -289, 79, -311, -497, -106,
362 251, 53, -235, -469, -895, -884, 145,
363 -416, -551, 140, -133, -523, -775, 44,
364 -326, -423, -713, -497, -86, -431, 99,
365 -757, -772, -160, -76, -46, -32, 379,
366 85, -35, -200, -401, -663, -1040, -247,
367 -180, -330, -92, -376, 27, -183, -110,
368 1279, 1086, 781, 502, 324, 164, 157,
369 682, 466, 449, 277, 146, 28, 409,
370 635, 472, 390, 107, -232, -538, -139,
371 196, 396, 332, 213, 209, -29, -81,
372 150, -95, -312, 76, -77, -320, -50,
373 46, 9, 47, 175, 139, 30, 384,
374 218, 206, -24, -250, -96, -276, -183,
375 26, 119, 38, 14, -4, -133, -52,
376 -477, -614, -987, -715, -631, -813, 200,
377 -744, -1009, -1065, -745, -631, -171, 18,
378 -137, -251, -483, -613, -980, -1203, 12,
379 -605, -767, -562, -686, -1088, -515, 58,
380 -202, -428, -782, -1072, -96, -234, -179,
381 -480, -709, -1070, -897, -131, -92, 321,
382 -145, -193, -512, -729, -572, -765, -210,
383 -331, -585, -525, -631, -281, -208, -303,
384 1165, 1104, 939, 828, 716, 426, 155,
385 6, -109, 820, 778, 415, 113, -27,
386 381, 339, 314, 265, 121, -9, -474,
387 -373, 47, 584, 442, 99, -231, -113,
388 -496, -38, -285, 262, 305, 170, 4,
389 -587, -556, 69, 66, 471, 354, 13,
390 -138, 70, -18, 106, 67, 167, -302,
391 -445, -141, 185, 191, 151, 83, -133,
392 -257, -521, -720, -198, 134, -46, -182,
393 -819, -1168, -777, 512, 359, 95, -113,
394 137, -2, -74, -138, -401, -114, -371,
395 -242, -466, 204, 223, -31, -212, -192,
396 -532, -637, -466, -686, 256, 277, -139,
397 -1141, -1244, -381, -75, -54, 14, 88,
398 -311, 115, -143, -499, -343, 124, -416,
399 -616, -147, -135, 43, -4, 121, -369,
400 835, 783, 641, 390, 355, 350, 64,
401 72, 194, 443, 467, 436, 219, 372,
402 464, 369, 192, 4, -156, -72, -226,
403 57, 206, 303, 205, 188, 101, 265,
404 -40, -205, -488, -184, 276, 64, -26,
405 -217, -433, -297, 137, 328, 308, -289,
406 378, 81, -308, -465, 57, -37, 227,
407 -100, 24, -36, -151, 199, 8, 143,
408 -426, -697, -1059, -133, 388, 161, 321,
409 -644, -1023, -1271, 39, 66, -123, 70,
410 372, 177, -173, -556, -553, -304, -189,
411 -117, -369, -425, -122, -462, -152, -73,
412 -649, -850, -1189, -767, 497, 360, 222,
413 -798, -1139, -1455, -190, 430, 234, 179,
414 42, -94, -405, -692, 38, -202, -246,
415 -169, -366, -290, -88, -64, 32, -292,
416 1010, 923, 938, 710, 465, 230, 342,
417 217, 300, 1054, 675, 68, -458, -179,
418 78, 453, 316, 18, -237, -496, -243,
419 167, 21, 424, 215, -91, -303, -170,
420 -290, -81, -70, -67, 40, 54, -59,
421 -353, -427, -90, 53, 94, 9, 54,
422 -28, 318, 283, 15, -240, -58, 79,
423 -75, -121, 229, 35, 58, 6, -133,
424 -351, -514, -744, -834, -705, -137, 164,
425 -1124, -1388, -1055, -230, -73, 40, 36,
426 -163, -233, -532, -785, -1170, -697, 96,
427 -788, -959, -246, -430, -624, -165, -8,
428 -856, -540, -630, -907, -337, -70, 76,
429 -937, -1042, -659, -733, -208, 199, -26,
430 -523, 78, -98, -501, -869, -890, -81,
431 -624, -703, -45, -348, -25, 87, -186,
432 1005, 823, 546, 249, 90, -22, 207,
433 298, 397, 381, 319, 200, 62, 303,
434 473, 379, 133, -247, -632, -441, 75,
435 284, 208, 391, 115, -25, 44, 95,
436 -72, 79, -95, -63, -129, -293, 203,
437 -164, -349, 115, 122, 69, -1, 378,
438 348, 170, 99, 58, -179, -302, 188,
439 -190, -2, 150, 23, -51, -11, 216,
440 -615, -863, -1090, -1427, -802, -48, -6,
441 -961, -1276, -1548, -727, -58, 56, 223,
442 -124, -255, -561, -988, -1277, -148, -82,
443 -480, -660, -891, -1191, -1339, -325, 20,
444 -621, -917, -1296, -1350, 264, 289, 50,
445 -844, -1022, -1345, -1329, -293, 46, 278,
446 -260, -468, -829, -1176, -533, -560, -78,
447 -215, -484, -822, -1233, -791, 15, -138,
448 1301, 1317, 1262, 1048, 716, 357, -64,
449 578, 824, 925, 802, 630, 362, 102,
450 470, 925, 767, 514, 327, 190, -112,
451 225, 492, 495, 437, 598, 384, -45,
452 43, 82, -42, 175, 519, 342, -64,
453 -304, -154, 159, 576, 403, 221, 327,
454 214, 244, 122, -62, 312, 92, -160,
455 218, 208, 310, 268, 306, 323, -199,
456 -285, -269, -79, -124, -143, -153, 236,
457 -205, -384, -426, 344, 59, -185, -184,
458 -272, 247, 126, -210, -518, -468, 78,
459 -99, -120, 502, 160, -280, -557, 304,
460 -423, -17, -283, -443, 215, 212, -140,
461 -564, -684, -228, 510, 361, 130, 323,
462 -428, 335, 98, -65, 36, -215, -246,
463 -362, 51, 364, -16, -234, 150, -165,
464 914, 883, 751, 653, 676, 464, -153,
465 631, 545, 535, 720, 596, 360, -81,
466 783, 712, 512, 439, 341, 251, -391,
467 497, 417, 249, 372, 295, 173, -193,
468 128, -110, -385, 93, 39, 173, -231,
469 216, -59, -253, 462, 389, 154, 69,
470 455, 270, -4, -337, -49, 233, -322,
471 307, 143, 53, 218, 128, 236, -156,
472 -37, -186, -240, -411, -110, 9, 399,
473 -140, -365, -628, 258, 380, 214, 277,
474 131, 454, 177, -285, -520, 108, -214,
475 77, -141, 201, -123, -490, -131, 60,
476 -14, -194, -521, -741, 273, 362, -33,
477 -362, -566, -287, -228, 161, 237, 317,
478 -269, 195, -75, -375, -204, 11, 77,
479 -128, -264, -156, -223, -475, 265, 27,
480 1238, 1147, 916, 689, 432, 210, -280,
481 800, 664, 879, 726, 411, 160, -164,
482 454, 686, 536, 275, 147, 46, 111,
483 303, 486, 512, 355, 241, 181, -69,
484 79, 92, 29, 147, 233, 52, 17,
485 -171, 289, 131, 439, 271, 3, -10,
486 413, 241, 144, 174, 155, -2, 14,
487 58, 217, 247, 219, 149, 175, -18,
488 228, -8, -240, -206, -513, -191, 202,
489 -96, -272, -454, 33, -300, -575, 46,
490 -10, -108, -246, -347, -770, -535, 9,
491 -326, -430, -61, -321, -704, -299, 201,
492 -1, -280, -603, -419, -185, 18, -36,
493 -516, -522, -379, -291, -181, -97, 27,
494 -159, -313, -525, -224, -510, -831, -197,
495 -292, -459, -59, -310, -562, -143, -351,
496 1066, 912, 631, 389, 207, 86, -224,
497 596, 512, 596, 505, 314, 122, -48,
498 787, 861, 441, -93, -303, 33, -190,
499 257, 469, 337, 51, 15, 298, -93,
500 295, 73, -119, 25, 36, 23, 108,
501 -28, -3, -32, 114, 21, 185, 107,
502 482, 305, 15, -279, -319, 52, 96,
503 226, 46, 115, 72, -136, 133, -125,
504 18, -207, -559, -590, -503, -482, 321,
505 -571, -789, -951, -172, -441, -538, 113,
506 181, 14, -310, -641, -1001, -202, 159,
507 -136, -393, -433, -513, -911, -144, -22,
508 72, -265, -706, -954, -159, 53, 332,
509 -338, -591, -852, -383, -395, 56, 44,
510 43, -158, -464, -897, -631, -157, -294,
511 -161, -128, -328, -573, -483, -125, 11,
512 1017, 906, 1051, 1005, 679, 341, -102,
513 359, 334, 1567, 1314, 723, 105, 10,
514 -65, 726, 529, 301, 220, 43, -273,
515 -510, 436, 719, 566, 358, 179, 114,
516 -560, 298, 133, -120, 342, 225, 14,
517 -899, -101, 217, 617, 400, 146, -58,
518 -41, 352, 82, -196, 39, 121, -167,
519 -212, 59, 447, 284, 423, 250, -169,
520 -371, -484, -596, 30, -41, 249, 22,
521 -372, -650, -794, 477, 445, 216, -79,
522 -352, 275, 17, -443, -929, 92, 19,
523 -699, -696, 431, 264, -49, -310, 182,
524 -978, -217, -430, -400, 101, 261, 72,
525 -929, -889, -357, -13, 463, 378, 236,
526 -826, 56, 30, -299, -360, -128, -51,
527 -878, -299, -111, 75, 65, 36, 3,
528 817, 368, -25, 354, 697, 591, -173,
529 309, 212, 222, 751, 484, 140, -56,
530 593, 379, 70, -8, 258, 180, 110,
531 165, -46, 255, 297, 219, 273, 105,
532 160, -70, -358, -181, 379, 330, 319,
533 -238, -369, -198, 740, 580, 319, -143,
534 201, 109, -202, -456, 328, 276, -141,
535 203, 170, 111, 42, 207, 360, 188,
536 -345, -399, -513, -233, 650, 422, 81,
537 -635, -961, -1220, 463, 539, 204, 209,
538 202, -25, -194, -498, -787, 193, -143,
539 -449, -538, 195, -106, -331, 68, 62,
540 -228, -477, -840, -576, 317, 128, 283,
541 -671, -937, -807, -114, 391, 335, -62,
542 246, 2, -314, -679, -303, 180, -88,
543 -107, -272, 90, -198, -28, 290, -112,
544 885, 1149, 1021, 712, 496, 281, -83,
545 269, 492, 787, 643, 347, 70, 124,
546 336, 636, 499, 92, -229, -179, 191,
547 26, 402, 564, 340, 149, -11, 135,
548 -440, 561, 470, 204, -72, -186, 140,
549 -720, 14, 355, 229, 68, -133, 465,
550 110, 310, 103, 12, 106, 29, 158,
551 -178, 113, 161, 142, 121, 115, 27,
552 -651, -414, -645, -152, -164, -13, -429,
553 -639, -944, -681, -104, -81, 52, -189,
554 -663, -164, -316, -683, -954, -205, -83,
555 -609, -669, -172, -517, -694, 283, -80,
556 -646, -152, -383, -678, -246, -40, -143,
557 -747, -796, -745, -390, -98, 43, 275,
558 -599, -199, -398, -433, -436, -538, 31,
559 -1107, -568, -376, -265, -126, -21, 1,
560 847, 573, 308, 392, 305, 101, 55,
561 273, 293, 201, 267, 346, 201, 123,
562 727, 480, 226, 2, -65, -138, 164,
563 273, 208, 173, 292, 12, 253, 174,
564 340, 207, 180, 88, 116, 46, 475,
565 -460, -166, -30, 13, 110, 173, 396,
566 137, 88, 43, -137, -94, 34, 284,
567 96, -14, 226, 40, 63, 70, 130,
568 -467, -735, -1012, -1174, -307, 305, -67,
569 -612, -920, -1146, -567, -8, 92, -25,
570 -182, -271, -492, -754, -857, 287, -75,
571 -494, -787, -689, -683, -709, 137, -326,
572 -288, -550, -903, -1105, 334, 321, -62,
573 -354, -653, -834, -445, 1, 377, -152,
574 -162, -306, -608, -937, -297, 247, -192,
575 -234, -477, -244, -488, -266, 342, -332
576};
577
578/*
579 * 2nd stage codebook; 1st split: isf2_0 to isf2_2
580 */
581const Word16 D_ROM_dico21_isf[SIZE_BK21 * 3] = {
582
583 329, 409, 249,
584 -33, 505, 160,
585 -29, -14, 582,
586 -262, 127, 354,
587 145, 237, 175,
588 -152, 245, 122,
589 27, 42, 340,
590 -84, -93, 311,
591 285, 222, -156,
592 47, -43, -504,
593 234, 121, 385,
594 104, -317, 45,
595 176, 195, 8,
596 104, -59, -94,
597 177, 53, 192,
598 -34, -127, 152,
599 570, 277, -34,
600 -67, -329, -639,
601 -157, -272, 462,
602 -177, -462, 198,
603 322, 179, 115,
604 -386, 171, 19,
605 19, -12, 195,
606 -120, -252, 201,
607 304, 36, -336,
608 -128, -221, -380,
609 171, -185, 296,
610 -242, -312, 23,
611 198, 39, 16,
612 -3, -177, -111,
613 111, -93, 76,
614 -92, -223, 4,
615 177, 406, -44,
616 -168, 380, -149,
617 -4, 273, 331,
618 -420, 513, 277,
619 21, 247, 47,
620 -58, 131, -2,
621 -3, 134, 180,
622 -145, 40, 175,
623 189, 74, -145,
624 -27, -45, -325,
625 370, -114, -21,
626 -83, -415, -173,
627 77, 95, -51,
628 -40, -30, -67,
629 71, 88, 86,
630 -35, -98, 14,
631 69, 197, -334,
632 -196, 79, -231,
633 -348, -137, 218,
634 -352, -89, -85,
635 47, 201, -130,
636 -165, 37, -15,
637 -43, 3, 86,
638 -161, -108, 79,
639 83, 21, -237,
640 -81, -149, -238,
641 150, -186, -251,
642 -186, -249, -162,
643 -19, 66, -139,
644 -26, -50, -181,
645 24, 11, 0,
646 -130, -105, -98
647};
648
649
650
651/*
652 * 2nd stage codebook; 2nd split: isf2_3 to isf2_5
653 */
654const Word16 D_ROM_dico22_isf[SIZE_BK22 * 3] = {
655
656 -127, 310, 42,
657 -242, 197, 5,
658 -151, 84, -17,
659 -214, 127, -149,
660 -247, -131, 159,
661 -268, -267, -95,
662 -217, 1, -79,
663 -271, -80, -185,
664 -45, 436, 159,
665 165, 199, 391,
666 -33, 81, 187,
667 -66, -42, 355,
668 -298, -57, 343,
669 -108, -537, 226,
670 -144, -23, 193,
671 176, -402, 87,
672 53, 296, 25,
673 -84, 253, -104,
674 -58, 105, -126,
675 -169, 174, -314,
676 -48, 44, -294,
677 -164, -417, -242,
678 -139, 3, -194,
679 -155, -207, -211,
680 119, 322, 213,
681 333, 50, 380,
682 237, 247, -2,
683 466, -16, 201,
684 238, -255, -107,
685 67, -440, -149,
686 122, -88, -139,
687 88, -247, -73,
688 -41, 231, 167,
689 -62, 155, 16,
690 -65, 16, 77,
691 -68, -2, -63,
692 -151, -300, 160,
693 -18, -333, 54,
694 -56, -94, 5,
695 2, -190, 14,
696 92, 148, 209,
697 108, 9, 272,
698 108, 35, 110,
699 142, -85, 145,
700 47, -157, 279,
701 3, -320, 246,
702 43, -72, 68,
703 86, -217, 135,
704 36, 140, 79,
705 56, 175, -49,
706 26, 45, 3,
707 73, 55, -101,
708 109, -183, -242,
709 -4, -283, -242,
710 48, -68, -48,
711 -6, -153, -122,
712 161, 196, 96,
713 232, 80, 190,
714 165, 97, 11,
715 258, -31, 71,
716 267, -77, -91,
717 311, -209, 87,
718 152, -14, -22,
719 150, -149, 9,
720 -324, 557, 187,
721 -384, 307, 46,
722 -251, 27, 77,
723 -365, 77, -52,
724 -482, -84, 160,
725 -424, -515, -64,
726 -294, -120, -4,
727 -476, -116, -109,
728 -97, 318, 365,
729 106, 627, 445,
730 -190, 120, 287,
731 -146, 65, 619,
732 -427, 242, 363,
733 -361, -371, 432,
734 -347, 102, 168,
735 -629, 195, -14,
736 -65, 476, -47,
737 -297, 320, -168,
738 -55, 356, -264,
739 -391, 82, -286,
740 -51, -31, -556,
741 -178, -399, -586,
742 -205, -49, -360,
743 -343, -238, -337,
744 220, 457, 58,
745 561, 467, 259,
746 340, 270, -168,
747 450, 77, -280,
748 60, 167, -413,
749 133, -252, -492,
750 216, 157, -290,
751 282, 0, -495,
752 -226, 293, 183,
753 -157, 135, 122,
754 -158, -59, 39,
755 -133, -118, -97,
756 -332, -309, 113,
757 -160, -425, -6,
758 -149, -211, 24,
759 -80, -277, -90,
760 -11, 125, 338,
761 130, -71, 465,
762 5, -45, 184,
763 237, -95, 253,
764 -139, -197, 297,
765 -19, -300, 511,
766 -63, -152, 139,
767 250, -289, 336,
768 124, 339, -150,
769 34, 176, -208,
770 171, 166, -116,
771 94, 38, -229,
772 75, -65, -339,
773 -78, -205, -385,
774 0, -30, -163,
775 -56, -110, -242,
776 321, 244, 194,
777 505, 238, -1,
778 317, 116, 65,
779 309, 88, -74,
780 452, -51, -50,
781 334, -217, -290,
782 211, 41, -152,
783 238, -55, -260
784};
785
786
787/*
788 * 2nd stage codebook; 3rd split: isf2_6 to isf2_8
789 */
790const Word16 D_ROM_dico23_isf[SIZE_BK23 * 3] = {
791
792 -10, 151, 359,
793 136, 298, 223,
794 255, -104, 290,
795 423, 6, 183,
796 -270, -269, -98,
797 -52, -82, 13,
798 -82, -274, -97,
799 90, -246, -72,
800 -299, -70, 421,
801 -88, 365, 430,
802 187, -318, 381,
803 380, 37, 488,
804 -373, -316, 79,
805 -308, -101, 5,
806 -135, -451, 8,
807 72, -421, -154,
808 180, 170, -121,
809 62, 177, -40,
810 326, 80, -105,
811 248, 263, -5,
812 -168, -181, -221,
813 -2, -23, -158,
814 -14, -149, -121,
815 119, -91, -147,
816 119, 332, -153,
817 49, 303, 34,
818 442, -55, -69,
819 217, 454, 58,
820 -359, -187, -375,
821 -42, 50, -274,
822 -8, -267, -249,
823 85, -86, -346,
824 -77, -40, 345,
825 89, 134, 219,
826 156, -80, 160,
827 108, 40, 116,
828 -158, -206, 29,
829 5, -32, 175,
830 -65, -158, 146,
831 55, -78, 73,
832 -114, -222, 353,
833 -47, 81, 211,
834 49, -151, 268,
835 105, 4, 302,
836 -263, -132, 183,
837 -151, -28, 201,
838 -177, -307, 166,
839 101, -221, 130,
840 74, 58, -98,
841 32, 44, 13,
842 194, 30, -142,
843 170, 96, 8,
844 -136, -119, -91,
845 -65, 8, -55,
846 3, -188, 12,
847 45, -63, -49,
848 149, -21, -19,
849 24, 144, 95,
850 254, -22, 60,
851 161, 196, 96,
852 -158, -61, 48,
853 -70, 33, 82,
854 -23, -321, 58,
855 155, -147, 5,
856 -364, 328, 77,
857 -21, 453, 173,
858 -108, 82, 630,
859 367, 263, 208,
860 -300, -62, -176,
861 -205, 143, -158,
862 -169, -410, -264,
863 257, -269, -100,
864 -636, 289, -2,
865 -292, 627, 173,
866 -382, -363, 387,
867 248, 524, 447,
868 -521, -111, -107,
869 -395, 118, -274,
870 -343, -680, -125,
871 -172, -447, -663,
872 75, 148, -367,
873 -79, 263, -94,
874 249, 148, -286,
875 380, 271, -162,
876 -142, -4, -186,
877 -57, 111, -125,
878 -35, -108, -254,
879 100, 29, -242,
880 -80, 303, -264,
881 -78, 464, -57,
882 248, -22, -494,
883 661, 662, 44,
884 -193, -40, -330,
885 -178, 145, -337,
886 -90, -199, -400,
887 -40, -23, -498,
888 -192, 114, 315,
889 -41, 244, 190,
890 88, -97, 485,
891 241, 80, 212,
892 -246, 40, 87,
893 -156, 147, 134,
894 -2, -334, 239,
895 308, -203, 110,
896 -459, 251, 422,
897 -218, 310, 228,
898 -86, -346, 654,
899 184, 175, 425,
900 -481, -63, 169,
901 -349, 117, 188,
902 -125, -560, 310,
903 158, -416, 94,
904 46, 171, -192,
905 -63, 157, 14,
906 256, -35, -271,
907 322, 123, 53,
908 -214, 4, -76,
909 -156, 86, -18,
910 128, -197, -232,
911 265, -90, -98,
912 -308, 332, -145,
913 -131, 308, 58,
914 509, 59, -339,
915 562, 196, -14,
916 -378, 100, -47,
917 -234, 202, 1,
918 104, -270, -493,
919 319, -210, -325
920};
921
922
923/*
924 * 2nd stage codebook; 4th split: isf2_9 to isf2_11
925 */
926const Word16 D_ROM_dico24_isf[SIZE_BK24 * 3] = {
927
928 -79, -89, -4,
929 -171, 77, -211,
930 160, -193, 98,
931 120, -103, 323,
932 32, -22, -129,
933 72, 78, -268,
934 182, -76, -66,
935 309, 99, -145,
936 -229, -157, -84,
937 -383, 98, -71,
938 -90, -352, 12,
939 -284, -178, 178,
940 -65, -125, -166,
941 -87, -175, -351,
942 42, -198, -48,
943 154, -140, -243,
944 -77, 18, 108,
945 -39, 355, 91,
946 87, 8, 155,
947 -4, 158, 239,
948 128, 95, -54,
949 7, 246, -124,
950 258, 15, 89,
951 206, 216, 98,
952 -201, 9, 18,
953 -312, 233, 204,
954 -39, -174, 155,
955 -144, -9, 284,
956 -57, 70, -69,
957 -157, 187, 18,
958 54, -30, 23,
959 24, 135, 55
960};
961
962
963/*
964 * 2nd stage codebook; 5th split: isf2_12 to isf2_15
965 */
966const Word16 D_ROM_dico25_isf[SIZE_BK25 * 4] = {
967
968 169, 142, -119, 115,
969 206, -20, 94, 226,
970 -106, 313, -21, 16,
971 -62, 161, 71, 255,
972 -89, 101, -185, 125,
973 72, -30, -201, 344,
974 -258, 33, -8, 81,
975 -104, -154, 72, 296,
976 144, -68, -268, -25,
977 81, -78, -87, 106,
978 22, 155, -186, -119,
979 -46, -28, 27, 91,
980 -114, -37, -175, -33,
981 -94, -222, -189, 122,
982 -132, -119, -191, -270,
983 -172, -173, 18, -43,
984 279, 135, -42, -128,
985 187, -86, 229, -138,
986 159, 240, 140, 46,
987 69, 25, 227, 77,
988 21, 115, 13, 8,
989 68, -248, 126, 81,
990 -150, 137, 207, -9,
991 -154, -133, 289, 67,
992 143, -37, -86, -326,
993 180, -32, 19, -23,
994 26, 168, 116, -233,
995 -32, -26, 118, -78,
996 3, -8, -45, -115,
997 57, -215, -54, -83,
998 -209, 112, -22, -167,
999 -91, -151, 168, -262
1000};
1001
1002/*
1003 * isf codebooks: two-stage VQ with split-by-3 in 2nd stage
1004 * 1st stage is kept the same as the 46 bit quantizer
1005 *
1006 * codebook vector dimension number of vectors
1007 * ~~~~~~~~ ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
1008 * 1_1 9 256
1009 * 1_2 7 256
1010 * 2_1 5 128
1011 * 2_2 4 128
1012 * 2_3 7 64
1013 */
1014
1015const Word16 D_ROM_dico21_isf_36b[SIZE_BK21_36b * 5] = {
1016
1017 -52, -96, 212, 315, -73,
1018 82, -204, 363, 136, -197,
1019 -126, -331, 183, 218, 143,
1020 -49, -41, 557, 230, 72,
1021 2, -73, 163, 377, 221,
1022 133, 111, 278, 215, -110,
1023 -102, -20, 284, 113, 273,
1024 84, 319, 290, 18, 85,
1025 -25, -5, 125, 132, -204,
1026 -38, -5, 286, -9, -356,
1027 -140, -256, 92, 117, -189,
1028 -144, 191, 313, 51, -98,
1029 167, -10, 44, 247, 36,
1030 381, 197, 238, 74, 6,
1031 38, -408, 29, -3, -85,
1032 92, 266, 157, -25, -200,
1033 161, -121, 70, 84, -140,
1034 -16, -86, 112, -94, -189,
1035 -269, -270, 351, 107, -24,
1036 -68, -67, 492, -103, -155,
1037 -53, -131, 62, 122, 10,
1038 135, 84, 283, -55, -120,
1039 -12, -219, 331, -81, 167,
1040 220, -136, 147, -172, -42,
1041 140, -95, -109, -88, -194,
1042 0, -2, -4, -33, -381,
1043 -66, -217, 152, -186, -402,
1044 244, 108, 156, -140, -395,
1045 113, -136, -196, 110, -24,
1046 214, 118, 11, -64, -131,
1047 -110, -286, -6, -332, 16,
1048 94, 97, 79, -291, -205,
1049 -5, -39, -20, 252, -96,
1050 76, 174, 101, 163, 61,
1051 -69, -239, -55, 399, 6,
1052 -115, 319, 164, 275, 196,
1053 -15, 36, -47, 331, 121,
1054 226, 209, 271, 325, 184,
1055 13, -80, -218, 471, 353,
1056 288, 378, 16, -51, 251,
1057 174, 116, 52, 149, -279,
1058 235, 276, 39, 120, -48,
1059 0, -108, -108, 241, -339,
1060 -93, 534, 45, 33, -87,
1061 194, 149, -71, 405, -44,
1062 409, 370, 81, -186, -154,
1063 25, -102, -448, 124, -173,
1064 22, 408, -110, -310, -214,
1065 -26, 23, -83, 114, 14,
1066 -110, 164, 52, 223, -82,
1067 37, -25, -263, 306, -15,
1068 -466, 415, 292, 165, -18,
1069 29, -19, -171, 155, 182,
1070 179, 144, -27, 231, 258,
1071 -103, -247, -396, 238, 113,
1072 375, -154, -109, -4, 156,
1073 98, 85, -292, -5, -124,
1074 116, 139, -116, -98, -294,
1075 -14, -83, -278, -117, -378,
1076 106, 33, -106, -344, -484,
1077 119, 17, -412, 138, 166,
1078 384, 101, -204, 88, -156,
1079 -121, -284, -300, -1, -166,
1080 280, 33, -152, -313, -81,
1081 -37, 22, 229, 153, 37,
1082 -60, -83, 236, -8, -41,
1083 -169, -228, 126, -20, 363,
1084 -235, 17, 364, -156, 156,
1085 -25, -30, 72, 144, 156,
1086 153, -26, 256, 97, 144,
1087 -21, -37, 48, -65, 250,
1088 63, 77, 273, -128, 124,
1089 -129, -26, 40, 9, -115,
1090 -6, 82, 38, -90, -182,
1091 -336, -13, 28, 158, 91,
1092 -30, 241, 137, -170, -17,
1093 146, 14, -11, 33, 61,
1094 192, 197, 54, -84, 85,
1095 23, -200, -78, -29, 140,
1096 122, 237, 106, -341, 136,
1097 -57, -142, -85, -16, -74,
1098 -59, -90, -8, -187, -20,
1099 -211, -267, 216, -179, -110,
1100 -50, -7, 220, -267, -70,
1101 -57, -42, -17, -15, 71,
1102 32, 21, 63, -137, 33,
1103 -137, -175, 104, -68, 97,
1104 -67, -43, 133, -301, 221,
1105 -116, -200, -81, -92, -272,
1106 -64, -41, -54, -244, -220,
1107 -287, -242, -50, -87, -89,
1108 -245, 236, 102, -166, -295,
1109 66, 24, -162, -71, 95,
1110 66, 136, -90, -220, -36,
1111 -98, -161, -222, -188, 29,
1112 -18, 18, -19, -415, 9,
1113 49, 61, 100, 39, -56,
1114 -111, 82, 135, -31, 52,
1115 -90, -153, -93, 189, 182,
1116 -214, 295, 119, -74, 284,
1117 2, 137, 37, 47, 182,
1118 92, 117, 184, -53, 373,
1119 -21, -14, -35, 136, 391,
1120 146, 129, -164, -28, 333,
1121 92, 80, -84, 100, -134,
1122 -8, 217, -32, 3, -47,
1123 -151, 251, -215, 142, 92,
1124 -224, 310, -172, -275, 98,
1125 159, 155, -177, 112, 53,
1126 205, 27, 8, -240, 192,
1127 169, 120, -319, -201, 106,
1128 11, 36, -86, -237, 455,
1129 -109, -154, -163, 174, -55,
1130 -38, 32, -101, -78, -59,
1131 -205, -321, -97, 69, 79,
1132 -310, 44, 18, -185, 34,
1133 -115, -20, -148, -39, 203,
1134 -29, 154, -30, -158, 166,
1135 -45, -131, -317, -24, 363,
1136 -165, -205, -112, -222, 265,
1137 -32, -44, -150, 54, -193,
1138 -6, -38, -255, -169, -115,
1139 -266, 87, -189, -36, -169,
1140 -60, -87, -266, -436, -170,
1141 -68, -81, -278, 24, 38,
1142 -23, -19, -155, -256, 141,
1143 -61, -226, -565, -175, 71,
1144 9, -29, -237, -515, 263
1145};
1146
1147const Word16 D_ROM_dico22_isf_36b[SIZE_BK22_36b * 4] = {
1148
1149 -298, -6, 95, 31,
1150 -213, -87, -122, 261,
1151 4, -49, 208, 14,
1152 -129, -110, 30, 118,
1153 -214, 258, 110, -235,
1154 -41, -18, -126, 120,
1155 103, 65, 127, -37,
1156 126, -36, -24, 25,
1157 -138, -67, -278, -186,
1158 -164, -194, -201, 78,
1159 -211, -87, -51, -221,
1160 -174, -79, -94, -39,
1161 23, -6, -157, -240,
1162 22, -110, -153, -68,
1163 148, -5, -2, -149,
1164 -1, -135, -39, -179,
1165 68, 360, -117, -15,
1166 137, 47, -278, 146,
1167 136, 260, 135, 65,
1168 61, 116, -45, 97,
1169 231, 379, 87, -120,
1170 338, 177, -272, 3,
1171 266, 156, 28, -69,
1172 260, 84, -85, 86,
1173 -266, 154, -256, -182,
1174 -17, -65, -304, -6,
1175 -40, 175, -151, -180,
1176 -27, 27, -87, -63,
1177 121, 114, -166, -469,
1178 159, -66, -323, -231,
1179 214, 152, -141, -212,
1180 137, 36, -184, -51,
1181 -282, -237, 40, 10,
1182 -48, -235, -37, 251,
1183 -54, -323, 136, 29,
1184 -88, -174, 213, 198,
1185 -390, 99, -63, -375,
1186 107, -169, -164, 424,
1187 69, -111, 141, -167,
1188 74, -129, 65, 144,
1189 -353, -207, -205, -109,
1190 -160, -386, -355, 98,
1191 -176, -493, -20, -143,
1192 -252, -432, -2, 216,
1193 -90, -174, -168, -411,
1194 13, -284, -229, -160,
1195 -87, -279, 34, -251,
1196 -75, -263, -58, -42,
1197 420, 53, -211, -358,
1198 384, -35, -374, 396,
1199 68, -228, 323, -2,
1200 167, -307, 192, 194,
1201 459, 329, -5, -332,
1202 375, 79, -7, 313,
1203 282, -124, 200, -92,
1204 271, -162, -70, 180,
1205 -157, -298, -514, -309,
1206 58, -163, -546, 18,
1207 124, -364, 167, -238,
1208 83, -411, -117, 96,
1209 140, -112, -388, -624,
1210 259, -133, -317, 41,
1211 163, -130, -64, -334,
1212 226, -165, -124, -110,
1213 -466, -61, 6, 229,
1214 -153, 205, -145, 242,
1215 -159, 48, 195, 148,
1216 -58, 28, 31, 279,
1217 -303, 185, 279, -4,
1218 -61, 197, 59, 86,
1219 -114, 123, 168, -52,
1220 35, 36, 100, 126,
1221 -407, 102, -77, -40,
1222 -338, -1, -342, 156,
1223 -179, 105, -34, -97,
1224 -185, 84, -35, 108,
1225 -133, 107, -91, -357,
1226 -180, 54, -229, 24,
1227 -44, 47, 47, -182,
1228 -66, 13, 45, 4,
1229 -339, 251, 64, 226,
1230 -42, 101, -350, 275,
1231 -99, 398, 142, 121,
1232 111, 12, -102, 260,
1233 0, 505, 260, -94,
1234 161, 285, -96, 224,
1235 -4, 206, 314, 33,
1236 167, 139, 88, 204,
1237 -235, 316, -60, -25,
1238 -8, -150, -312, 201,
1239 -36, 292, 61, -104,
1240 -40, 174, -162, 42,
1241 -21, 402, -29, -351,
1242 21, 152, -360, -93,
1243 57, 191, 212, -196,
1244 76, 158, -21, -69,
1245 -328, -185, 331, 119,
1246 -53, 285, 56, 337,
1247 -107, -24, 405, 29,
1248 -18, 137, 272, 277,
1249 -255, 22, 173, -191,
1250 295, 322, 325, 302,
1251 21, -27, 332, -178,
1252 119, 13, 271, 129,
1253 -455, -180, 116, -191,
1254 -227, 62, -148, 524,
1255 -176, -287, 282, -157,
1256 -243, 13, 199, 430,
1257 -59, -49, 115, -365,
1258 72, -172, -137, 93,
1259 -138, -126, 141, -84,
1260 5, -124, 38, -20,
1261 -258, 311, 601, 213,
1262 94, 130, -61, 502,
1263 -1, -157, 485, 313,
1264 146, -74, 158, 345,
1265 276, 135, 280, -57,
1266 490, 252, 99, 43,
1267 267, -74, 429, 105,
1268 278, -23, 119, 94,
1269 -542, 488, 257, -115,
1270 -84, -244, -438, 478,
1271 -113, -545, 387, 101,
1272 -95, -306, 111, 498,
1273 95, 166, 22, -301,
1274 420, -15, -58, -78,
1275 270, 29, 122, -282,
1276 160, -240, 50, -38
1277};
1278
1279const Word16 D_ROM_dico23_isf_36b[SIZE_BK23_36b * 7] = {
1280
1281 81, -18, 68, -27, -122, -280, -4,
1282 45, -177, 209, -30, -136, -74, 131,
1283 -44, 101, -75, -88, -48, -137, -54,
1284 -245, -28, 63, -18, -112, -103, 58,
1285 -79, -6, 220, -65, 114, -35, -50,
1286 109, -65, 143, -114, 129, 76, 125,
1287 166, 90, -61, -242, 186, -74, -43,
1288 -46, -92, 49, -227, 24, -155, 39,
1289 67, 85, 99, -42, 53, -184, -281,
1290 142, -122, 0, 21, -142, -15, -17,
1291 223, 92, -21, -48, -82, -14, -167,
1292 51, -37, -243, -30, -90, 18, -56,
1293 54, 105, 74, 86, 69, 13, -101,
1294 196, 72, -89, 43, 65, 19, 39,
1295 121, 34, 131, -82, 25, 213, -156,
1296 101, -102, -136, -21, 57, 214, 22,
1297 36, -124, 205, 204, 58, -156, -83,
1298 83, -117, 137, 137, 85, 116, 44,
1299 -92, -148, -68, 11, -102, -197, -220,
1300 -76, -185, -58, 132, -26, -183, 85,
1301 -7, -31, -2, 23, 205, -151, 10,
1302 -27, -37, -5, -18, 292, 131, 1,
1303 117, -168, 9, -93, 80, -59, -125,
1304 -182, -244, 98, -24, 135, -22, 94,
1305 221, 97, 106, 42, 43, -160, 83,
1306 25, -64, -21, 6, 14, -15, 154,
1307 126, 15, -140, 150, -10, -207, -114,
1308 79, -63, -211, -70, -28, -217, 165,
1309 46, 38, -22, 281, 132, -62, 109,
1310 112, 54, -112, -93, 208, 27, 296,
1311 115, 10, -147, 41, 216, 42, -276,
1312 50, -115, -254, 167, 117, -2, 61,
1313 17, 144, 34, -72, -186, -150, 272,
1314 -29, -66, -89, -95, -149, 129, 251,
1315 122, 0, -50, -234, -91, 36, 26,
1316 -105, -102, -88, -121, -236, -7, -11,
1317 -204, 109, 5, -191, 105, -15, 163,
1318 -80, 32, -24, -209, 41, 294, 70,
1319 -106, -94, -204, -118, 120, -50, -37,
1320 -82, -241, 46, -131, -29, 150, -55,
1321 33, 155, 120, -89, -8, 7, 62,
1322 213, 82, 61, 18, -161, 144, 152,
1323 30, 131, 65, -87, -255, -17, -107,
1324 -8, 85, -64, 51, -162, 223, -53,
1325 -134, 261, 69, -56, 218, 72, -111,
1326 2, 155, -113, -87, 49, 85, -28,
1327 -163, 42, -1, -196, 7, 39, -245,
1328 14, -137, -79, 11, -160, 202, -293,
1329 -94, 33, 208, 100, 56, -44, 326,
1330 -78, -41, 232, 13, -142, 227, 80,
1331 -16, -87, 201, 33, -133, 15, -183,
1332 -58, -192, -47, 184, -128, 133, 99,
1333 -205, 11, -155, 78, 52, 72, 141,
1334 -246, 26, 99, 151, 59, 115, -64,
1335 -79, -47, -16, -14, 6, 47, -43,
1336 -72, -178, -27, 162, 112, 43, -174,
1337 -175, 238, 186, 71, -54, -188, -76,
1338 -225, 233, 39, -39, -158, 122, 44,
1339 -26, 43, 84, 130, -93, -51, 22,
1340 3, 92, -150, 136, -182, -57, 97,
1341 -131, 179, -78, 80, 91, -165, 90,
1342 -2, 148, 15, 130, 65, 175, 117,
1343 -138, 114, -137, 132, 3, -10, -186,
1344 140, -4, -37, 254, -62, 92, -109
1345};
1346
1347/*
1348 * isf codebooks: split-by-5 VQ
1349 *
1350 * codebook vector dimension number of vectors
1351 * ~~~~~~~~ ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
1352 * 1 2 64
1353 * 2 3 64
1354 * 3 3 64
1355 * 4 4 32
1356 * 5 4 32
1357 */
1358
1359/*
1360 * 1st split: isf0 to isf1
1361 */
1362const Word16 D_ROM_dico1_isf_noise[SIZE_BK_NOISE1 * 2] = {
1363 -269, -673,
1364 -222, -537,
1365 -233, -430,
1366 -138, -451,
1367 -212, -331,
1368 -192, -241,
1369 -87, -231,
1370 -191, -128,
1371 -70, -106,
1372 -164, -6,
1373 74, -179,
1374 27, -33,
1375 -102, 74,
1376 -162, 115,
1377 -94, 172,
1378 -6, 130,
1379 -143, 234,
1380 14, 218,
1381 -65, 270,
1382 88, 182,
1383 -124, 341,
1384 -44, 381,
1385 38, 335,
1386 117, 274,
1387 -112, 454,
1388 74, 431,
1389 -5, 488,
1390 175, 384,
1391 -83, 561,
1392 122, 529,
1393 21, 601,
1394 229, 481,
1395 231, 303,
1396 226, 608,
1397 300, 372,
1398 210, 187,
1399 306, 265,
1400 328, 473,
1401 382, 331,
1402 371, 132,
1403 139, 58,
1404 365, 21,
1405 250, -82,
1406 443, 218,
1407 483, 110,
1408 426, 415,
1409 579, 222,
1410 518, 333,
1411 573, 448,
1412 455, 529,
1413 685, 329,
1414 332, 580,
1415 595, 593,
1416 468, 645,
1417 762, 517,
1418 326, 709,
1419 485, 793,
1420 130, 684,
1421 671, 737,
1422 354, 876,
1423 88, 806,
1424 -65, 706,
1425 -35, 1016,
1426 266, 1123
1427};
1428
1429
1430/*
1431 * 2nd split: isf2 to isf4
1432 */
1433const Word16 D_ROM_dico2_isf_noise[SIZE_BK_NOISE2 * 3] = {
1434 -824, -884, -949,
1435 -805, -456, -418,
1436 -442, -438, -541,
1437 -217, -578, -793,
1438 -168, -444, -582,
1439 -287, -492, -274,
1440 -552, -297, -300,
1441 -163, -333, -358,
1442 -370, -232, -232,
1443 -175, -358, -159,
1444 -381, -21, -357,
1445 -184, -159, -162,
1446 -53, -191, -280,
1447 18, -267, -215,
1448 -138, 61, -283,
1449 71, -95, -294,
1450 13, -156, -546,
1451 0, -83, -79,
1452 44, 97, -316,
1453 178, -52, -213,
1454 222, -261, -422,
1455 237, -118, -44,
1456 141, 145, -132,
1457 363, 81, -287,
1458 213, 65, 34,
1459 -107, 94, -5,
1460 91, -29, 126,
1461 -355, 51, -41,
1462 -219, -76, 145,
1463 -63, 100, 244,
1464 -719, 44, 27,
1465 -572, -124, 155,
1466 -423, 133, 315,
1467 -917, 71, 224,
1468 -268, 318, 131,
1469 -93, -190, 420,
1470 -97, 122, 491,
1471 -79, 317, 355,
1472 130, 100, 325,
1473 86, -293, 210,
1474 133, 258, 161,
1475 176, -73, 465,
1476 195, 300, 384,
1477 348, 22, 221,
1478 376, 183, 409,
1479 377, 286, 202,
1480 242, 213, 659,
1481 257, 565, 248,
1482 344, 408, -76,
1483 405, 440, 509,
1484 612, 385, 379,
1485 536, 607, 216,
1486 -56, 582, 192,
1487 100, 517, 567,
1488 -365, 448, 445,
1489 728, 347, 10,
1490 505, 357, 759,
1491 636, 582, 658,
1492 335, 517, 852,
1493 378, 809, 572,
1494 -195, 878, 829,
1495 529, 707, 987,
1496 918, 726, 392,
1497 1250, 997, 1063
1498};
1499
1500/*
1501 * 3rd split: isf5 to isf7
1502 */
1503const Word16 D_ROM_dico3_isf_noise[SIZE_BK_NOISE3 * 3] = {
1504 -805, -838, -774,
1505 -522, -627, -828,
1506 -477, -486, -603,
1507 -295, -481, -634,
1508 -366, -384, -393,
1509 -186, -414, -396,
1510 -237, -394, -106,
1511 -252, -202, -275,
1512 -61, -177, -442,
1513 -84, -198, -199,
1514 -179, -125, -31,
1515 -72, -47, -163,
1516 -298, -220, 215,
1517 -64, -168, 251,
1518 -133, 156, -59,
1519 -30, -2, 127,
1520 54, 66, -61,
1521 -233, 21, 251,
1522 209, -50, 32,
1523 33, 194, 136,
1524 -117, -18, 475,
1525 202, 46, 309,
1526 256, 185, 53,
1527 35, 200, 390,
1528 200, 263, 242,
1529 -216, 302, 294,
1530 128, 358, 0,
1531 19, 431, 287,
1532 224, 447, 280,
1533 367, 165, 213,
1534 397, 314, 319,
1535 383, 379, 75,
1536 277, 325, 462,
1537 394, 505, 334,
1538 251, 98, -213,
1539 450, 153, 448,
1540 565, 226, 76,
1541 470, 383, 502,
1542 635, 390, 278,
1543 237, 135, 620,
1544 342, 401, 649,
1545 331, 551, 518,
1546 130, 418, 592,
1547 531, 306, 737,
1548 729, 389, 580,
1549 497, 557, 699,
1550 296, 383, 874,
1551 283, 624, 759,
1552 126, 622, 476,
1553 559, 595, 472,
1554 382, 770, 616,
1555 719, 613, 745,
1556 540, 639, 928,
1557 517, 826, 801,
1558 684, 811, 604,
1559 752, 786, 857,
1560 933, 661, 350,
1561 694, 450, 1061,
1562 562, 911, 1051,
1563 824, 813, 1104,
1564 758, 1047, 882,
1565 1140, 917, 889,
1566 1039, 1246, 1426,
1567 1483, 1666, 1876
1568};
1569
1570/*
1571 * 4th split: isf8 to isf11
1572 */
1573const Word16 D_ROM_dico4_isf_noise[SIZE_BK_NOISE4 * 4] = {
1574 -776, -854, -891, -920,
1575 -552, -610, -663, -741,
1576 -321, -370, -476, -565,
1577 274, -160, -456, 201,
1578 265, 67, -160, -306,
1579 -8, -210, 79, 272,
1580 163, 236, 307, 308,
1581 578, 317, 64, 298,
1582 -9, 197, 342, 620,
1583 343, 232, 314, 622,
1584 173, 149, 548, 527,
1585 356, 370, 481, 376,
1586 135, 444, 488, 556,
1587 391, 471, 487, 653,
1588 228, 424, 576, 835,
1589 422, 372, 722, 682,
1590 295, 673, 693, 635,
1591 539, 596, 590, 449,
1592 475, 618, 659, 818,
1593 735, 517, 491, 673,
1594 602, 346, 257, 877,
1595 625, 635, 849, 720,
1596 727, 818, 698, 595,
1597 653, 481, 690, 1139,
1598 814, 762, 704, 908,
1599 507, 747, 898, 936,
1600 848, 855, 924, 785,
1601 646, 1037, 882, 795,
1602 772, 845, 1024, 1151,
1603 1133, 983, 818, 921,
1604 940, 1068, 1252, 1302,
1605 1588, 1767, 1718, 1513
1606};
1607
1608/*
1609 * 5th split: isf12 to isf15
1610 */
1611const Word16 D_ROM_dico5_isf_noise[SIZE_BK_NOISE5 * 4] = {
1612 -810, -879, -945, -254,
1613 248, 184, 671, 128,
1614 288, 703, 918, 99,
1615 658, 558, 662, 219,
1616 552, 585, 910, 208,
1617 559, 804, 759, 119,
1618 606, 774, 921, -139,
1619 782, 761, 748, 208,
1620 756, 708, 983, 56,
1621 544, 864, 1010, 152,
1622 737, 698, 987, 299,
1623 771, 924, 879, 103,
1624 536, 785, 961, 405,
1625 667, 916, 801, 328,
1626 738, 705, 773, 439,
1627 823, 871, 992, 355,
1628 640, 1004, 1052, 369,
1629 724, 822, 949, 597,
1630 415, 655, 729, 482,
1631 1009, 896, 793, 363,
1632 908, 803, 687, -25,
1633 1016, 838, 1011, 189,
1634 947, 1112, 942, 222,
1635 914, 1049, 981, 527,
1636 956, 987, 1011, -120,
1637 781, 1049, 1121, 92,
1638 1178, 1053, 884, 47,
1639 1123, 1059, 1182, 118,
1640 933, 972, 1277, 357,
1641 1109, 918, 1101, 503,
1642 1039, 1286, 1220, 317,
1643 1351, 1207, 1010, 326
1644};
1645
1646/*
1647 * Table of pitch and codebook gains
1648 *
1649 * g_pitch(Q14), g_code(Q11)
1650 *
1651 * pitch gain are ordered in table to reduce complexity
1652 * during quantization of gains.
1653 */
1654
1655/* Number of quantization level is 64 */
1656const Word16 D_ROM_qua_gain6b[64 * 2] = {
1657 1566, 1332,
1658 1577, 3557,
1659 3071, 6490,
1660 4193, 10163,
1661 4496, 2534,
1662 5019, 4488,
1663 5586, 15614,
1664 5725, 1422,
1665 6453, 580,
1666 6724, 6831,
1667 7657, 3527,
1668 8072, 2099,
1669 8232, 5319,
1670 8827, 8775,
1671 9740, 2868,
1672 9856, 1465,
1673 10087, 12488,
1674 10241, 4453,
1675 10859, 6618,
1676 11321, 3587,
1677 11417, 1800,
1678 11643, 2428,
1679 11718, 988,
1680 12312, 5093,
1681 12523, 8413,
1682 12574, 26214,
1683 12601, 3396,
1684 13172, 1623,
1685 13285, 2423,
1686 13418, 6087,
1687 13459, 12810,
1688 13656, 3607,
1689 14111, 4521,
1690 14144, 1229,
1691 14425, 1871,
1692 14431, 7234,
1693 14445, 2834,
1694 14628, 10036,
1695 14860, 17496,
1696 15161, 3629,
1697 15209, 5819,
1698 15299, 2256,
1699 15518, 4722,
1700 15663, 1060,
1701 15759, 7972,
1702 15939, 11964,
1703 16020, 2996,
1704 16086, 1707,
1705 16521, 4254,
1706 16576, 6224,
1707 16894, 2380,
1708 16906, 681,
1709 17213, 8406,
1710 17610, 3418,
1711 17895, 5269,
1712 18168, 11748,
1713 18230, 1575,
1714 18607, 32767,
1715 18728, 21684,
1716 19137, 2543,
1717 19422, 6577,
1718 19446, 4097,
1719 19450, 9056,
1720 20371, 14885
1721};
1722
1723/* Number of quantization level is 128 */
1724const Word16 D_ROM_qua_gain7b[128 * 2] = {
1725 204, 441,
1726 464, 1977,
1727 869, 1077,
1728 1072, 3062,
1729 1281, 4759,
1730 1647, 1539,
1731 1845, 7020,
1732 1853, 634,
1733 1995, 2336,
1734 2351, 15400,
1735 2661, 1165,
1736 2702, 3900,
1737 2710, 10133,
1738 3195, 1752,
1739 3498, 2624,
1740 3663, 849,
1741 3984, 5697,
1742 4214, 3399,
1743 4415, 1304,
1744 4695, 2056,
1745 5376, 4558,
1746 5386, 676,
1747 5518, 23554,
1748 5567, 7794,
1749 5644, 3061,
1750 5672, 1513,
1751 5957, 2338,
1752 6533, 1060,
1753 6804, 5998,
1754 6820, 1767,
1755 6937, 3837,
1756 7277, 414,
1757 7305, 2665,
1758 7466, 11304,
1759 7942, 794,
1760 8007, 1982,
1761 8007, 1366,
1762 8326, 3105,
1763 8336, 4810,
1764 8708, 7954,
1765 8989, 2279,
1766 9031, 1055,
1767 9247, 3568,
1768 9283, 1631,
1769 9654, 6311,
1770 9811, 2605,
1771 10120, 683,
1772 10143, 4179,
1773 10245, 1946,
1774 10335, 1218,
1775 10468, 9960,
1776 10651, 3000,
1777 10951, 1530,
1778 10969, 5290,
1779 11203, 2305,
1780 11325, 3562,
1781 11771, 6754,
1782 11839, 1849,
1783 11941, 4495,
1784 11954, 1298,
1785 11975, 15223,
1786 11977, 883,
1787 11986, 2842,
1788 12438, 2141,
1789 12593, 3665,
1790 12636, 8367,
1791 12658, 1594,
1792 12886, 2628,
1793 12984, 4942,
1794 13146, 1115,
1795 13224, 524,
1796 13341, 3163,
1797 13399, 1923,
1798 13549, 5961,
1799 13606, 1401,
1800 13655, 2399,
1801 13782, 3909,
1802 13868, 10923,
1803 14226, 1723,
1804 14232, 2939,
1805 14278, 7528,
1806 14439, 4598,
1807 14451, 984,
1808 14458, 2265,
1809 14792, 1403,
1810 14818, 3445,
1811 14899, 5709,
1812 15017, 15362,
1813 15048, 1946,
1814 15069, 2655,
1815 15405, 9591,
1816 15405, 4079,
1817 15570, 7183,
1818 15687, 2286,
1819 15691, 1624,
1820 15699, 3068,
1821 15772, 5149,
1822 15868, 1205,
1823 15970, 696,
1824 16249, 3584,
1825 16338, 1917,
1826 16424, 2560,
1827 16483, 4438,
1828 16529, 6410,
1829 16620, 11966,
1830 16839, 8780,
1831 17030, 3050,
1832 17033, 18325,
1833 17092, 1568,
1834 17123, 5197,
1835 17351, 2113,
1836 17374, 980,
1837 17566, 26214,
1838 17609, 3912,
1839 17639, 32767,
1840 18151, 7871,
1841 18197, 2516,
1842 18202, 5649,
1843 18679, 3283,
1844 18930, 1370,
1845 19271, 13757,
1846 19317, 4120,
1847 19460, 1973,
1848 19654, 10018,
1849 19764, 6792,
1850 19912, 5135,
1851 20040, 2841,
1852 21234, 19833
1853};
1854
1855/*
1856 * 1/4 resolution interpolation filter (-3 dB at 0.856*fs/2) in Q14
1857 */
1858const Word16 D_ROM_inter4_2[UP_SAMP * 2 * L_INTERPOL2] = {
1859 0, 1, 2, 1,
1860 -2, -7, -10, -7,
1861 4, 19, 28, 22,
1862 -2, -33, -55, -49,
1863 -10, 47, 91, 92,
1864 38, -52, -133, -153,
1865 -88, 43, 175, 231,
1866 165, -9, -209, -325,
1867 -275, -60, 226, 431,
1868 424, 175, -213, -544,
1869 -619, -355, 153, 656,
1870 871, 626, -16, -762,
1871 -1207, -1044, -249, 853,
1872 1699, 1749, 780, -923,
1873 -2598, -3267, -2147, 968,
1874 5531, 10359, 14031, 15401,
1875 14031, 10359, 5531, 968,
1876 -2147, -3267, -2598, -923,
1877 780, 1749, 1699, 853,
1878 -249, -1044, -1207, -762,
1879 -16, 626, 871, 656,
1880 153, -355, -619, -544,
1881 -213, 175, 424, 431,
1882 226, -60, -275, -325,
1883 -209, -9, 165, 231,
1884 175, 43, -88, -153,
1885 -133, -52, 38, 92,
1886 91, 47, -10, -49,
1887 -55, -33, -2, 22,
1888 28, 19, 4, -7,
1889 -10, -7, -2, 1,
1890 2, 1, 0, 0
1891};
1892
1893/*
1894 * 1/5 resolution interpolation filter (in Q14)
1895 * -1.5dB @ 6kHz, -6dB @ 6.4kHz, -10dB @ 6.6kHz, -20dB @ 6.9kHz, -25dB @ 7kHz, -55dB @ 8kHz
1896 */
1897const Word16 D_ROM_fir_up[120] = {
1898 -1, -4, -7, -6, 0,
1899 12, 24, 30, 23, 0,
1900 -33, -62, -73, -52, 0,
1901 68, 124, 139, 96, 0,
1902 -119, -213, -235, -160, 0,
1903 191, 338, 368, 247, 0,
1904 -291, -510, -552, -369, 0,
1905 430, 752, 812, 542, 0,
1906 -634, -1111, -1204, -809, 0,
1907 963, 1708, 1881, 1288, 0,
1908 -1616, -2974, -3432, -2496, 0,
1909 3792, 8219, 12368, 15317, 16384,
1910 15317, 12368, 8219, 3792, 0,
1911 -2496, -3432, -2974, -1616, 0,
1912 1288, 1881, 1708, 963, 0,
1913 -809, -1204, -1111, -634, 0,
1914 542, 812, 752, 430, 0,
1915 -369, -552, -510, -291, 0,
1916 247, 368, 338, 191, 0,
1917 -160, -235, -213, -119, 0,
1918 96, 139, 124, 68, 0,
1919 -52, -73, -62, -33, 0,
1920 23, 30, 24, 12, 0,
1921 -6, -7, -4, -1, 0
1922};
1923
1924/* table x4/5 */
1925const Word16 D_ROM_fir_down[120] = {
1926 -1, -3, -6, -5,
1927 0, 9, 19, 24,
1928 18, 0, -26, -50,
1929 -58, -41, 0, 54,
1930 99, 111, 77, 0,
1931 -95, -170, -188, -128,
1932 0, 153, 270, 294,
1933 198, 0, -233, -408,
1934 -441, -295, 0, 344,
1935 601, 649, 434, 0,
1936 -507, -888, -964, -647,
1937 0, 770, 1366, 1505,
1938 1030, 0, -1293, -2379,
1939 -2746, -1997, 0, 3034,
1940 6575, 9894, 12254, 13107,
1941 12254, 9894, 6575, 3034,
1942 0, -1997, -2746, -2379,
1943 -1293, 0, 1030, 1505,
1944 1366, 770, 0, -647,
1945 -964, -888, -507, 0,
1946 434, 649, 601, 344,
1947 0, -295, -441, -408,
1948 -233, 0, 198, 294,
1949 270, 153, 0, -128,
1950 -188, -170, -95, 0,
1951 77, 111, 99, 54,
1952 0, -41, -58, -50,
1953 -26, 0, 18, 24,
1954 19, 9, 0, -5,
1955 -6, -3, -1, 0
1956};
1957
1958/*
1959 * Impulse response with phase dispersion
1960 */
1961
1962/* 2.0 - 6.4 kHz phase dispersion */
1963const Word16 D_ROM_ph_imp_low[L_SUBFR] = {
1964 20182, 9693, 3270, -3437, 2864, -5240, 1589, -1357,
1965 600, 3893, -1497, -698, 1203, -5249, 1199, 5371,
1966 -1488, -705, -2887, 1976, 898, 721, -3876, 4227,
1967 -5112, 6400, -1032, -4725, 4093, -4352, 3205, 2130,
1968 -1996, -1835, 2648, -1786, -406, 573, 2484, -3608,
1969 3139, -1363, -2566, 3808, -639, -2051, -541, 2376,
1970 3932, -6262, 1432, -3601, 4889, 370, 567, -1163,
1971 -2854, 1914, 39, -2418, 3454, 2975, -4021, 3431
1972};
1973
1974/* 3.2 - 6.4 kHz phase dispersion */
1975const Word16 D_ROM_ph_imp_mid[L_SUBFR] = {
1976 24098, 10460, -5263, -763, 2048, -927, 1753, -3323,
1977 2212, 652, -2146, 2487, -3539, 4109, -2107, -374,
1978 -626, 4270, -5485, 2235, 1858, -2769, 744, 1140,
1979 -763, -1615, 4060, -4574, 2982, -1163, 731, -1098,
1980 803, 167, -714, 606, -560, 639, 43, -1766,
1981 3228, -2782, 665, 763, 233, -2002, 1291, 1871,
1982 -3470, 1032, 2710, -4040, 3624, -4214, 5292, -4270,
1983 1563, 108, -580, 1642, -2458, 957, 544, 2540
1984};
1985
1986/*
1987 * Table for synthesis of signal at 16kHz with HF extension.
1988 */
1989const Word16 D_ROM_hp_gain[16] = {
1990 3624, 4673, 5597, 6479, 7425, 8378, 9324, 10264,
1991 11210, 12206, 13391, 14844, 16770, 19655, 24289, 32728
1992};
1993
1994/*
1995 * isp and isf tables for initialization
1996 */
1997const Word16 D_ROM_isp[M] = {
1998 32138, 30274, 27246, 23170, 18205, 12540, 6393, 0,
1999 -6393, -12540, -18205, -23170, -27246, -30274, -32138, 1475
2000};
2001
2002const Word16 D_ROM_isf[M] = {
2003 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192,
2004 9216, 10240, 11264, 12288, 13312, 14336, 15360, 3840
2005};
2006
2007/*
2008 * means of ISFs
2009 */
2010const Word16 D_ROM_mean_isf[ORDER] = {
2011 738, 1326, 2336, 3578, 4596, 5662, 6711, 7730,
2012 8750, 9753, 10705, 11728, 12833, 13971, 15043, 4037
2013};
2014
2015const Word16 D_ROM_mean_isf_noise[ORDER] = {
2016 478, 1100, 2213, 3267, 4219, 5222, 6198, 7240,
2017 8229, 9153, 10098, 11108, 12144, 13184, 14165, 3803
2018};
2019
2020/* 16-byte align end */
2021
2022/*
2023 * LTP gain & fixed codebook gain consealement
2024 */
2025
2026/* pitch gain weight */
2027const Word16 D_ROM_pdown_unusable[7] = {32767, 31130, 29491, 24576, 7537, 1638, 328};
2028const Word16 D_ROM_cdown_unusable[7] = {32767, 16384, 8192, 8192, 8192, 4915, 3277};
2029
2030/* codebook gain weight */
2031const Word16 D_ROM_pdown_usable[7] = {32767, 32113, 31457, 24576, 7537, 1638, 328};
2032const Word16 D_ROM_cdown_usable[7] = {32767, 32113, 32113, 32113, 32113, 32113, 22938};
2033
2034
2035/*
2036 * filter coefficients (gain=4.0)
2037 */
2038const Word16 D_ROM_fir_6k_7k[L_FIR] = {
2039 -32, 47, 32, -27, -369,
2040 1122, -1421, 0, 3798, -8880,
2041 12349, -10984, 3548, 7766, -18001,
2042 22118, -18001, 7766, 3548, -10984,
2043 12349, -8880, 3798, 0, -1421,
2044 1122, -369, -27, 32, 47,
2045 -32
2046};
2047
2048const Word16 D_ROM_fir_7k[L_FIR] = {
2049 -21, 47, -89, 146, -203,
2050 229, -177, 0, 335, -839,
2051 1485, -2211, 2931, -3542, 3953,
2052 28682, 3953, -3542, 2931, -2211,
2053 1485, -839, 335, 0, -177,
2054 229, -203, 146, -89, 47,
2055 -21
2056};
2057
2058/*
2059 * LPC interpolation coef {0.45, 0.8, 0.96, 1.0}; in Q15
2060 */
2061const Word16 D_ROM_interpol_frac[NB_SUBFR] = {14746, 26214, 31457, 32767};
2062
2063/*
2064 * Math tables
2065 */
2066const Word16 D_ROM_pow2[33] = {
2067 16384, 16743, 17109, 17484, 17867, 18258, 18658, 19066, 19484, 19911,
2068 20347, 20792, 21247, 21713, 22188, 22674, 23170, 23678, 24196, 24726,
2069 25268, 25821, 26386, 26964, 27554, 28158, 28774, 29405, 30048, 30706,
2070 31379, 32066, 32767
2071};
2072
2073const Word16 D_ROM_isqrt[49] = {
2074 32767, 31790, 30894, 30070, 29309, 28602, 27945, 27330, 26755, 26214,
2075 25705, 25225, 24770, 24339, 23930, 23541, 23170, 22817, 22479, 22155,
2076 21845, 21548, 21263, 20988, 20724, 20470, 20225, 19988, 19760, 19539,
2077 19326, 19119, 18919, 18725, 18536, 18354, 18176, 18004, 17837, 17674,
2078 17515, 17361, 17211, 17064, 16921, 16782, 16646, 16514, 16384
2079};
2080
2081const Word16 D_ROM_log2[33] = {
2082 0, 1455, 2866, 4236, 5568, 6863, 8124, 9352, 10549, 11716,
2083 12855, 13967, 15054, 16117, 17156, 18172, 19167, 20142, 21097, 22033,
2084 22951, 23852, 24735, 25603, 26455, 27291, 28113, 28922, 29716, 30497,
2085 31266, 32023, 32767
2086};
2087
2088/* table of cos(x) in Q15 */
2089const Word16 D_ROM_cos[129] = {
2090 32767,
2091 32758, 32729, 32679, 32610, 32522, 32413, 32286, 32138,
2092 31972, 31786, 31581, 31357, 31114, 30853, 30572, 30274,
2093 29957, 29622, 29269, 28899, 28511, 28106, 27684, 27246,
2094 26791, 26320, 25833, 25330, 24812, 24279, 23732, 23170,
2095 22595, 22006, 21403, 20788, 20160, 19520, 18868, 18205,
2096 17531, 16846, 16151, 15447, 14733, 14010, 13279, 12540,
2097 11793, 11039, 10279, 9512, 8740, 7962, 7180, 6393,
2098 5602, 4808, 4011, 3212, 2411, 1608, 804, 0,
2099 -804, -1608, -2411, -3212, -4011, -4808, -5602, -6393,
2100 -7180, -7962, -8740, -9512, -10279, -11039, -11793, -12540,
2101 -13279, -14010, -14733, -15447, -16151, -16846, -17531, -18205,
2102 -18868, -19520, -20160, -20788, -21403, -22006, -22595, -23170,
2103 -23732, -24279, -24812, -25330, -25833, -26320, -26791, -27246,
2104 -27684, -28106, -28511, -28899, -29269, -29622, -29957, -30274,
2105 -30572, -30853, -31114, -31357, -31581, -31786, -31972, -32138,
2106 -32286, -32413, -32522, -32610, -32679, -32729, -32758, -32768
2107};
2108
2109#ifdef ENABLE_CPU2_DECODER
2110CPU2_DATA_END
2111#endif
2112
2113
2114
2115