changeset 342:e42075184628

libtwamr: integrate q_plsf_3.tab
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 19 Apr 2024 00:57:15 +0000
parents 450b090f2fd7
children 3f574255c3aa
files libtwamr/Makefile libtwamr/namespace.h libtwamr/q_plsf3_tab.c libtwamr/q_plsf3_tab.h
diffstat 4 files changed, 2038 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/libtwamr/Makefile	Fri Apr 19 00:27:46 2024 +0000
+++ b/libtwamr/Makefile	Fri Apr 19 00:57:15 2024 +0000
@@ -5,8 +5,8 @@
 	c8_31pf.o c_g_aver.o calc_cor.o calc_en.o cbsearch.o convolve.o cor_h.o\
 	d1035pf.o d2_11pf.o d2_9pf.o d3_14pf.o d4_17pf.o d8_31pf.o d_gain_c.o \
 	d_gain_p.o gains_tab.o gc_pred.o gmed_n.o graytab.o inv_sqrt.o log2.o \
-	oper_32b.o pow2.o prmno.o q_plsf5_tab.o s10_8pf.o set_sign.o sqrt_l.o \
-	tls_flags.o window.o
+	oper_32b.o pow2.o prmno.o q_plsf3_tab.o q_plsf5_tab.o s10_8pf.o \
+	set_sign.o sqrt_l.o tls_flags.o window.o
 LIB=	libtwamr.a
 
 INSTALL_PREFIX=	/usr/local
--- a/libtwamr/namespace.h	Fri Apr 19 00:27:46 2024 +0000
+++ b/libtwamr/namespace.h	Fri Apr 19 00:57:15 2024 +0000
@@ -97,12 +97,21 @@
 #define	window_232_8	AMR__window_232_8
 #define	qua_gain_pitch	AMR__qua_gain_pitch
 #define	qua_gain_code	AMR__qua_gain_code
+
 #define	mean_lsf	AMR__mean_lsf
+#define	mean_lsf3	AMR__mean_lsf3
 #define	dico1_lsf	AMR__dico1_lsf
 #define	dico2_lsf	AMR__dico2_lsf
 #define	dico3_lsf	AMR__dico3_lsf
 #define	dico4_lsf	AMR__dico4_lsf
 #define	dico5_lsf	AMR__dico5_lsf
