1 /* ------------------------------------------------------------------
2 * Copyright (C) 1998-2009 PacketVideo
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
14 * See the License for the specific language governing permissions
15 * and limitations under the License.
16 * -------------------------------------------------------------------
18 /****************************************************************************************
19 Portions of this file are derived from the following 3GPP standard:
22 ANSI-C code for the Adaptive Multi-Rate (AMR) speech codec
23 Available from http://www.3gpp.org
25 (C) 2004, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC)
26 Permission to distribute, modify and use this file under the standard license
27 terms listed above has been obtained from the copyright holder.
28 ****************************************************************************************/
31 Filename: q_plsf_3_tbl.cpp
33 ------------------------------------------------------------------------------
36 ------------------------------------------------------------------------------
39 /*----------------------------------------------------------------------------
41 ----------------------------------------------------------------------------*/
42 #include "q_plsf_3_tbl.h"
44 /*--------------------------------------------------------------------------*/
46 /*----------------------------------------------------------------------------
48 ; [Define module specific macros here]
49 ----------------------------------------------------------------------------*/
51 /*----------------------------------------------------------------------------
53 ; [Include all pre-processor statements here. Include conditional
54 ; compile variables also.]
55 ----------------------------------------------------------------------------*/
57 /*----------------------------------------------------------------------------
58 ; LOCAL FUNCTION DEFINITIONS
59 ; [List function prototypes here]
60 ----------------------------------------------------------------------------*/
62 /*----------------------------------------------------------------------------
63 ; LOCAL VARIABLE DEFINITIONS
64 ; [Variable declaration - defined here and used outside this module]
65 ----------------------------------------------------------------------------*/
67 ********************************************************************************
69 * GSM AMR-NB speech codec R98 Version 7.5.0 March 2, 2001
73 ********************************************************************************
76 * Purpose : Table for routine LSF VQ.
79 ********************************************************************************
83 /* initalization table for MA predictor in dtx mode */
84 const Word16 past_rq_init[80] =
86 -258, -318, -439, -634, -656, -773, -711, -502, -268, -193,
87 -2, 125, 122, -39, -9, 105, 129, 283, 372, 575,
88 -277, -324, -197, -487, -445, -362, -292, -27, 177, 543,
89 342, 517, 516, 130, 27, -104, -120, -140, -74, -56,
90 -564, -943, -1520, -965, -814, -526, -322, -2, 159, 657,
91 -312, -284, -386, -597, -493, -526, -418, -229, 105, 449,
92 -557, -870, -1075, -919, -950, -752, -709, -316, 62, 486,
93 -314, -191, -203, -330, -160, -103, -51, 131, 338, 515
97 const Word16 mean_lsf_3[10] =
112 const Word16 pred_fac_3[10] =
128 /* first codebook from IS641 */
130 const Word16 dico1_lsf_3[DICO1_SIZE*3] =
391 /* second codebook from IS641 */
393 const Word16 dico2_lsf_3[DICO2_SIZE*3] =
910 /* third codebook from IS641 */
912 const Word16 dico3_lsf_3[DICO3_SIZE*4] =
915 -1690, -581, -104, -272,
916 -1076, -1186, -1845, -376,
917 -1140, -926, -420, -58,
918 -259, -656, -1134, -553,
919 1788, 1227, 455, 129,
920 462, 441, -240, -528,
928 -171, -123, 220, -65,
932 320, 268, -336, -200,
942 1132, 1258, 918, 639,
946 -198, 129, 194, -185,
947 -863, -1321, -302, 30,
948 -597, -629, -19, 114,
949 -900, -1081, 466, 353,
950 -1483, -1573, 15, -143,
951 -1708, -2059, -751, 196,
952 -1876, -2067, -642, -258,
953 -2335, -1470, -450, -564,
954 -584, -186, -872, -414,
955 -1805, -988, -1125, -1310,
956 -726, -1129, 28, 169,
957 -1039, -864, -718, -246,
962 -975, -777, 129, 287,
963 -938, -227, 955, 595,
964 -1617, -289, 836, 649,
965 -1847, -215, 1106, 718,
966 -2034, -1085, 650, 440,
967 -2101, -529, 907, 575,
968 -2011, -336, 670, 204,
969 -2389, -692, 360, 137,
970 -2156, -2204, -9, 280,
973 -975, -858, -781, -1095,
974 -619, -413, -451, -842,
975 -1216, -1321, -813, -883,
976 -1376, -1615, -394, -428,
977 -737, -1113, -549, -790,
978 -880, -975, -967, -642,
979 -985, -886, -1273, -1361,
980 -473, -804, -1401, -1407,
981 160, -265, -919, -275,
982 -248, -250, -718, -380,
983 97, -103, -375, -229,
984 -415, -193, -135, -555,
987 634, 522, -154, -148,
990 -1503, -1000, -30, -369,
992 -1520, -291, 621, 307,
993 -1531, 156, 762, 404,
994 -2029, 141, 734, 499,
995 -1849, -650, 306, 512,
996 -187, -104, -59, 438,
997 134, -230, 156, -186,
999 -569, -3, -421, -297,
1000 -1725, -521, -346, 178,
1001 -1362, -59, -44, 157,
1002 -2146, -461, -470, -349,
1003 -2170, -1, -369, -121,
1004 -1579, -373, -900, -1015,
1005 -1117, -591, -613, -784,
1006 -561, 122, -75, -449,
1007 -4, -171, -123, -372,
1008 192, 168, -76, -132,
1009 252, -107, 340, 210,
1011 -109, 145, 218, 119,
1012 -416, -263, 485, 265,
1013 -181, -8, -286, 226,
1014 -244, -218, 69, -290,
1016 -592, -90, 213, -96,
1018 -369, -18, -33, -80,
1019 -42, 415, 140, -222,
1020 1143, 651, 649, 329,
1024 -470, -170, 99, 237,
1025 -569, -800, 352, 565,
1027 -199, -690, -1284, -917,
1028 -193, -426, -800, -1122,
1029 -26, -371, -490, -193,
1032 477, 87, -103, -376,
1033 -666, -347, -277, -291,
1034 -510, -481, 169, 297,
1035 -829, -738, -205, -171,
1036 -320, -540, 328, 283,
1037 -859, -958, 442, -2,
1039 1383, 1012, 755, 427,
1041 -339, -796, 134, 277,
1042 -633, -1085, -2, -246,
1043 -880, -1035, -1607, -1064,
1044 -994, -474, -1138, -488,
1045 -414, -795, 73, -206,
1047 -176, -578, 23, 131,
1048 -269, -757, -191, 245,
1049 -109, -338, 112, 316,
1050 120, -406, -118, 611,
1051 -180, -186, -645, 115,
1052 -173, 34, -518, -489,
1053 -151, 61, -583, -844,
1054 220, -138, -681, -1020,
1055 391, -17, -598, -321,
1056 157, -295, 129, 155,
1057 -926, -875, -987, 285,
1058 241, -83, -125, -125,
1061 -393, -739, -413, -748,
1063 -1084, 130, -337, -694,
1064 -1565, 297, 318, -19,
1065 -1873, 36, 51, -317,
1066 -2323, -246, 231, -84,
1067 -2306, -783, 40, -179,
1068 -2233, -930, -474, -462,
1069 -754, -86, -288, -626,
1070 -2411, -455, -63, 171,
1071 -1099, -1094, -26, -143,
1072 -1193, -455, -406, -381,
1073 -605, -210, -96, -51,
1074 -580, -476, -276, -15,
1075 -1195, -634, -1203, -881,
1076 -378, -221, -669, -952,
1077 594, 178, -403, -676,
1081 -228, -296, -259, -29,
1083 -353, 373, -12, -216,
1085 -1526, -616, -954, -499,
1086 -497, -152, -333, 125,
1088 -331, -224, 765, 697,
1091 -514, 240, 251, -109,
1092 256, 417, -34, -413,
1098 1300, 824, 187, 509,
1099 1062, 653, 379, 466,
1100 1462, 937, 401, 274,
1104 241, -267, -147, 225,
1105 -178, -534, 347, 502,
1106 -643, -381, 397, 30,
1107 -651, -733, -435, 398,
1108 -407, -726, -484, -248,
1109 -789, -914, -438, -476,
1110 -498, -390, 75, -295,
1111 -964, -590, -606, 150,
1112 -121, -49, -155, -78,
1114 -321, 127, 424, 315,
1115 -285, -113, 283, 259,
1119 239, -83, -578, -19,
1120 -339, -731, 349, 13,
1121 -934, -1399, -114, -360,
1123 -1243, -1538, -1551, -725,
1124 -568, -903, -1363, -525,
1125 -517, -853, -861, -1004,
1126 -168, -690, -835, 63,
1127 -137, -556, -547, 144,
1128 -286, -817, 485, 319,
1129 -147, -408, 526, 246,
1130 -347, -434, 297, -28,
1131 -290, -471, -1110, -1285,
1132 -460, -359, -988, -794,
1133 1347, 1299, 690, 523,
1134 1216, 1068, 1094, 757,
1135 825, 1140, 752, 494,
1136 1252, 1365, 1195, 898,
1137 521, 1053, 532, 432,
1138 -334, -216, -313, -263,
1139 -160, 52, -472, -155,
1141 851, 410, -162, -489,
1142 123, -255, -796, -667,
1143 1090, 917, 789, 493,
1144 1397, 1197, 558, 202,
1145 -51, -118, -342, -701,
1150 697, 155, -164, 307,
1151 638, 274, -489, -50,
1152 754, 240, -166, -124,
1153 -116, -579, -1212, -63,
1154 190, -295, -1040, -1296,
1155 147, -376, -177, -113,
1156 841, 1241, 1051, 668,
1158 -1096, -953, -248, 376,
1159 -750, -965, 87, 516,
1160 -275, -516, 689, 391,
1161 -379, -643, 876, 594,
1162 -390, -1013, -645, 573,
1163 -107, -568, -689, -826,
1164 -1025, -27, -328, -203,
1166 -1660, -1043, 451, 108,
1167 -660, -620, 430, 236,
1168 21, -396, -1158, -631,
1169 1372, 1298, 967, 577,
1170 1125, 1125, 589, 454,
1171 -323, -865, -467, 153,
1172 -468, -699, -804, -509,
1173 -392, -718, -204, -35,
1174 -603, -1093, -567, -162,
1175 -505, -1004, -102, 350,
1178 -746, -96, 373, 172,
1181 157, 153, -499, -356,
1182 1547, 1073, 576, 494,
1183 -292, -339, -504, -592,
1184 -903, -72, -619, -481,
1185 -1594, -1117, -567, -254,
1186 -793, -507, -564, -291,
1187 -492, -532, 502, 560,
1188 -382, 427, 600, 230,
1191 -1310, -1333, 186, 377,
1192 -587, -917, 643, 381,
1193 -1186, -553, 411, 82,
1194 -1127, -820, -174, -540,
1195 -604, 119, 543, 205,
1196 -380, 657, 909, 567,
1197 112, -298, -374, 114,
1198 -857, -251, 56, 159,
1199 401, 345, -34, -140,
1200 -111, -607, 41, 614,
1201 355, -114, -77, 474,
1203 1098, 1420, 741, 400,
1205 -121, 327, 831, 472,
1206 -1138, -608, 856, 552,
1207 -1241, -1072, 638, 600,
1208 -358, 254, -333, -303,
1210 1226, 1671, 1221, 849,
1211 2241, 1624, 983, 636,
1212 1841, 1477, 749, 384,
1214 -1902, -941, -144, -64,
1215 -1734, -255, 288, -31,
1216 -2644, -1238, 366, 235,
1217 -1643, -1092, -1344, -304,
1218 -541, -1075, -1116, 123,
1219 -1178, -252, -816, -180,
1220 -1016, 533, 565, 233,
1221 -487, -430, -188, 334,
1222 867, 1236, 534, 171,
1223 -1590, -1607, 635, 630,
1224 -2196, 310, 924, 412,
1225 -2358, -328, 956, 529,
1226 -2639, -377, 630, 278,
1227 -2602, 317, 799, 299,
1228 -2406, 133, 340, 31,
1229 -2156, -1468, 131, 125,
1230 -1184, -490, -139, 46,
1231 -744, 447, 891, 564,
1233 -553, -429, -876, 396,
1234 162, -66, 1305, 915,
1235 479, 579, 1088, 794,
1237 -1057, -154, 148, -177,
1238 -2545, 168, 1070, 592,
1239 -2351, -42, 819, 345,
1240 -2344, -707, 721, 250,
1241 -2175, -1497, -309, 122,
1243 -4, 262, -263, -261,
1244 -431, -64, -405, -732,
1245 -2609, 116, -83, -193,
1246 -1525, -944, -477, -725,
1247 -508, 307, 170, 172,
1249 -225, 177, 894, 818,
1250 -482, -389, 1279, 1039,
1251 -383, 201, -350, 40,
1255 1482, 1471, 1085, 731,
1256 1561, 1072, 909, 693,
1257 1419, 1282, 889, 879,
1258 1153, 728, 1186, 840,
1259 -226, 1130, 949, 689,
1260 -494, -986, -1556, -128,
1261 -568, -721, -713, -26,
1263 -405, -865, -1766, -652,
1264 -174, -801, 885, 773,
1265 -153, -91, 1099, 751,
1266 -506, -1149, 853, 646,
1268 1853, 1700, 1101, 684,
1269 -1249, -1486, -464, 188,
1270 -893, -1409, -1312, -341,
1271 -135, 438, -175, 18,
1272 1111, 976, 319, 208,
1273 -1430, -1768, 83, 458,
1274 -530, -1000, 307, 129,
1275 -840, -15, -29, -356,
1276 -911, -924, -1147, -242,
1277 -119, -528, 127, -133,
1278 -761, -765, 190, -83,
1279 -315, 895, 522, 231,
1280 -222, 102, -63, -428,
1285 425, -60, -427, 257,
1286 139, -103, -630, 446,
1288 -172, -690, -283, 557,
1289 187, -286, 158, 483,
1290 140, 270, -344, -631,
1291 924, 579, -116, 132,
1293 230, -145, -302, -542,
1294 -803, -912, 1018, 737,
1295 -773, 1015, 630, 297,
1296 -2596, 95, 445, 336,
1297 -2122, 491, 510, 191,
1298 -1253, 161, -2, -324,
1299 -1450, -633, -712, -105,
1300 -842, -254, -411, 100,
1301 -640, -290, 1010, 763,
1302 -650, 313, 1169, 730,
1303 140, 505, 1030, 766,
1304 772, 287, 1067, 823,
1307 -342, -874, 69, 597,
1309 -138, -444, -265, 218,
1311 -222, -803, 541, 604,
1312 -921, -1376, 244, 116,
1313 -841, -723, 630, 588,
1315 935, 1046, 881, 759,
1316 1746, 1464, 916, 628,
1321 936, 957, 1108, 703,
1328 -105, -632, -303, -117,
1329 -429, 130, 789, 442,
1330 -522, -188, 704, 373,
1332 -531, -1137, 373, 578,
1333 -682, -1203, -455, 285,
1334 -1163, -1577, -1098, 44,
1337 1604, 1622, 1277, 891,
1338 1409, 859, 924, 892,
1339 774, 1041, 947, 1142,
1341 -616, -106, -697, -26,
1342 -169, -160, -891, -739,
1343 -279, -384, -1029, -350,
1344 1781, 1308, 1046, 816,
1345 1580, 1533, 1472, 1178,
1346 1505, 1076, 1216, 899,
1348 920, 692, 1021, 856,
1349 -493, 132, 177, 505,
1353 1395, 949, 234, -95,
1354 -805, -472, 38, -163,
1356 1025, 1178, 1212, 906,
1357 319, 1314, 814, 461,
1358 -123, -543, -804, 447,
1359 -748, -324, -897, -1127,
1360 -737, -501, -789, -713,
1361 715, 777, 1239, 922,
1362 1949, 1939, 1368, 865,
1364 -871, 454, 17, -251,
1365 -381, -810, -1583, 239,
1366 -521, -966, -792, 259,
1367 -890, -1358, -770, -73,
1368 166, 349, -212, 323,
1369 -840, -301, 473, 435,
1370 -679, -464, 728, 351,
1371 -156, -199, 667, 432,
1373 -731, -379, 145, 559,
1374 -528, -631, -1158, -159,
1376 373, -126, 800, 568,
1378 -830, -536, -185, 222,
1380 -897, -1355, -67, 442,
1381 -792, -1406, 566, 602,
1382 167, -326, 509, 330,
1383 -95, -626, -730, -344,
1384 1668, 1217, 779, 455,
1385 1316, 828, 584, 719,
1386 404, -31, 1013, 789,
1388 871, 1581, 917, 671,
1389 866, 1479, 1289, 854,
1390 391, 1068, 1122, 812,
1392 429, -103, 417, 787,
1393 -122, -437, 411, 788,
1394 -913, -417, 602, 754,
1395 -226, -16, 151, 760,
1396 -700, 118, -104, -14,
1397 -1128, 48, 284, 393,
1398 -390, -419, -639, -116,
1399 -910, 306, 316, -13,
1400 1207, 984, 821, 669,
1401 -1195, -693, 140, -213,
1402 -884, -416, -199, -558,
1403 -616, 245, -404, -664,
1404 262, 56, -617, -724,
1405 -85, -491, -320, -656,
1406 -570, -831, -129, -528,
1407 -1506, -63, -367, -385,
1409 -366, -214, 319, 511,
1410 146, 671, -17, -291,
1411 -110, 464, -139, -496,
1412 -202, 220, -312, -631,
1413 -660, -73, -655, -820,
1414 -662, -653, -1288, -857,
1415 -430, -953, -959, -264,
1416 -49, -468, -72, -381,
1417 -350, -563, -193, -407,
1419 -309, 649, 188, -198,
1420 -512, 461, -79, -458,
1421 -1318, -263, -134, -523,
1422 -1657, -435, -495, -765,
1423 57, -347, -414, 434,
1424 -1141, -242, -664, -857,
1430 /* third codebook for MR475, MR515 */
1432 const Word16 mr515_3_lsf[MR515_3_SIZE*4] =
1434 419, 163, -30, -262,
1435 -455, -789, -1430, -721,
1438 -968, -1358, -388, 135,
1439 -693, 835, 456, 154,
1440 1105, 703, 569, 363,
1441 1625, 1326, 985, 748,
1442 -220, 219, 76, -208,
1443 -1455, -1662, 49, 149,
1444 -964, -172, -752, -336,
1445 625, 209, -250, -66,
1446 -1017, -838, -2, 317,
1447 -2168, -1485, -138, 123,
1448 -1876, -2099, -521, 85,
1449 -967, -366, -695, -881,
1450 -921, -1011, -763, -949,
1451 -124, -256, -352, -660,
1453 -1744, -591, -282, 79,
1454 -2249, 175, 867, 499,
1455 -138, -180, -181, -21,
1456 -2291, -1241, -460, -520,
1457 -771, 451, -10, -308,
1459 -279, -435, -43, -348,
1460 -670, 35, -65, -211,
1464 -540, -376, 14, 349,
1466 -544, -752, -62, -10,
1468 -19, -533, -94, 601,
1469 136, -71, -681, -747,
1470 -166, -344, 261, -50,
1472 -1675, 50, 190, -93,
1473 -2282, -231, -194, -82,
1474 -95, -595, -154, 128,
1476 -345, 206, 122, 110,
1477 -631, -227, -569, 3,
1480 1281, 904, 292, 215,
1482 -677, -1047, 13, 321,
1483 -679, -588, -358, -212,
1484 -558, 243, 646, 479,
1487 -112, -398, -1031, -286,
1488 -326, -705, 288, 272,
1489 1299, 1144, 1178, 860,
1490 -423, 121, -385, -148,
1491 -295, -302, -834, -819,
1492 16, -24, -201, -476,
1494 -38, -379, -962, -1221,
1495 -1191, -1518, -273, -395,
1496 -390, -1013, -645, 573,
1497 -1843, -1030, 505, 468,
1499 -689, -1172, -628, -135,
1500 -1026, 195, 411, 196,
1501 1582, 1147, 575, 337,
1502 -1239, -777, -648, -142,
1504 -1206, -970, -81, -342,
1507 -1647, -172, 861, 562,
1508 928, 1537, 1063, 740,
1509 -2472, -952, 264, 82,
1510 -502, -965, -1334, 123,
1511 867, 1236, 534, 171,
1512 -2320, -460, 780, 363,
1513 -1190, -617, 252, -61,
1514 -174, 34, 1011, 788,
1515 -2333, 247, 423, 153,
1516 -16, -355, 262, 449,
1517 -1576, -1073, -544, -371,
1518 -615, -305, 1051, 805,
1520 935, 875, 1002, 809,
1522 -584, -1138, 599, 556,
1523 -1105, -1391, -1591, -519,
1524 -977, -1325, 108, 347,
1525 -722, -975, 365, 101,
1526 -145, 681, 249, -153,
1528 412, 285, -336, -617,
1529 -953, -966, 887, 689,
1530 -1251, 84, -185, -398,
1531 -592, 433, 1044, 653,
1533 -433, -705, 466, 574,
1534 -154, 654, 592, 290,
1537 1235, 1204, 757, 488,
1538 -400, -269, 538, 372,
1539 -1350, -1387, -1194, -91,
1540 1262, 876, 775, 700,
1541 -599, -38, -430, -722,
1542 1976, 1630, 991, 608,
1543 111, 276, -226, -96,
1544 -947, -388, -11, -7,
1545 -303, -531, -839, 338,
1546 1734, 1710, 1405, 1013,
1547 -516, -855, -645, 210,
1548 -688, -416, 513, 230,
1549 -822, -637, -1146, -320,
1550 -952, -658, -694, 183,
1551 -114, -623, 818, 674,
1552 -191, -204, 731, 635,
1554 -954, -431, 826, 598,
1555 -342, -755, -900, -407,
1556 -1126, -354, -206, -512,
1557 -547, -810, -357, -620,
1559 -872, -945, -1444, -1227,
1560 191, -17, -544, -231,
1561 -1540, -544, -901, -886
1564 /* first codebook for MR795 */
1566 const Word16 mr795_1_lsf[MR795_1_SIZE*3] =