+#define	dico1_lsf3	AMR__dico1_lsf3
+#define	dico2_lsf3	AMR__dico2_lsf3
+#define	dico3_lsf3	AMR__dico3_lsf3
+#define	mr515_3_lsf	AMR__mr515_3_lsf
+#define	mr795_1_lsf	AMR__mr795_1_lsf
+#define	past_rq_init	AMR__past_rq_init
+#define	pred_fact	AMR__pred_fact
 
 #define	Cb_gain_average		AMR__Cb_gain_average
 #define	Cb_gain_average_reset	AMR__Cb_gain_average_reset
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libtwamr/q_plsf3_tab.c	Fri Apr 19 00:57:15 2024 +0000
@@ -0,0 +1,1993 @@
+/*
+ * In ETSI EFR code there was only q_plsf_5.tab that was problematically
+ * multi-included in many source files; in the AMR version there is also
+ * q_plsf_3.tab with a similar situation.  Handle it similarly.
+ */
+
+#include "tw_amr.h"
+#include "typedef.h"
+#include "namespace.h"
+#include "q_plsf3_tab.h"
+
+/* initalization table for MA predictor in dtx mode */
+const Word16 past_rq_init[80] = {
+  -258, -318, -439, -634, -656, -773, -711, -502, -268, -193,
+    -2,  125,  122,  -39,   -9,  105,  129,  283,  372,  575,
+  -277, -324, -197, -487, -445, -362, -292,  -27,  177,  543,
+   342,  517,  516,  130,   27, -104, -120, -140,  -74,  -56,
+  -564, -943,-1520, -965, -814, -526, -322,   -2,  159,  657,
+  -312, -284, -386, -597, -493, -526, -418, -229,  105,  449,
+  -557, -870,-1075, -919, -950, -752, -709, -316,   62,  486,
+  -314, -191, -203, -330, -160, -103,  -51,  131,  338,  515
+};
+
+const Word16 mean_lsf3[10] = {
+     1546,
+     2272,
+     3778,
+     5488,
+     6972,
+     8382,
+    10047,
+    11229,
+    12766,
+    13714 
+};
+
+const Word16 pred_fac[10] = {
+     9556,
+    10769,
+    12571,
+    13292,
+    14381,
+    11651,
+    10588,
+     9767,
+     8593,
+     6484 
+};
+
+/* first codebook from IS641 */
+
+const Word16 dico1_lsf3[] = {
+  6, 82, -131,
+  154, -56, -735,
+  183, -65, -265,
+  9, -210, -361,
+  113, 718, 1817,
+  1010, 1214, 1573,
+  857, 1333, 2276,
+  827, 1568, 1933,
+  717, 1989, 2206,
+  838, 1172, 1823,
+  721, 1000, 2154,
+  286, 476, 1509,
+  -247, -531, 230,
+  147, -82, 569,
+  26, -177, -944,
+  -27, -273, 692,
+  -164, -264, -183,
+  224, 790, 1039,
+  899, 946, 601,
+  485, 771, 1150,
+  524, 677, 903,
+  -140, 375, 778,
+  410, 676, 429,
+  301, 530, 1009,
+  719, 646, 38,
+  226, 367, 40,
+  145, -45, -505,
+  290, 121, -121,
+  302, 127, 166,
+  -124, -383, -956,
+  -358, -455, -977,
+  715, 878, 894,
+  978, 923, 211,
+  477, 272, 64,
+  188, -78, 17,
+  -143, -65, 38,
+  643, 586, 621,
+  -134, -426, -651,
+  347, 545, 2820,
+  1188, 2726, 2442,
+  142, -80, 1735,
+  283, 130, 461,
+  -262, -399, -1145,
+  -411, 155, 430,
+  329, 375, 779,
+  53, -226, -139,
+  -129, -236, 1682,
+  285, 744, 1327,
+  738, 697, 1664,
+  312, 409, 266,
+  325, 720, 135,
+  1, 221, 453,
+  8, 203, 145,
+  299, 640, 760,
+  29, 468, 638,
+  103, 429, 379,
+  420, 954, 932,
+  1326, 1210, 1258,
+  704, 1012, 1152,
+  -166, -444, -266,
+  -316, -130, -376,
+  191, 1151, 1904,
+  -240, -543, -1260,
+  -112, 268, 1207,
+  70, 1062, 1583,
+  278, 1360, 1574,
+  -258, -272, -768,
+  19, 563, 2240,
+  -3, -265, 135,
+  -295, -591, -388,
+  140, 354, -206,
+  -260, -504, -795,
+  -433, -718, -1319,
+  109, 331, 962,
+  -429, -87, 652,
+  -296, 426, 1019,
+  -239, 775, 851,
+  489, 1334, 1073,
+  -334, -332, 25,
+  543, 1206, 1807,
+  326, 61, 727,
+  578, 849, 1405,
+  -208, -277, 329,
+  -152, 64, 669,
+  -434, -678, -727,
+  -454, -71, 251,
+  605, 480, 254,
+  -482, 11, 996,
+  -289, 395, 486,
+  722, 1049, 1440,
+  -30, -316, -786,
+  -106, -115, -619,
+  861, 1474, 1412,
+  1055, 1366, 1184,
+  812, 1237, 925,
+  42, -251, -576,
+  342, 141, -454,
+  -168, -80, 1359,
+  -342, -656, -1763,
+  100, 821, 725,
+  990, 747, 800,
+  332, 440, 568,
+  663, 379, 852,
+  112, 165, -369,
+  597, 910, 282,
+  -8, 834, 1281,
+  -352, 572, 695,
+  462, 2246, 1806,
+  345, 190, 1374,
+  416, 915, 2166,
+  168, -82, 280,
+  -516, -446, 840,
+  47, 533, 44,
+  -362, -711, -1143,
+  22, 193, 1472,
+  -85, 233, 1813,
+  -62, 579, 1504,
+  550, 944, 1749,
+  723, 650, 1148,
+  972, 884, 1395,
+  -425, 643, 0,
+  1000, 952, 1098,
+  249, 1446, 672,
+  -334, -87, 2172,
+  -554, 1882, 2672,
+  140, 1826, 1853,
+  920, 1749, 2590,
+  1076, 1933, 2038,
+  -137, -443, -1555,
+  1269, 1174, 468,
+  -493, -122, 1521,
+  -451, 1033, 1214,
+  482, 1695, 1118,
+  815, 649, 384,
+  -446, -692, 107,
+  -319, -605, -118,
+  -207, -505, 525,
+  -468, -12, 2736,
+  75, 1934, 1305,
+  880, 2358, 2267,
+  1285, 1575, 2004,
+  -48, -304, -1186,
+  -435, -461, -251,
+  -366, -404, -547,
+  -289, -605, -597,
+  -538, -810, -165,
+  -120, 3, 356,
+  639, 1241, 1502,
+  96, 177, 750,
+  -435, -585, -1174,
+  -356, 109, -79,
+  -485, 288, 2005,
+  9, 1116, 731,
+  880, 2134, 946,
+  -265, 1585, 1065,
+  1157, 1210, 843,
+  -498, -668, 431,
+  374, 321, -229,
+  1440, 2101, 1381,
+  449, 461, 1155,
+  -105, 39, -384,
+  -263, 367, 182,
+  -371, -660, 773,
+  -188, 1151, 971,
+  1333, 1632, 1435,
+  774, 1267, 1221,
+  -482, -832, -1489,
+  -237, -210, 860,
+  890, 1615, 1064,
+  472, 1062, 1192,
+  185, 1077, 989,
+  -568, -992, -1704,
+  -449, -902, -2043,
+  -142, -377, -458,
+  -210, -554, -1029,
+  -11, 1133, 2265,
+  -329, -675, -893,
+  -250, 657, 1187,
+  519, 1510, 1779,
+  520, 539, 1403,
+  527, 1421, 1302,
+  -563, -871, -1248,
+  -147, -463, 879,
+  -76, 2334, 2840,
+  563, 2573, 2385,
+  632, 1926, 2920,
+  719, 2023, 1840,
+  -545, -723, 1108,
+  129, -125, 884,
+  1417, 1632, 925,
+  -94, 1566, 1751,
+  -341, 1533, 1551,
+  591, 395, -274,
+  -76, 981, 2831,
+  153, 2985, 1844,
+  1032, 2565, 2749,
+  1508, 2832, 1879,
+  791, 1199, 538,
+  -190, -453, 1489,
+  -278, -548, 1158,
+  -245, 1941, 2044,
+  1024, 1560, 1650,
+  512, 253, 466,
+  -62, -323, 1151,
+  -473, -376, 507,
+  -433, 1380, 2162,
+  899, 1943, 1445,
+  134, 704, 440,
+  460, 525, -28,
+  -450, 279, 1338,
+  0, 971, 252,
+  -445, -627, -991,
+  -348, -602, -1424,
+  398, 712, 1656,
+  -107, 314, -178,
+  93, 2226, 2238,
+  518, 849, 656,
+  -462, -711, -447,
+  174, -34, 1191,
+  -119, 42, 1005,
+  -372, 274, 758,
+  1036, 2352, 1838,
+  675, 1724, 1498,
+  430, 1286, 2133,
+  -129, -439, 0,
+  -373, 800, 2144,
+  6, 1587, 2478,
+  478, 596, 2128,
+  -428, -736, 1505,
+  385, 178, 980,
+  139, 449, 1225,
+  -526, -842, -982,
+  145, 1554, 1242,
+  623, 1448, 656,
+  349, 1016, 1482,
+  31, -280, 415,
+  -316, 724, 1641,
+  360, 1058, 556,
+  -436, -358, 1201,
+  -355, 1123, 1939,
+  401, 1584, 2248,
+  -527, -1012, 355,
+  233, 238, 2233,
+  -550, -897, -639,
+  -365, -501, 1957,
+  389, 1860, 1621,
+  162, 1132, 1264,
+  -237, 1174, 1390,
+  -640, -411, 116,
+  -228, 1694, 2298,
+  1639, 2186, 2267,
+  562, 1273, 2658,
+  323, 338, 1774,
+  578, 1107, 852,
+  22, 594, 934,
+  -143, 718, 446
+};
+
+/* second codebook from IS641 */
+
+const Word16 dico2_lsf3[] = {
+  50, 71, -9,
+  -338, -698, -1407,
+  102, -138, -820,
+  -310, -469, -1147,
+  414, 67, -267,
+  1060, 814, 1441,
+  1548, 1360, 1272,
+  1754, 1895, 1661,
+  2019, 2133, 1820,
+  1808, 2318, 1845,
+  644, -93, 454,
+  858, 329, -136,
+  489, -258, -128,
+  -198, -745, -41,
+  -52, -265, -985,
+  346, 137, 479,
+  -1741, -748, -684,
+  -1163, -1725, -367,
+  -895, -1145, -784,
+  -488, -946, -968,
+  -85, -390, -725,
+  215, -340, -171,
+  1020, 916, 1969,
+  564, 179, 746,
+  662, 977, 1734,
+  887, 622, 914,
+  939, 856, 1165,
+  309, 688, 803,
+  917, 161, 570,
+  118, -20, -283,
+  -816, -42, 204,
+  -1228, -325, -462,
+  -963, -202, -143,
+  -988, -484, -361,
+  -702, -978, -477,
+  -302, -790, -1188,
+  -100, -786, -1088,
+  -1054, -947, -1684,
+  -202, -843, -782,
+  -1039, -1378, -901,
+  -624, -110, -85,
+  356, 213, -10,
+  -493, 364, 774,
+  425, 822, 479,
+  -83, 557, 520,
+  -992, -1560, -572,
+  -603, -741, -26,
+  -502, -638, -903,
+  209, 306, 147,
+  -316, -593, -596,
+  -85, -211, -225,
+  -918, -529, 117,
+  233, -439, -738,
+  1101, 751, 633,
+  1457, 1716, 1511,
+  1765, 1457, 910,
+  1122, 1156, 849,
+  1354, 868, 470,
+  -871, -1150, -1796,
+  -871, -861, -992,
+  -118, 155, 212,
+  -1051, -849, -606,
+  -1117, -1849, -2750,
+  -1019, -1427, -1869,
+  370, -184, -414,
+  959, 493, 104,
+  958, 1039, 543,
+  154, 653, 201,
+  1249, 507, 150,
+  663, 503, 230,
+  623, 777, 675,
+  659, 88, -110,
+  843, 244, 224,
+  382, 541, 302,
+  724, 433, 666,
+  1166, 734, 341,
+  -138, 20, -397,
+  -1183, -424, -46,
+  -321, -352, -124,
+  1333, 1021, 1080,
+  262, 366, 723,
+  922, 283, -551,
+  31, -636, -611,
+  -689, -697, -415,
+  -952, -779, -201,
+  -1329, -598, -359,
+  -953, -1285, 166,
+  493, 305, 221,
+  846, 703, 610,
+  840, 936, 774,
+  -723, -1324, -1261,
+  -357, -1025, -1388,
+  -1096, -1376, -365,
+  -1416, -1881, -608,
+  -1798, -1727, -674,
+  -545, -1173, -703,
+  678, 786, 148,
+  -123, 696, 1288,
+  644, 350, -10,
+  414, 614, 15,
+  137, 344, -211,
+  -814, -1512, -819,
+  -391, -930, -588,
+  47, -591, -898,
+  -909, -1097, -163,
+  -1272, -1167, -157,
+  -1464, -1525, -389,
+  -1274, -1188, -624,
+  671, 213, 454,
+  124, -274, -525,
+  -729, -496, -152,
+  -1344, 122, 135,
+  -2905, -589, -394,
+  -1728, 441, -50,
+  1476, 904, 787,
+  316, 236, -440,
+  -347, 217, 413,
+  -911, -917, 121,
+  -455, -932, 202,
+  -92, -465, -375,
+  488, 390, 474,
+  876, 729, 316,
+  -1815, -1312, -669,
+  87, 962, 432,
+  563, -249, -1058,
+  250, 285, 1105,
+  1141, 427, 696,
+  -1038, -1664, -1582,
+  -948, 346, 160,
+  -309, -272, -858,
+  670, 624, 1250,
+  -944, -408, -666,
+  -606, -320, -384,
+  -492, 230, 65,
+  334, -50, -16,
+  -16, -690, -1397,
+  1791, 1716, 1399,
+  2478, 2063, 1404,
+  1245, 1471, 1426,
+  -382, -1037, -2,
+  173, -398, 1145,
+  1491, 2024, 1801,
+  772, 1274, 1506,
+  1429, 1735, 2001,
+  1079, 1218, 1273,
+  -1154, -1851, -1329,
+  -808, -1133, -1096,
+  -451, -1033, -1722,
+  65, 578, -84,
+  -1476, -2434, -1778,
+  -765, -1366, -494,
+  -218, -594, -931,
+  337, -236, 562,
+  2357, 2662, 1938,
+  1489, 1276, 874,
+  189, 358, 374,
+  -1519, -2281, -2346,
+  -967, -1271, -2095,
+  -628, -1188, -1542,
+  1661, 1043, 546,
+  565, 1061, 732,
+  -64, -836, -434,
+  -436, -96, 203,
+  1078, 1216, 1636,
+  907, 1534, 986,
+  326, 965, 845,
+  142, -84, 197,
+  470, 2379, 1570,
+  1133, 470, 1214,
+  395, 1376, 1200,
+  1125, 1042, 348,
+  -543, -1234, -376,
+  -215, -181, 481,
+  -1947, -1621, -210,
+  -750, -1185, 390,
+  29, -399, 27,
+  820, 1236, 755,
+  695, 979, 409,
+  -174, 1197, 1035,
+  912, 1356, 1846,
+  -992, -1437, 484,
+  -1485, -1700, 208,
+  -412, 1204, 1432,
+  -271, 896, 1144,
+  -416, 1777, 1434,
+  -1696, -2644, -204,
+  -1789, -1551, 1033,
+  -1656, -1559, 1303,
+  -1253, -1589, 1081,
+  -669, -1095, -66,
+  -682, 320, -345,
+  659, 305, 1069,
+  -1292, -804, -19,
+  -1635, -1291, 29,
+  -1683, -497, 71,
+  -287, -7, -100,
+  -494, -962, -237,
+  852, 1881, 1740,
+  -1217, -1387, 227,
+  -660, 302, 373,
+  96, 1087, 1257,
+  -1074, -1669, 160,
+  485, 2076, 1798,
+  -934, -220, 552,
+  -596, -612, 237,
+  336, 1720, 879,
+  643, 629, 434,
+  1267, 522, 1633,
+  15, 244, -441,
+  1475, 717, 184,
+  1819, 1590, 1709,
+  988, 261, 937,
+  2093, 2345, 1520,
+  2139, 1858, 1606,
+  -577, -579, -1203,
+  -956, 135, -488,
+  -464, 51, -338,
+  -629, -348, -723,
+  1146, 2073, 1442,
+  2192, 1466, 911,
+  -1444, -1572, -2278,
+  1400, 710, 1297,
+  1335, 633, 928,
+  1434, 2194, 2594,
+  2422, 2204, 1881,
+  982, 2242, 1854,
+  380, 792, 1145,
+  -63, -539, 414,
+  -252, -964, -314,
+  -1261, -683, -780,
+  -831, -526, -1005,
+  -1666, -1135, -424,
+  -1611, -452, -299,
+  1268, 1048, 642,
+  1147, 853, 856,
+  -675, -336, 139,
+  2268, 1343, 1418,
+  29, 768, 797,
+  -1224, 423, 564,
+  -1318, -1082, 245,
+  -1302, -812, 573,
+  -1298, -1617, 646,
+  -968, 834, 723,
+  993, 1652, 2027,
+  -191, -817, 432,
+  662, 60, 198,
+  626, 997, 1330,
+  1648, 1963, 1289,
+  -1597, -93, -45,
+  -1088, 37, -84,
+  1653, 2607, 2337,
+  1065, 2040, 2377,
+  1139, 2326, 2118,
+  859, 357, 1510,
+  664, 1227, 1099,
+  479, 1360, 912,
+  1897, 1754, 2019,
+  1168, 1909, 1784,
+  399, 34, 256,
+  -593, -304, -1053,
+  547, 1694, 1407,
+  647, -99, -341,
+  1492, 1647, 1190,
+  38, -644, -212,
+  395, 846, 222,
+  -704, -765, -716,
+  -724, -1964, -2804,
+  -150, 291, -82,
+  1233, 1459, 1007,
+  -140, -155, 153,
+  439, 297, 1568,
+  -1529, -410, -636,
+  1536, 455, -237,
+  -1328, -139, -260,
+  531, 554, 868,
+  269, 1264, 606,
+  -233, 883, 463,
+  742, 600, -120,
+  -73, 421, 212,
+  -439, -58, 804,
+  -1286, -1241, 728,
+  294, -490, 50,
+  -591, -905, -1254,
+  42, -687, 147,
+  -25, 273, 596,
+  -311, 1213, 601,
+  -754, 849, 584,
+  429, 607, 587,
+  -602, -166, 461,
+  -796, -823, 777,
+  1380, 910, 1755,
+  119, 1417, 972,
+  -219, -880, -1596,
+  -1049, -1010, 438,
+  -713, -1379, 78,
+  0, -447, -1179,
+  -1136, -1319, -1573,
+  2248, 1767, 1309,
+  946, 1583, 1432,
+  1150, 482, 436,
+  -469, -1108, 618,
+  -447, -966, 1088,
+  -1252, -1515, -114,
+  -1104, -2008, -579,
+  210, 613, 497,
+  -1975, -1437, 642,
+  -1269, -856, 1011,
+  -1646, -1185, 1063,
+  -1555, -672, 1204,
+  -1692, -1114, 623,
+  -979, -1326, -1277,
+  539, -147, 894,
+  -1354, -897, -434,
+  888, 475, 428,
+  153, -384, 338,
+  -1492, -511, 359,
+  -974, -1115, -470,
+  105, -550, 677,
+  -937, -1145, 877,
+  380, -260, 210,
+  1685, 924, 1256,
+  1775, 1190, 1095,
+  1419, 631, 533,
+  627, 299, -347,
+  -411, -534, 647,
+  -650, 29, -595,
+  -378, -1367, 1563,
+  1402, 1121, 1465,
+  1089, 1410, 648,
+  -2096, -1090, -6,
+  311, -194, -869,
+  -639, -831, 416,
+  -1162, -1224, 1349,
+  -1247, -941, 1813,
+  -2193, -1987, 453,
+  -619, -1367, -956,
+  -1606, -1972, -1507,
+  -1175, -1057, -1104,
+  -377, 601, 201,
+  1876, 825, 374,
+  -430, -1323, 29,
+  -1397, -1249, -1331,
+  -1007, -1504, 960,
+  -1401, -2009, 197,
+  -1379, -1949, -236,
+  -1077, 123, 422,
+  615, 1269, 546,
+  -306, 1526, 904,
+  1194, 1788, 1177,
+  -626, -884, -1526,
+  199, 766, 1504,
+  -1065, 862, 197,
+  -1034, -1773, -887,
+  -800, 145, 599,
+  -1134, -519, 626,
+  -1205, -1926, 500,
+  -910, -1041, -1395,
+  -1476, -1567, -969,
+  -523, 842, 34,
+  1794, 646, 862,
+  -1207, -1888, -1002,
+  -78, -9, -672,
+  1044, 759, 80,
+  -600, 1139, 1019,
+  57, 2000, 1422,
+  -833, 1414, 1121,
+  -1202, 1630, 1260,
+  -461, 1420, 1244,
+  1537, 975, 253,
+  -283, 324, -359,
+  599, -195, 106,
+  588, 62, -587,
+  -757, 645, 205,
+  51, 1201, 758,
+  -1209, 673, -390,
+  -624, 1581, 941,
+  -151, 1023, 735,
+  2820, 1301, 690,
+  -302, 524, -99,
+  -900, -1588, -1189,
+  1084, 251, 238,
+  2014, 1792, 1010,
+  1245, 1633, 1741,
+  -1227, -1540, -1208,
+  -621, 456, -109,
+  40, -65, 788,
+  -805, -699, -1350,
+  -583, 904, 832,
+  -801, 532, 594,
+  1972, 1408, 1351,
+  -1177, -1880, -2114,
+  -773, 568, 948,
+  -1015, 1079, 1260,
+  -1111, 482, -130,
+  1778, 1044, 780,
+  -1491, 245, 912,
+  -316, -1141, -917,
+  -536, -1442, -2346,
+  -785, -1546, -1988,
+  -2003, 257, 909,
+  -1849, -633, -1209,
+  -1538, -1918, -1054,
+  1606, 2239, 1576,
+  -567, -1500, -1544,
+  -1279, 195, 1369,
+  -817, 293, 1219,
+  -525, 630, 1197,
+  -1698, -2425, -1840,
+  -303, 731, 747,
+  -1169, -251, 269,
+  -950, -75, 1684,
+  -1182, -453, 1005,
+  -1599, 585, 378,
+  -2075, -571, -427,
+  -529, -1159, -1171,
+  -283, -205, -564,
+  -796, 1246, 717,
+  2277, 927, 539,
+  -454, 559, 440,
+  -717, 1460, 1615,
+  -1030, 1052, 1610,
+  -1169, -138, 847,
+  226, 39, -612,
+  -1251, -106, -729,
+  -651, 968, 1302,
+  -714, -636, 1727,
+  353, 1069, 410,
+  -798, -156, 1099,
+  -574, 918, 446,
+  -1310, 1012, 466,
+  1408, 1591, 765,
+  1429, 1380, 1757,
+  1949, 1956, 2378,
+  1578, 2047, 2148,
+  916, 98, -7,
+  1893, 1418, 2141,
+  348, 1405, 1579,
+  152, 1134, 1801,
+  -267, 154, 1395,
+  -1166, 469, 1054,
+  -1142, -405, -1073,
+  -1341, -2264, -1581,
+  -364, 869, 1706,
+  -1162, 549, 1550,
+  -1225, -1932, -1666,
+  -1485, -1977, -2055,
+  -1727, -906, -98,
+  -1897, 233, 1492,
+  892, 108, -331,
+  -1728, -1170, -1700,
+  -1060, 1980, 1790,
+  -1070, -1741, -1909,
+  -11, 1539, 1317,
+  -1600, 94, 497,
+  421, 443, -197,
+  -1578, -349, -994,
+  -599, -539, 1140,
+  -965, -1419, -129,
+  -1341, 175, -447,
+  -375, 1311, 2055,
+  -371, -650, -307,
+  -1073, 605, 365,
+  -2057, -113, 430,
+  652, 914, 967,
+  -1012, -1586, -2323,
+  1505, 1248, 559,
+  262, -486, -401,
+  -1727, 1342, 1546,
+  50, 56, 432,
+  -330, 119, -604,
+  -1517, -1080, -810,
+  946, 1127, 1055,
+  -1400, -1703, -1712,
+  -1270, -704, -1317,
+  807, 1821, 1143,
+  2760, 1606, 2171,
+  1120, 409, -150,
+  -147, 404, 959,
+  2439, 1911, 2189,
+  -906, -141, -866,
+  -904, -142, -458,
+  -557, -708, -1679,
+  -830, -1431, -1583,
+  -1842, -1346, -1086,
+  -1604, -272, 915,
+  -1196, 772, 1056,
+  -638, -1234, -1897,
+  -500, -81, -822,
+  -1289, -1613, -735,
+  -117, 785, 168,
+  -1090, 1133, 922,
+  -1096, -746, 1384,
+  287, -547, -1063,
+  -1376, -2201, -1204,
+  -2176, -1570, -1757,
+  -1511, -2241, -771,
+  -1737, 1099, 830,
+  -1588, 724, 1243,
+  -1542, 693, 805,
+  -1690, -240, 1665,
+  -1700, -4, -668,
+  2149, 816, 1042,
+  -818, -1841, 22,
+  -764, -507, 449,
+  -1151, -617, 289,
+  -843, -1596, -240,
+  498, -234, -657,
+  -752, 480, 1678,
+  -319, -481, 193,
+  -811, 171, -119,
+  -2128, -202, -848,
+  1717, 1140, 1700
+};
+
+/* third codebook from IS641 */
+
+const Word16 dico3_lsf3[] = {
+  67, -17, 66, -12,
+  -1690, -581, -104, -272,
+  -1076, -1186, -1845, -376,
+  -1140, -926, -420, -58,
+  -259, -656, -1134, -553,
+  1788, 1227, 455, 129,
+  462, 441, -240, -528,
+  840, 514, 130, -75,
+  1114, 623, 153, 216,
+  1068, 564, -6, -276,
+  1119, 727, 190, -68,
+  704, 306, 119, -264,
+  329, 61, -100, 156,
+  364, 123, 183, -208,
+  -171, -123, 220, -65,
+  -306, -62, 402, 17,
+  -660, -938, -266, 0,
+  385, 235, 276, 285,
+  320, 268, -336, -200,
+  -724, 17, -84, 381,
+  -544, 429, 494, 519,
+  -117, 288, 304, 329,
+  643, 157, 701, 508,
+  1200, 625, 796, 608,
+  998, 421, 492, 632,
+  1204, 780, 446, 132,
+  1257, 844, 547, 449,
+  829, 658, 541, 470,
+  1132, 1258, 918, 639,
+  547, 51, 423, 279,
+  9, 392, 83, 94,
+  542, 543, 229, -147,
+  -198, 129, 194, -185,
+  -863, -1321, -302, 30,
+  -597, -629, -19, 114,
+  -900, -1081, 466, 353,
+  -1483, -1573, 15, -143,
+  -1708, -2059, -751, 196,
+  -1876, -2067, -642, -258,
+  -2335, -1470, -450, -564,
+  -584, -186, -872, -414,
+  -1805, -988, -1125, -1310,
+  -726, -1129, 28, 169,
+  -1039, -864, -718, -246,
+  484, 36, -233, -49,
+  265, 67, 289, 467,
+  178, 543, 810, 540,
+  84, 282, 672, 703,
+  -975, -777, 129, 287,
+  -938, -227, 955, 595,
+  -1617, -289, 836, 649,
+  -1847, -215, 1106, 718,
+  -2034, -1085, 650, 440,
+  -2101, -529, 907, 575,
+  -2011, -336, 670, 204,
+  -2389, -692, 360, 137,
+  -2156, -2204, -9, 280,
+  -266, 119, 39, 193,
+  78, -59, -120, 226,
+  -975, -858, -781, -1095,
+  -619, -413, -451, -842,
+  -1216, -1321, -813, -883,
+  -1376, -1615, -394, -428,
+  -737, -1113, -549, -790,
+  -880, -975, -967, -642,
+  -985, -886, -1273, -1361,
+  -473, -804, -1401, -1407,
+  160, -265, -919, -275,
+  -248, -250, -718, -380,
+  97, -103, -375, -229,
+  -415, -193, -135, -555,
+  628, 361, 119, 216,
+  579, 364, 391, 209,
+  634, 522, -154, -148,
+  526, 389, 170, 33,
+  105, 267, 64, 380,
+  -1503, -1000, -30, -369,
+  -1070, 58, 647, 223,
+  -1520, -291, 621, 307,
+  -1531, 156, 762, 404,
+  -2029, 141, 734, 499,
+  -1849, -650, 306, 512,
+  -187, -104, -59, 438,
+  134, -230, 156, -186,
+  -61, -260, -16, 10,
+  -569, -3, -421, -297,
+  -1725, -521, -346, 178,
+  -1362, -59, -44, 157,
+  -2146, -461, -470, -349,
+  -2170, -1, -369, -121,
+  -1579, -373, -900, -1015,
+  -1117, -591, -613, -784,
+  -561, 122, -75, -449,
+  -4, -171, -123, -372,
+  192, 168, -76, -132,
+  252, -107, 340, 210,
+  392, 509, 272, 181,
+  -109, 145, 218, 119,
+  -416, -263, 485, 265,
+  -181, -8, -286, 226,
+  -244, -218, 69, -290,
+  -158, 191, -1, -64,
+  -592, -90, 213, -96,
+  255, 435, 178, -80,
+  -369, -18, -33, -80,
+  -42, 415, 140, -222,
+  1143, 651, 649, 329,
+  767, 556, 249, 235,
+  948, 413, 442, 279,
+  141, 339, 356, 557,
+  -470, -170, 99, 237,
+  -569, -800, 352, 565,
+  282, 473, 470, 332,
+  -199, -690, -1284, -917,
+  -193, -426, -800, -1122,
+  -26, -371, -490, -193,
+  637, 595, 519, 330,
+  408, -115, 79, 12,
+  477, 87, -103, -376,
+  -666, -347, -277, -291,
+  -510, -481, 169, 297,
+  -829, -738, -205, -171,
+  -320, -540, 328, 283,
+  -859, -958, 442, -2,
+  556, 686, 130, 56,
+  1383, 1012, 755, 427,
+  612, 741, 628, 553,
+  -339, -796, 134, 277,
+  -633, -1085, -2, -246,
+  -880, -1035, -1607, -1064,
+  -994, -474, -1138, -488,
+  -414, -795, 73, -206,
+  -8, -139, 439, 204,
+  -176, -578, 23, 131,
+  -269, -757, -191, 245,
+  -109, -338, 112, 316,
+  120, -406, -118, 611,
+  -180, -186, -645, 115,
+  -173, 34, -518, -489,
+  -151, 61, -583, -844,
+  220, -138, -681, -1020,
+  391, -17, -598, -321,
+  157, -295, 129, 155,
+  -926, -875, -987, 285,
+  241, -83, -125, -125,
+  620, 597, 432, 92,
+  393, 78, 409, 61,
+  -393, -739, -413, -748,
+  83, 54, 361, 27,
+  -1084, 130, -337, -694,
+  -1565, 297, 318, -19,
+  -1873, 36, 51, -317,
+  -2323, -246, 231, -84,
+  -2306, -783, 40, -179,
+  -2233, -930, -474, -462,
+  -754, -86, -288, -626,
+  -2411, -455, -63, 171,
+  -1099, -1094, -26, -143,
+  -1193, -455, -406, -381,
+  -605, -210, -96, -51,
+  -580, -476, -276, -15,
+  -1195, -634, -1203, -881,
+  -378, -221, -669, -952,
+  594, 178, -403, -676,
+  763, 327, 601, 290,
+  172, 300, 203, 157,
+  -56, -336, 356, 24,
+  -228, -296, -259, -29,
+  -186, 263, 416, 14,
+  -353, 373, -12, -216,
+  257, 96, 174, 57,
+  -1526, -616, -954, -499,
+  -497, -152, -333, 125,
+  105, 200, 179, -97,
+  -331, -224, 765, 697,
+  760, 256, 301, 59,
+  455, -85, 204, 288,
+  -514, 240, 251, -109,
+  256, 417, -34, -413,
+  101, 430, 384, 156,
+  -31, -10, 206, 426,
+  589, 145, 143, 71,
+  808, 906, 333, 349,
+  986, 938, 589, 331,
+  1300, 824, 187, 509,
+  1062, 653, 379, 466,
+  1462, 937, 401, 274,
+  787, 861, 265, 2,
+  609, 553, 28, 305,
+  926, 340, 106, 386,
+  241, -267, -147, 225,
+  -178, -534, 347, 502,
+  -643, -381, 397, 30,
+  -651, -733, -435, 398,
+  -407, -726, -484, -248,
+  -789, -914, -438, -476,
+  -498, -390, 75, -295,
+  -964, -590, -606, 150,
+  -121, -49, -155, -78,
+  935, 550, 389, 38,
+  -321, 127, 424, 315,
+  -285, -113, 283, 259,
+  658, 203, 322, 486,
+  903, 505, 748, 417,
+  611, 423, 555, 512,
+  239, -83, -578, -19,
+  -339, -731, 349, 13,
+  -934, -1399, -114, -360,
+  107, 692, 182, 90,
+  -1243, -1538, -1551, -725,
+  -568, -903, -1363, -525,
+  -517, -853, -861, -1004,
+  -168, -690, -835, 63,
+  -137, -556, -547, 144,
+  -286, -817, 485, 319,
+  -147, -408, 526, 246,
+  -347, -434, 297, -28,
+  -290, -471, -1110, -1285,
+  -460, -359, -988, -794,
+  1347, 1299, 690, 523,
+  1216, 1068, 1094, 757,
+  825, 1140, 752, 494,
+  1252, 1365, 1195, 898,
+  521, 1053, 532, 432,
+  -334, -216, -313, -263,
+  -160, 52, -472, -155,
+  127, 136, -380, 44,
+  851, 410, -162, -489,
+  123, -255, -796, -667,
+  1090, 917, 789, 493,
+  1397, 1197, 558, 202,
+  -51, -118, -342, -701,
+  83, 108, -42, -441,
+  61, 95, 287, 256,
+  -27, 89, 524, 531,
+  351, 227, 592, 545,
+  697, 155, -164, 307,
+  638, 274, -489, -50,
+  754, 240, -166, -124,
+  -116, -579, -1212, -63,
+  190, -295, -1040, -1296,
+  147, -376, -177, -113,
+  841, 1241, 1051, 668,
+  2, 293, 551, 304,
+  -1096, -953, -248, 376,
+  -750, -965, 87, 516,
+  -275, -516, 689, 391,
+  -379, -643, 876, 594,
+  -390, -1013, -645, 573,
+  -107, -568, -689, -826,
+  -1025, -27, -328, -203,
+  861, 749, 548, 233,
+  -1660, -1043, 451, 108,
+  -660, -620, 430, 236,
+  21, -396, -1158, -631,
+  1372, 1298, 967, 577,
+  1125, 1125, 589, 454,
+  -323, -865, -467, 153,
+  -468, -699, -804, -509,
+  -392, -718, -204, -35,
+  -603, -1093, -567, -162,
+  -505, -1004, -102, 350,
+  219, 224, 423, 252,
+  395, 591, 608, 363,
+  -746, -96, 373, 172,
+  171, 295, 714, 339,
+  233, 77, 107, 277,
+  157, 153, -499, -356,
+  1547, 1073, 576, 494,
+  -292, -339, -504, -592,
+  -903, -72, -619, -481,
+  -1594, -1117, -567, -254,
+  -793, -507, -564, -291,
+  -492, -532, 502, 560,
+  -382, 427, 600, 230,
+  -227, 477, 251, 75,
+  285, 842, 813, 476,
+  -1310, -1333, 186, 377,
+  -587, -917, 643, 381,
+  -1186, -553, 411, 82,
+  -1127, -820, -174, -540,
+  -604, 119, 543, 205,
+  -380, 657, 909, 567,
+  112, -298, -374, 114,
+  -857, -251, 56, 159,
+  401, 345, -34, -140,
+  -111, -607, 41, 614,
+  355, -114, -77, 474,
+  578, 56, 1450, 924,
+  1098, 1420, 741, 400,
+  246, 22, 588, 313,
+  -121, 327, 831, 472,
+  -1138, -608, 856, 552,
+  -1241, -1072, 638, 600,
+  -358, 254, -333, -303,
+  -646, 739, 358, 74,
+  1226, 1671, 1221, 849,
+  2241, 1624, 983, 636,
+  1841, 1477, 749, 384,
+  350, 263, 87, 128,
+  -1902, -941, -144, -64,
+  -1734, -255, 288, -31,
+  -2644, -1238, 366, 235,
+  -1643, -1092, -1344, -304,
+  -541, -1075, -1116, 123,
+  -1178, -252, -816, -180,
+  -1016, 533, 565, 233,
+  -487, -430, -188, 334,
+  867, 1236, 534, 171,
+  -1590, -1607, 635, 630,
+  -2196, 310, 924, 412,
+  -2358, -328, 956, 529,
+  -2639, -377, 630, 278,
+  -2602, 317, 799, 299,
+  -2406, 133, 340, 31,
+  -2156, -1468, 131, 125,
+  -1184, -490, -139, 46,
+  -744, 447, 891, 564,
+  67, -451, 646, 604,
+  -553, -429, -876, 396,
+  162, -66, 1305, 915,
+  479, 579, 1088, 794,
+  450, 278, 566, 324,
+  -1057, -154, 148, -177,
+  -2545, 168, 1070, 592,
+  -2351, -42, 819, 345,
+  -2344, -707, 721, 250,
+  -2175, -1497, -309, 122,
+  -78, -73, 120, 173,
+  -4, 262, -263, -261,
+  -431, -64, -405, -732,
+  -2609, 116, -83, -193,
+  -1525, -944, -477, -725,
+  -508, 307, 170, 172,
+  832, 417, 832, 686,
+  -225, 177, 894, 818,
+  -482, -389, 1279, 1039,
+  -383, 201, -350, 40,
+  730, 635, 226, 526,
+  503, 462, 338, 398,
+  535, 714, 40, -282,
+  1482, 1471, 1085, 731,
+  1561, 1072, 909, 693,
+  1419, 1282, 889, 879,
+  1153, 728, 1186, 840,
+  -226, 1130, 949, 689,
+  -494, -986, -1556, -128,
+  -568, -721, -713, -26,
+  317, 524, 70, 135,
+  -405, -865, -1766, -652,
+  -174, -801, 885, 773,
+  -153, -91, 1099, 751,
+  -506, -1149, 853, 646,
+  241, 782, 519, 539,
+  1853, 1700, 1101, 684,
+  -1249, -1486, -464, 188,
+  -893, -1409, -1312, -341,
+  -135, 438, -175, 18,
+  1111, 976, 319, 208,
+  -1430, -1768, 83, 458,
+  -530, -1000, 307, 129,
+  -840, -15, -29, -356,
+  -911, -924, -1147, -242,
+  -119, -528, 127, -133,
+  -761, -765, 190, -83,
+  -315, 895, 522, 231,
+  -222, 102, -63, -428,
+  316, 699, 379, 70,
+  25, 716, 314, -108,
+  507, 874, 566, 238,
+  108, 941, 519, 195,
+  425, -60, -427, 257,
+  139, -103, -630, 446,
+  334, 370, 412, 48,
+  -172, -690, -283, 557,
+  187, -286, 158, 483,
+  140, 270, -344, -631,
+  924, 579, -116, 132,
+  142, 466, -68, -64,
+  230, -145, -302, -542,
+  -803, -912, 1018, 737,
+  -773, 1015, 630, 297,
+  -2596, 95, 445, 336,
+  -2122, 491, 510, 191,
+  -1253, 161, -2, -324,
+  -1450, -633, -712, -105,
+  -842, -254, -411, 100,
+  -640, -290, 1010, 763,
+  -650, 313, 1169, 730,
+  140, 505, 1030, 766,
+  772, 287, 1067, 823,
+  495, 749, 305, 323,
+  -164, 462, 78, 399,
+  -342, -874, 69, 597,
+  -16, 620, 621, 337,
+  -138, -444, -265, 218,
+  84, -450, 953, 666,
+  -222, -803, 541, 604,
+  -921, -1376, 244, 116,
+  -841, -723, 630, 588,
+  140, 663, 294, 368,
+  935, 1046, 881, 759,
+  1746, 1464, 916, 628,
+  436, 963, 281, 1,
+  -119, 74, 542, 213,
+  1, -567, 301, 241,
+  260, 435, 222, 396,
+  936, 957, 1108, 703,
+  510, 506, 808, 478,
+  601, 694, 960, 620,
+  972, 741, 980, 600,
+  834, 717, 767, 684,
+  643, 972, 935, 638,
+  501, 661, 720, 851,
+  -105, -632, -303, -117,
+  -429, 130, 789, 442,
+  -522, -188, 704, 373,
+  -759, 42, 814, 523,
+  -531, -1137, 373, 578,
+  -682, -1203, -455, 285,
+  -1163, -1577, -1098, 44,
+  81, -82, 712, 363,
+  477, 246, 954, 622,
+  1604, 1622, 1277, 891,
+  1409, 859, 924, 892,
+  774, 1041, 947, 1142,
+  40, -546, -75, 288,
+  -616, -106, -697, -26,
+  -169, -160, -891, -739,
+  -279, -384, -1029, -350,
+  1781, 1308, 1046, 816,
+  1580, 1533, 1472, 1178,
+  1505, 1076, 1216, 899,
+  890, 904, 564, 654,
+  920, 692, 1021, 856,
+  -493, 132, 177, 505,
+  71, 195, -28, 97,
+  456, 351, -164, 88,
+  439, 278, -40, 350,
+  1395, 949, 234, -95,
+  -805, -472, 38, -163,
+  367, -98, 489, 523,
+  1025, 1178, 1212, 906,
+  319, 1314, 814, 461,
+  -123, -543, -804, 447,
+  -748, -324, -897, -1127,
+  -737, -501, -789, -713,
+  715, 777, 1239, 922,
+  1949, 1939, 1368, 865,
+  730, 880, 758, 388,
+  -871, 454, 17, -251,
+  -381, -810, -1583, 239,
+  -521, -966, -792, 259,
+  -890, -1358, -770, -73,
+  166, 349, -212, 323,
+  -840, -301, 473, 435,
+  -679, -464, 728, 351,
+  -156, -199, 667, 432,
+  29, -252, 415, 480,
+  -731, -379, 145, 559,
+  -528, -631, -1158, -159,
+  445, 273, 123, 639,
+  373, -126, 800, 568,
+  84, -162, 720, 712,
+  -830, -536, -185, 222,
+  408, 452, 501, 771,
+  -897, -1355, -67, 442,
+  -792, -1406, 566, 602,
+  167, -326, 509, 330,
+  -95, -626, -730, -344,
+  1668, 1217, 779, 455,
+  1316, 828, 584, 719,
+  404, -31, 1013, 789,
+  89, 107, 891, 549,
+  871, 1581, 917, 671,
+  866, 1479, 1289, 854,
+  391, 1068, 1122, 812,
+  78, -562, 345, 563,
+  429, -103, 417, 787,
+  -122, -437, 411, 788,
+  -913, -417, 602, 754,
+  -226, -16, 151, 760,
+  -700, 118, -104, -14,
+  -1128, 48, 284, 393,
+  -390, -419, -639, -116,
+  -910, 306, 316, -13,
+  1207, 984, 821, 669,
+  -1195, -693, 140, -213,
+  -884, -416, -199, -558,
+  -616, 245, -404, -664,
+  262, 56, -617, -724,
+  -85, -491, -320, -656,
+  -570, -831, -129, -528,
+  -1506, -63, -367, -385,
+  -358, -321, 4, 51,
+  -366, -214, 319, 511,
+  146, 671, -17, -291,
+  -110, 464, -139, -496,
+  -202, 220, -312, -631,
+  -660, -73, -655, -820,
+  -662, -653, -1288, -857,
+  -430, -953, -959, -264,
+  -49, -468, -72, -381,
+  -350, -563, -193, -407,
+  55, -408, -803, 11,
+  -309, 649, 188, -198,
+  -512, 461, -79, -458,
+  -1318, -263, -134, -523,
+  -1657, -435, -495, -765,
+  57, -347, -414, 434,
+  -1141, -242, -664, -857,
+  34, -68, -707, -338
+};
+
+/* third codebook for MR475, MR515 */
+
+const Word16 mr515_3_lsf[] = {
+    419,   163,   -30,  -262, 
+   -455,  -789, -1430,  -721, 
+   1006,   664,   269,    25, 
+    619,   260,   183,    96, 
+   -968, -1358,  -388,   135, 
+   -693,   835,   456,   154, 
+   1105,   703,   569,   363, 
+   1625,  1326,   985,   748, 
+   -220,   219,    76,  -208, 
+  -1455, -1662,    49,   149, 
+   -964,  -172,  -752,  -336, 
+    625,   209,  -250,   -66, 
+  -1017,  -838,    -2,   317, 
+  -2168, -1485,  -138,   123, 
+  -1876, -2099,  -521,    85, 
+   -967,  -366,  -695,  -881, 
+   -921, -1011,  -763,  -949, 
+   -124,  -256,  -352,  -660, 
+    178,   463,   354,   304, 
+  -1744,  -591,  -282,    79, 
+  -2249,   175,   867,   499, 
+   -138,  -180,  -181,   -21, 
+  -2291, -1241,  -460,  -520, 
+   -771,   451,   -10,  -308, 
+    271,   -65,     4,   214, 
+   -279,  -435,   -43,  -348, 
+   -670,    35,   -65,  -211, 
+    806,   535,    85,   297, 
+     57,   239,   722,   493, 
+    225,   661,   840,   547, 
+   -540,  -376,    14,   349, 
+    469,   721,   331,   162, 
+   -544,  -752,   -62,   -10, 
+    398,   -88,   724,   701, 
+    -19,  -533,   -94,   601, 
+    136,   -71,  -681,  -747, 
+   -166,  -344,   261,   -50, 
+    161,   -52,   485,   337, 
+  -1675,    50,   190,   -93, 
+  -2282,  -231,  -194,   -82, 
+    -95,  -595,  -154,   128, 
+    894,   501,   588,   457, 
+   -345,   206,   122,   110, 
+   -631,  -227,  -569,     3, 
+    408,   239,   397,   226, 
+   -197,    -2,   128,   491, 
+   1281,   904,   292,   215, 
+    538,   306,   259,   509, 
+   -677, -1047,    13,   321, 
+   -679,  -588,  -358,  -212, 
+   -558,   243,   646,   479, 
+    486,   342,   634,   532, 
+    107,   802,   331,   136, 
+   -112,  -398, -1031,  -286, 
+   -326,  -705,   288,   272, 
+   1299,  1144,  1178,   860, 
+   -423,   121,  -385,  -148, 
+   -295,  -302,  -834,  -819, 
+     16,   -24,  -201,  -476, 
+    555,    91,  -245,   294, 
+    -38,  -379,  -962, -1221, 
+  -1191, -1518,  -273,  -395, 
+   -390, -1013,  -645,   573, 
+  -1843, -1030,   505,   468, 
+    744,   947,   609,   493, 
+   -689, -1172,  -628,  -135, 
+  -1026,   195,   411,   196, 
+   1582,  1147,   575,   337, 
+  -1239,  -777,  -648,  -142, 
+    595,   825,   967,   735, 
+  -1206,  -970,   -81,  -342, 
+   -745,    13,   -72,   375, 
+    454,    19,  1407,   921, 
+  -1647,  -172,   861,   562, 
+    928,  1537,  1063,   740, 
+  -2472,  -952,   264,    82, 
+   -502,  -965, -1334,   123, 
+    867,  1236,   534,   171, 
+  -2320,  -460,   780,   363, 
+  -1190,  -617,   252,   -61, 
+   -174,    34,  1011,   788, 
+  -2333,   247,   423,   153, 
+    -16,  -355,   262,   449, 
+  -1576, -1073,  -544,  -371, 
+   -615,  -305,  1051,   805, 
+    687,   528,     6,  -182, 
+    935,   875,  1002,   809, 
+    199,   257,   126,    76, 
+   -584, -1138,   599,   556, 
+  -1105, -1391, -1591,  -519, 
+   -977, -1325,   108,   347, 
+   -722,  -975,   365,   101, 
+   -145,   681,   249,  -153, 
+      0,  -334,  -570,   159, 
+    412,   285,  -336,  -617, 
+   -953,  -966,   887,   689, 
+  -1251,    84,  -185,  -398, 
+   -592,   433,  1044,   653, 
+     85,   329,   -40,   361, 
+   -433,  -705,   466,   574, 
+   -154,   654,   592,   290, 
+   -167,    72,   349,   175, 
+    674,   297,   977,   720, 
+   1235,  1204,   757,   488, 
+   -400,  -269,   538,   372, 
+  -1350, -1387, -1194,   -91, 
+   1262,   876,   775,   700, 
+   -599,   -38,  -430,  -722, 
+   1976,  1630,   991,   608, 
+    111,   276,  -226,   -96, 
+   -947,  -388,   -11,    -7, 
+   -303,  -531,  -839,   338, 
+   1734,  1710,  1405,  1013, 
+   -516,  -855,  -645,   210, 
+   -688,  -416,   513,   230, 
+   -822,  -637, -1146,  -320, 
+   -952,  -658,  -694,   183, 
+   -114,  -623,   818,   674, 
+   -191,  -204,   731,   635, 
+     51,  1221,   883,   576, 
+   -954,  -431,   826,   598, 
+   -342,  -755,  -900,  -407, 
+  -1126,  -354,  -206,  -512, 
+   -547,  -810,  -357,  -620, 
+     66,   515,   -73,  -410, 
+   -872,  -945, -1444, -1227, 
+    191,   -17,  -544,  -231, 
+  -1540,  -544,  -901,  -886
+};
+
+/* first codebook for MR795 */
+
+const Word16 mr795_1_lsf[] = {
+   -890, -1550, -2541, 
+   -819,  -970,   175, 
+   -826, -1234,  -762, 
+   -599,   -22,   634, 
+   -811,  -987,  -902, 
+   -323,   203,    26, 
+   -383,  -235,  -781, 
+   -399,  1262,   906, 
+   -932, -1399, -1380, 
+   -624,    93,    87, 
+   -414,  -539,  -691, 
+     37,   633,   510, 
+   -387,  -476, -1330, 
+    399,    66,   263, 
+   -407,   -49,  -335, 
+   -417,  1041,  1865, 
+   -779, -1089, -1440, 
+   -746,  -858,   832, 
+   -581,  -759,  -371, 
+   -673,  -506,  2088, 
+   -560,  -634, -1179, 
+    271,   241,    14, 
+   -438,  -244,  -397, 
+    463,  1202,  1047, 
+   -606,  -797, -1438, 
+    -51,  -323,   481, 
+   -224,  -584,  -527, 
+    494,   881,   682, 
+   -433,  -306, -1002, 
+    554,   659,   222, 
+    171,  -160,  -353, 
+    681,  1798,  1565, 
+   -852, -1181, -1695, 
+   -336,  -666,   114, 
+   -581,  -756,  -744, 
+   -195,   375,   497, 
+   -465,  -804, -1098, 
+    154,   282,  -131, 
+    -50,  -191,  -719, 
+    323,   732,  1542, 
+   -722,  -819, -1404, 
+    105,  -250,   185, 
+   -178,  -502,  -742, 
+    321,   510,  1111, 
+   -323,  -567,  -966, 
+    127,   484,   338, 
+   -160,    52,  -338, 
+    732,  1367,  1554, 
+   -626,  -802, -1696, 
+   -286,  -586,   676, 
+   -695,  -343,  -370, 
+   -490,   295,  1893, 
+   -630,  -574, -1014, 
+    -80,   645,   -69, 
+     -6,  -318,  -364, 
+    782,  1450,  1038, 
+   -313,  -733, -1395, 
+    120,    60,   477, 
+   -264,  -585,  -123, 
+    711,  1245,   633, 
+    -91,  -355, -1016, 
+    771,   758,   261, 
+    253,    81,  -474, 
+    930,  2215,  1720, 
+   -808, -1099, -1925, 
+   -560,  -782,   169, 
+   -804, -1074,  -188, 
+   -626,   -55,  1405, 
+   -694,  -716, -1194, 
+   -660,   354,   329, 
+   -514,   -55,  -543, 
+    366,  1033,  1182, 
+   -658,  -959, -1357, 
+    -55,  -184,    93, 
+   -605,  -286,  -662, 
+    404,   449,   827, 
+   -286,  -350, -1263, 
+    628,   306,   227, 
+    -16,   147,  -623, 
+    186,   923,  2146, 
+   -674,  -890, -1606, 
+   -443,  -228,   339, 
+   -369,  -790,  -409, 
+    231,    86,  1469, 
+   -448,  -581, -1061, 
+    594,   450,  -177, 
+   -124,  -170,  -447, 
+    671,  1159,  1404, 
+   -476,  -667, -1511, 
+    -77,  -138,   716, 
+   -177,  -372,  -381, 
+    451,   934,   915, 
+   -250,  -432,  -822, 
+    272,   828,   446, 
+     26,    19,   -31, 
+    698,  1692,  2168, 
+   -646,  -977, -1924, 
+   -179,  -473,   268, 
+   -379,  -745,  -691, 
+     11,   127,  1033, 
+   -488,  -917,  -825, 
+     61,   323,   135, 
+    147,  -145,  -686, 
+    685,   786,  1682, 
+   -506,  -848, -1297, 
+     35,    90,   222, 
+    -23,  -346,  -670, 
+    455,   591,  1287, 
+   -203,  -593, -1086, 
+    652,   352,   437, 
+     39,    63,  -457, 
+    841,  1265,  2105, 
+   -520,  -882, -1584, 
+   -328,  -711,  1421, 
+   -596,  -342,   -70, 
+    209,   173,  1928, 
+   -423,  -598,  -921, 
+    421,   605,   -38, 
+     -2,  -245,  -127, 
+    896,  1969,  1135, 
+   -379,  -518, -1579, 
+    173,   118,   753, 
+    -55,  -381,   -52, 
+    985,  1021,   753, 
+     -2,  -291,  -891, 
+    753,   992,   423, 
+    264,   131,  -196, 
+    895,  2274,  2543, 
+   -635, -1088, -2499, 
+   -529,  -982,   526, 
+   -764,  -830,  -548, 
+   -436,   316,   599, 
+   -675,  -940,  -746, 
+    -57,   236,   -11, 
+   -201,   -81,  -798, 
+     16,   845,  1558, 
+   -737,  -985, -1212, 
+   -468,    17,   290, 
+   -279,  -584,  -700, 
+    183,   822,   705, 
+   -265,  -492, -1187, 
+    421,   152,   468, 
+   -390,   166,  -268, 
+     39,  1550,  1868, 
+   -635,  -966, -1571, 
+   -453,  -492,   910, 
+   -284, -1027,   -75, 
+   -181,  -133,  1852, 
+   -445,  -624, -1174, 
+    420,   367,   -49, 
+   -389,  -212,  -169, 
+    707,  1073,  1208, 
+   -539,  -710, -1449, 
+     83,  -163,   484, 
+   -236,  -543,  -355, 
+    338,  1175,   814, 
+   -246,  -309,  -958, 
+    606,   760,    60, 
+    166,    -8,  -163, 
+   -306,  1849,  2563, 
+   -747, -1025, -1783, 
+   -419,  -446,   209, 
+   -718,  -566,  -534, 
+   -506,   693,   857, 
+   -463,  -697, -1082, 
+    325,   431,  -206, 
+    -15,    -8,  -763, 
+    545,   919,  1518, 
+   -611,  -783, -1313, 
+    256,   -55,   208, 
+   -165,  -348,  -662, 
+    321,   680,   930, 
+   -326,  -429,  -951, 
+    484,   446,   570, 
+   -197,    72,   -73, 
+    909,  1455,  1741, 
+   -563,  -737, -1974, 
+   -124,  -416,   718, 
+   -478,  -404,  -314, 
+    -16,   446,  1636, 
+   -551,  -537,  -750, 
+    -58,   638,   214, 
+     55,  -185,  -271, 
+   1148,  1301,  1212, 
+   -483,  -671, -1264, 
+    117,   285,   543, 
+   -204,  -391,  -111, 
+    513,  1538,   854, 
+   -114,  -190,  -978, 
+    877,   595,   464, 
+    260,   260,  -311, 
+    748,  2283,  2216, 
+   -517,  -945, -2171, 
+   -326,  -708,   378, 
+   -812,  -691,  -232, 
+   -560,   687,  1409, 
+   -732,  -690,  -836, 
+   -359,   645,   386, 
+   -265,    62,  -678, 
+    145,  1644,  1208, 
+   -555,  -988, -1233, 
+    -78,    14,   114, 
+   -327,  -358,  -489, 
+    392,   677,   697, 
+   -201,  -236, -1140, 
+    693,   449,   178, 
+   -243,   256,  -433, 
+    611,  1385,  2456, 
+   -612,  -901, -1464, 
+   -307,   -17,   499, 
+   -315,  -667,  -254, 
+    256,   428,  1463, 
+   -486,  -422, -1056, 
+    655,   370,    18, 
+   -102,  -185,  -276, 
+    755,  1578,  1335, 
+   -488,  -603, -1418, 
+    182,   -93,   870, 
+    -73,  -458,  -348, 
+    835,   862,   957, 
+   -282,  -333,  -746, 
+    547,   839,   428, 
+    273,   -89,    13, 
+    940,  1708,  2576, 
+   -418, -1084, -1758, 
+    -44,  -358,   259, 
+   -497,  -643,  -560, 
+     99,   557,   961, 
+   -421,  -766,  -917, 
+    295,   326,   184, 
+    175,    15,  -626, 
+    532,   878,  1981, 
+   -443,  -768, -1275, 
+    221,   156,   268, 
+     39,  -363,  -505, 
+    695,   772,  1140, 
+   -162,  -459,  -912, 
+    709,   444,   658, 
+     25,   303,  -312, 
+   1268,  1410,  1715, 
+   -297,  -766, -1836, 
+   -263,  -108,  1070, 
+   -406,   -13,  -129, 
+     57,   438,  2734, 
+   -374,  -487,  -835, 
+    304,   696,   164, 
+    104,  -235,     5, 
+   1611,  1900,  1399, 
+   -229,  -582, -1325, 
+    405,   192,   817, 
+    -87,  -438,   111, 
+   1028,  1199,   993, 
+     68,  -175,  -934, 
+   1033,  1117,   451, 
+    478,   200,  -248, 
+   2127,  2696,  2042, 
+   -835, -1323, -2131, 
+   -799,  -692,   466, 
+   -812, -1032,  -469, 
+   -622,   288,   920, 
+   -701,  -841, -1070, 
+   -411,   512,     8, 
+   -390,   -91,  -744, 
+    -30,  1043,  1161, 
+   -822, -1148, -1156, 
+   -294,   -46,   110, 
+   -411,  -374,  -678, 
+    214,   531,   668, 
+   -406,  -420, -1194, 
+    487,   232,   303, 
+   -318,    91,  -472, 
+    123,  1232,  2445, 
+   -722,  -952, -1495, 
+   -738,  -675,  1332, 
+   -543,  -606,  -211, 
+    -95,   -98,  1508, 
+   -549,  -514, -1193, 
+    473,   211,    73, 
+   -288,  -112,  -389, 
+    537,  1332,  1258, 
+   -567,  -755, -1545, 
+     71,  -283,   632, 
+   -170,  -481,  -493, 
+    681,  1002,   817, 
+   -356,  -331,  -877, 
+    419,   706,   346, 
+    241,   -34,  -326, 
+    377,  1950,  1883, 
+   -727, -1075, -1625, 
+   -233,  -543,   116, 
+   -524,  -806,  -585, 
+    -73,   478,   729, 
+   -288,  -925, -1143, 
+    173,   447,   -52, 
+     68,  -229,  -606, 
+    449,   529,  1797, 
+   -591,  -875, -1363, 
+    183,  -144,   324, 
+   -103,  -452,  -666, 
+    623,   488,  1176, 
+   -238,  -511, -1004, 
+    326,   552,   458, 
+    136,   108,  -319, 
+    626,  1343,  1883, 
+   -490,  -646, -1730, 
+   -186,  -449,   984, 
+   -738,   -76,  -170, 
+   -550,   755,  2560, 
+   -496,  -510,  -947, 
+    210,   694,   -52, 
+     84,  -322,  -199, 
+   1090,  1625,  1224, 
+   -376,  -603, -1396, 
+    343,    74,   632, 
+   -175,  -502,   -32, 
+    972,  1332,   734, 
+     52,  -295, -1113, 
+   1065,   918,   160, 
+    393,   107,  -397, 
+   1214,  2649,  1741, 
+   -632, -1201, -1891, 
+   -719,  -277,   353, 
+   -651,  -880,  -122, 
+   -211,   209,  1338, 
+   -562,  -714, -1059, 
+   -208,   388,   159, 
+   -320,   -61,  -551, 
+    293,  1092,  1443, 
+   -648,  -865, -1253, 
+    -49,  -143,   305, 
+   -401,  -227,  -585, 
+    561,   532,   927, 
+   -117,  -443, -1188, 
+    507,   436,   292, 
+    -79,   233,  -458, 
+    671,  1025,  2396, 
+   -633,  -842, -1525, 
+   -308,  -286,   640, 
+   -373,  -621,  -407, 
+    418,   253,  1305, 
+   -315,  -581, -1137, 
+    572,   685,  -281, 
+     61,   -68,  -371, 
+    991,  1101,  1498, 
+   -493,  -683, -1362, 
+    -47,   164,   704, 
+   -256,  -314,  -268, 
+    631,   949,  1052, 
+   -118,  -348,  -833, 
+     68,  1180,   568, 
+    152,   117,    34, 
+   1113,  1902,  2239, 
+   -601,  -959, -1706, 
+   -143,  -489,   480, 
+   -332,  -655,  -574, 
+     54,   353,  1192, 
+   -462,  -652,  -796, 
+    150,   549,   112, 
+    195,  -111,  -515, 
+    679,  1108,  1647, 
+   -558,  -749, -1217, 
+     -9,   272,   341, 
+    -53,  -265,  -535, 
+    489,   843,  1298, 
+   -120,  -482, -1032, 
+    632,   543,   408, 
+    179,   306,  -526, 
+   1124,  1464,  2244, 
+   -417,  -786, -1562, 
+   -224,  -384,  1364, 
+   -377,  -459,   -25, 
+    385,   489,  2174, 
+   -332,  -651,  -829, 
+    544,   553,    61, 
+     22,  -113,   -89, 
+   1128,  1725,  1524, 
+   -216,  -373, -1653, 
+    161,   316,   908, 
+   -165,  -222,   -67, 
+   1362,  1175,   789, 
+     73,  -252,  -767, 
+    738,   932,   616, 
+    362,   246,  -126, 
+    787,  2654,  3027, 
+   -691, -1106, -2190, 
+   -565,  -588,   524, 
+   -590,  -979,  -490, 
+   -263,   397,   982, 
+   -577,  -837,  -945, 
+    -22,   435,   -49, 
+   -190,  -118,  -629, 
+    -88,  1240,  1513, 
+   -636, -1051, -1019, 
+   -291,   189,   259, 
+   -257,  -470,  -629, 
+    145,   945,   894, 
+   -326,  -364, -1094, 
+    543,   260,   630, 
+   -202,   189,  -209, 
+    357,  1379,  2091, 
+   -569, -1075, -1449, 
+   -714,  -239,   919, 
+   -420,  -705,   -84, 
+   -109,  -114,  2407, 
+   -413,  -529, -1177, 
+    482,   368,   131, 
+   -186,   -72,  -131, 
+    861,  1255,  1220, 
+   -611,  -658, -1341, 
+    227,  -121,   631, 
+   -176,  -489,  -218, 
+    745,  1175,   957, 
+   -321,  -148,  -936, 
+    671,   966,   216, 
+    340,    -3,  -143, 
+    469,  1848,  2437, 
+   -729,  -961, -1683, 
+   -213,  -254,   321, 
+   -511,  -438,  -521, 
+   -126,   725,   903, 
+   -340,  -685, -1032, 
+    316,   480,    20, 
+     23,   -89,  -551, 
+    353,  1051,  1789, 
+   -544,  -757, -1364, 
+    298,   -25,   436, 
+   -100,  -392,  -519, 
+    467,   754,  1078, 
+   -210,  -398, -1078, 
+    620,   658,   630, 
+     33,   147,  -178, 
+    921,  1687,  1921, 
+   -325,  -528, -1978, 
+      2,  -285,   910, 
+   -371,  -490,  -230, 
+      0,   597,  2010, 
+   -496,  -395,  -834, 
+     37,   945,   245, 
+    181,  -160,  -144, 
+   1481,  1373,  1357, 
+   -355,  -601, -1270, 
+    298,   322,   672, 
+   -193,  -336,    77, 
+   1089,  1533,   922, 
+    177,   -39, -1125, 
+    996,   781,   536, 
+    456,   366,  -432, 
+   1415,  2440,  2279, 
+   -466,  -758, -2325, 
+   -303,  -509,   387, 
+   -727,  -557,    66, 
+   -145,   643,  1248, 
+   -544,  -676,  -916, 
+   -225,   862,   588, 
+   -152,    40,  -533, 
+    423,  1423,  1558, 
+   -572,  -843, -1145, 
+   -128,    85,   461, 
+   -238,  -257,  -584, 
+    605,   748,   861, 
+     24,  -202, -1409, 
+    797,   487,   303, 
+   -181,   364,  -182, 
+    616,  1378,  2942, 
+   -494,  -852, -1441, 
+   -292,    61,   812, 
+    -84,  -723,  -182, 
+    555,   532,  1506, 
+   -365,  -493, -1057, 
+    822,   588,    11, 
+    -14,   -18,  -230, 
+   1001,  1401,  1451, 
+   -474,  -569, -1292, 
+    302,    62,  1062, 
+    -70,  -376,  -222, 
+    982,   974,  1149, 
+   -196,  -234,  -795, 
+    479,  1098,   499, 
+    362,    58,    70, 
+   1147,  2069,  2857, 
+   -487,  -878, -1824, 
+     73,  -288,   348, 
+   -358,  -500,  -508, 
+    199,   721,  1242, 
+    -78,  -697,  -795, 
+    361,   536,   196, 
+    374,   110,  -735, 
+    847,  1051,  1896, 
+   -366,  -713, -1182, 
+    315,   320,   429, 
+     72,  -215,  -450, 
+    759,   886,  1363, 
+    -30,  -428,  -834, 
+    861,   627,   796, 
+    118,   468,  -279, 
+   1355,  1883,  1893, 
+   -188,  -642, -1612, 
+     63,  -175,  1198, 
+   -418,  -211,    51, 
+    414,   587,  2601, 
+   -234,  -557,  -858, 
+    424,   889,   222, 
+    136,  -101,    83, 
+   1413,  2278,  1383, 
+    -84,  -445, -1389, 
+    414,   313,  1045, 
+     29,  -343,    65, 
+   1552,  1647,   980, 
+    183,   -91,  -829, 
+   1273,  1413,   360, 
+    553,   272,  -107, 
+   1587,  3149,  2603
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libtwamr/q_plsf3_tab.h	Fri Apr 19 00:57:15 2024 +0000
@@ -0,0 +1,34 @@
+/*
+ * In ETSI EFR code there was only q_plsf_5.tab that was problematically
+ * multi-included in many source files; in the AMR version there is also
+ * q_plsf_3.tab with a similar situation.  Handle it similarly.
+ */
+
+#ifndef	q_plsf3_tab_h
+#define	q_plsf3_tab_h
+
+#include "typedef.h"
+
+#define PAST_RQ_INIT_SIZE 8
+
+extern const Word16 past_rq_init[80];
+extern const Word16 mean_lsf3[10];
+extern const Word16 pred_fac[10];
+
+#define DICO31_SIZE  256
+#define DICO32_SIZE  512
+#define DICO33_SIZE  512
+
+extern const Word16 dico1_lsf3[];
+extern const Word16 dico2_lsf3[];
+extern const Word16 dico3_lsf3[];
+
+#define MR515_3_SIZE  128
+
+extern const Word16 mr515_3_lsf[];
+
+#define MR795_1_SIZE  512
+
+extern const Word16 mr795_1_lsf[];
+
+#endif