Git init
[external/opencore-amr.git] / opencore / codecs_v2 / audio / gsm_amr / amr_wb / dec / src / qpisf_2s_tab.cpp
1 /* ------------------------------------------------------------------
2  * Copyright (C) 1998-2009 PacketVideo
3  *
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
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
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
13  * express or implied.
14  * See the License for the specific language governing permissions
15  * and limitations under the License.
16  * -------------------------------------------------------------------
17  */
18 /****************************************************************************************
19 Portions of this file are derived from the following 3GPP standard:
20
21     3GPP TS 26.173
22     ANSI-C code for the Adaptive Multi-Rate - Wideband (AMR-WB) speech codec
23     Available from http://www.3gpp.org
24
25 (C) 2007, 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 ****************************************************************************************/
29 /*-------------------------------------------------------------------*
30  *                         qpisf_2s_tab.cpp
31  *-------------------------------------------------------------------*
32  * Quantization tables for two-stage of ISFs (split by 2 in 1st stage)
33  * Version whith prediction MU = 0.25
34  *-------------------------------------------------------------------*/
35
36 #include "qisf_ns.h"
37 #include "qpisf_2s.h"
38
39
40
41
42 /* means of ISFs */
43 const int16 mean_isf[ORDER] =
44 {
45
46     738,  1326,  2336,  3578,  4596,  5662,  6711,  7730,
47     8750,  9753, 10705, 11728, 12833, 13971, 15043,  4037
48 };
49
50 /* 46 bits */
51 /*
52  *  isf codebooks:  two-stage VQ with split-by-5 in 2nd stage
53  *
54  *  codebook   vector dimension    number of vectors
55  *  ~~~~~~~~   ~~~~~~~~~~~~~~~~    ~~~~~~~~~~~~~~~~~
56  *     1_1            9                  256
57  *     1_2            7                  256
58  *     2_1            3                  64
59  *     2_2            3                  128
60  *     2_3            3                  128
61  *     2_4            3                  32
62  *     2_5            4                  32
63  */
64
65 /*
66  * 1st stage codebook; 1st split:   isf0 to isf8
67  */
68
69 const int16 dico1_isf[SIZE_BK1*9] =
70 {
71
72     579,  1081,  1035,   390,     3,  -263,  -198,   -82,    38,
73     18,   -68,   -12,   313,   761,   405,   249,   111,   -76,
74     740,  1263,  1292,  1006,   997,  1019,  1017,   976,   923,
75     -91,   827,   948,   648,   613,   535,   522,   490,   421,
76     41,   -44,  -281,  -472,   652,   534,   193,   135,   -90,
77     41,  -121,  -356,   -60,   663,   307,    61,   -48,  -344,
78     557,   946,  1049,   867,   846,   990,  1112,  1262,  1241,
79     -118,  -204,   328,   512,   870,   793,   610,   402,   186,
80     156,   293,    74,  -338,  -475,  -897,  -594,  -161,  -497,
81     226,   131,  -138,   307,   169,  -271,  -164,  -387,  -624,
82     62,   -32,   -61,  -252,  -541,  -828, -1027,  -523,  -662,
83     102,   -61,   141,   112,  -270,  -251,  -541,    25,  -150,
84     6,  -132,  -356,  -686,   -96,  -322,  -522,   -31,  -326,
85     -36,  -209,  -521,  -229,   307,  -132,    -5,   -99,  -384,
86     60,   -51,  -237,  -668,  -973,  -407,  -708,   -75,  -172,
87     26,  -138,  -266,   111,  -302,    43,  -278,  -356,  -359,
88     570,   822,   496,  -154,  -312,   -92,   137,   279,   371,
89     -146,   368,   409,    68,     6,    77,   167,   202,   162,
90     633,   898,   996,   756,   662,   683,   783,   909,   996,
91     -103,   294,   607,   415,   483,   462,   480,   431,   408,
92     -120,  -338,  -612,  -524,   584,   331,    92,   433,   276,
93     -178,  -293,  -154,   -41,   269,   100,    -9,   213,   160,
94     830,   736,   278,   820,  1254,   686,   712,  1039,   473,
95     -218,  -304,   463,   454,   397,   273,   202,   286,   273,
96     -232,     7,     6,  -388,  -472,  -427,  -378,  -167,  -100,
97     -294,  -183,   134,   -47,   101,   -88,   -84,  -117,    -3,
98     57,    17,  -202,  -634,  -989, -1119,  -533,   176,   -36,
99     120,   -28,    23,   111,  -319,   318,   -22,   -77,   266,
100     -271,  -464,  -434,  -658,  -640,  -385,  -385,   -99,   -69,
101     -198,  -259,  -266,   -44,   -39,  -139,  -137,   171,    66,
102     9,  -145,  -377,  -846, -1000,  -111,  -325,   342,   135,
103     -81,  -286,  -380,   192,   -57,   307,    76,   -24,  -140,
104     677,   702,   247,    56,   249,   141,  -105,  -236,   -99,
105     36,   -39,   -69,   348,   198,   -93,   322,    91,   -72,
106     503,   885,  1508,  1307,  1282,  1172,  1119,  1209,  1061,
107     416,   719,   989,  1227,  1001,  1052,   954,   741,  1044,
108     -127,  -376,  -657,   139,   623,   223,   501,   306,   220,
109     -113,  -384,  -796,   504,   438,    85,   213,   -83,  -194,
110     585,  1132,  1233,  1091,  1247,  1433,  1512,  1448,  1314,
111     -174,  -422,     7,  1155,  1089,  1182,  1003,   945,   806,
112     8,  -126,  -317,  -103,  -351,  -695,   -98,  -268,  -537,
113     33,  -103,  -290,   167,   -39,  -407,    44,  -208,  -375,
114     104,   -23,   -64,  -291,  -637,  -851, -1084,   -61,  -112,
115     -75,  -306,  -434,   218,  -148,  -354,  -680,  -133,  -216,
116     -121,  -377,  -718,   -97,  -130,  -361,  -156,  -379,  -599,
117     -56,  -254,  -586,   235,   157,  -214,    11,  -260,  -149,
118     -124,  -267,  -397,  -580,  -593,  -527,  -805,  -385,   346,
119     -193,  -440,  -708,  -351,  -141,  -255,  -499,  -147,  -185,
120     448,   660,   494,   208,   509,   461,   338,   291,   149,
121     -223,    88,   335,   159,   212,   191,   286,   308,   205,
122     -31,   469,   803,   659,   619,   658,   843,   987,  1113,
123     -171,  -242,   514,   362,   295,   524,   552,   694,   585,
124     -64,  -308,  -448,   -21,   284,   786,   446,   289,    92,
125     -218,  -390,    -7,   169,   206,   330,   352,   408,   358,
126     -36,   702,   959,   859,   861,  1115,  1269,  1357,  1305,
127     -133,  -341,   -65,   678,   417,   440,   486,   518,   780,
128     33,   -44,  -191,  -344,  -461,  -755,  -201,   217,   -31,
129     -353,  -547,   -44,   123,   -61,   -68,   -79,    29,    60,
130     73,   -57,  -406,  -766, -1243, -1203,   240,   400,   165,
131     -73,  -282,  -601,  -213,  -171,  -375,   332,    35,  -103,
132     -29,  -207,  -553,  -476,  -638,  -908,   172,   -22,  -135,
133     -192,  -239,  -164,  -103,  -111,   -47,   153,   125,   110,
134     -1,  -203,  -570, -1030, -1424,  -535,   155,     1,   147,
135     -333,  -653,  -865,  -197,  -158,   -21,   -44,    95,   108,
136     389,   588,   490,    33,  -237,  -524,  -628,  -136,  -260,
137     40,  -177,  -462,   453,   862,   380,   131,  -130,  -405,
138     842,  1678,  1841,  1549,  1474,  1256,  1082,   905,   742,
139     370,  1216,  1768,  1633,  1212,   636,    22,  -330,    71,
140     -76,  -281,  -741,  -742,   898,   619,   277,    71,  -222,
141     -32,  -265,  -556,   -25,   994,   682,   305,   126,  -165,
142     73,   738,   893,   968,   993,  1768,  2273,  1840,  1391,
143     -69,  -349,  -585,   234,  1158,   903,   626,   510,   251,
144     -1,   -99,  -272,  -210,  -603,  -351,  -540,  -811,  -383,
145     -16,  -230,  -504,   410,   149,  -205,  -343,  -651,  -639,
146     103,    -9,  -227,  -205,  -562,  -781, -1079, -1208,  -156,
147     143,    63,  -135,   -67,  -317,  -602,  -784, -1154,  -640,
148     -144,  -391,  -674,  -622,  -200,  -254,  -660,  -947,  -395,
149     -40,  -250,  -625,    27,   543,    94,  -131,  -386,  -673,
150     -123,  -371,  -757,  -451,  -564,  -614,  -415,  -711,   -35,
151     -116,  -309,  -593,  -268,   239,   -33,  -338,  -650,  -135,
152     94,   251,   554,    57,  -312,  -423,  -154,   -57,   235,
153     -268,   -71,   381,   114,   -44,   -87,   125,   173,   133,
154     1513,  1714,  1238,   534,   276,   315,   461,   459,   508,
155     -131,   -19,  1149,   670,   486,   356,   309,   369,   296,
156     -223,  -501,  -899,  -722,   -70,     6,   131,   310,   394,
157     -99,  -303,  -517,   249,    64,   -53,   135,   -11,   453,
158     -147,  -399,  -730,  -401,   817,   738,   802,   749,   575,
159     -154,  -435,  -739,   800,   593,   366,   529,   318,   326,
160     -224,    45,   -39,  -387,  -515,  -518,  -608,  -384,  -321,
161     -315,  -377,   143,  -101,  -113,  -377,  -177,  -144,   -12,
162     117,    40,  -239,  -651, -1051,  -581,  -737,  -990,  -328,
163     26,   -50,  -157,   -23,  -453,  -283,  -531,  -546,   192,
164     -252,  -501,  -743,  -589,  -627,  -499,  -328,  -118,   -72,
165     -324,  -494,  -244,  -306,  -144,  -177,  -262,  -135,   -78,
166     -36,  -234,  -519,  -961, -1290,  -314,  -479,  -371,   -45,
167     -95,  -292,  -535,    -8,  -300,   112,  -164,  -277,   198,
168     -99,  -128,   880,   836,   579,   351,    23,   -95,  -217,
169     -27,  -258,   124,  1011,   597,   425,   144,     7,   -73,
170     421,  1293,  1640,  1623,  1742,  1617,  1499,  1284,  1006,
171     -95,   752,  1680,  1569,  1618,  1436,  1200,   980,   712,
172     -69,  -300,  -683,  -435,  1132,   899,   504,   332,   109,
173     -74,  -323,  -637,   563,  1074,   608,   371,   105,   -49,
174     -78,   831,  1194,  1110,  1378,  1481,  1492,  1365,  1217,
175     -259,  -121,  1440,  1334,  1628,  1490,  1438,  1223,   933,
176     -82,  -306,  -613,  -222,  -378,  -675,  -545,  -671,  -845,
177     53,  -124,  -347,   422,    52,  -125,  -270,  -529,     9,
178     79,   -89,  -320,  -662,  -999, -1199, -1243,  -676,  -297,
179     -68,  -273,  -611,   137,  -146,  -397,  -627,  -845,  -220,
180     -112,  -346,  -797,  -826,   234,  -132,  -188,  -278,  -522,
181     -159,  -405,  -734,  -419,   293,    74,  -167,  -167,   184,
182     -153,  -437,  -833, -1080,  -336,  -472,  -561,  -340,  -253,
183     -169,  -423,  -820,  -904,  -131,   -19,  -346,  -604,    31,
184     33,   -31,   312,    62,  -148,    49,   -59,   564,   486,
185     -306,  -333,   194,   -44,    67,    72,   147,   205,   243,
186     -207,   -49,  1360,   983,   969,   991,  1014,  1110,   973,
187     -211,  -172,   883,   627,   711,   674,   705,   798,   746,
188     -88,  -325,  -763,  -974,   687,   908,   514,   382,   172,
189     -292,  -612,  -805,    63,   131,   270,   259,   352,   348,
190     -235,   -84,   955,   818,  1120,  1289,  1559,  1480,  1285,
191     -180,  -461,  -614,   657,   691,   745,   854,   783,   713,
192     -97,  -309,  -477,  -614,  -777,  -734,  -768,  -526,  -472,
193     -344,  -476,   -35,  -169,    49,   -77,  -150,  -240,  -141,
194     -52,  -268,  -639,  -919, -1278, -1113,  -342,  -333,  -151,
195     -68,  -242,  -585,   -73,  -209,  -478,  -159,  -429,   133,
196     -197,  -499, -1005, -1268,  -272,  -224,  -105,   -67,    17,
197     -363,  -618,  -414,  -116,   -62,    20,    10,   116,   108,
198     -195,  -475,  -906, -1260,  -891,  -441,  -277,  -142,   -28,
199     -226,  -519,  -950,  -700,  -275,  -266,  -116,  -105,    82,
200     404,   511,   520,   327,    17,  -194,  -333,  -536,  -586,
201     -114,  -130,   276,   237,   204,   342,   135,   -16,  -111,
202     670,  1208,  1168,   860,   742,   601,   528,   403,   309,
203     397,   621,   966,   752,   579,   398,   400,   329,   252,
204     191,   180,  -137,  -467,   272,   106,   -95,    17,  -192,
205     -80,  -290,  -626,   194,   598,   196,    21,  -281,    77,
206     510,   864,  1108,   807,   939,   902,   925,   717,   481,
207     137,   367,   534,   764,   670,   382,   296,   153,    84,
208     303,   497,   144,   -85,  -125,  -539,  -482,  -464,  -764,
209     233,   347,    68,  -147,   169,  -210,  -242,  -226,  -482,
210     307,   422,   154,  -175,  -386,  -722,  -724,  -904, -1015,
211     309,   308,   160,   -60,  -470,  -420,  -598,  -791,  -219,
212     68,   121,  -137,  -560,  -146,  -446,  -515,  -494,  -729,
213     130,    53,  -227,    46,   474,    32,  -161,  -192,  -490,
214     213,   164,   -71,  -465,  -876,  -161,  -456,  -587,   -48,
215     218,   117,    39,   177,  -194,   -88,  -226,  -418,    50,
216     210,   547,   569,   279,   121,   -44,   -50,    10,   -84,
217     58,   140,   182,    -5,   267,   117,   106,   211,   198,
218     539,   835,   913,   719,   617,   544,   591,   565,   642,
219     153,   559,   872,   460,   222,   108,   188,   180,   183,
220     158,   119,   284,  -153,  -271,   229,    87,   110,   -57,
221     -183,    82,   118,    21,    13,    40,   118,   191,   185,
222     162,   889,   654,   108,   -34,   244,   488,   561,   532,
223     163,    56,   609,   341,    50,   329,    68,   266,   218,
224     100,   206,    18,  -304,  -107,  -436,  -487,   -65,  -306,
225     -86,   154,   134,   -30,   -45,   -73,  -104,   -80,   -96,
226     245,   330,    10,  -440,  -849, -1082,    79,    40,  -265,
227     196,   372,   272,  -181,  -493,  -389,   275,    80,   -59,
228     2,   -12,  -246,  -505,  -100,  -436,    21,  -187,  -431,
229     -221,   -48,    36,  -271,  -186,  -147,  -109,    26,    71,
230     213,   140,    72,  -351,  -620,   -84,  -363,    69,    46,
231     91,   167,    -3,   -95,   -99,  -105,   -48,   114,   147,
232     259,   249,   172,   607,   406,    52,    59,  -189,  -320,
233     115,   -85,   -54,   574,   128,   226,   -59,  -253,   130,
234     -62,  1033,  1308,  1035,  1127,  1098,  1029,   961,   823,
235     39,   364,   757,   940,   728,   660,   659,   583,   770,
236     -115,  -338,  -760,  -471,   394,    37,   441,   178,     6,
237     -57,  -305,  -525,   796,   453,   188,    -4,  -114,   248,
238     71,   444,   797,   731,  1096,  1157,  1222,  1029,   811,
239     135,   359,   551,   425,   749,   815,   874,   704,   502,
240     132,   247,     0,  -206,  -449,  -750,  -258,  -514,  -633,
241     248,   249,    91,   121,  -195,  -499,   -90,  -282,  -435,
242     78,    20,  -277,  -623,  -983, -1224,  -415,  -458,  -639,
243     347,   509,   208,  -179,  -464,  -728,   -76,  -237,  -486,
244     -103,  -343,  -756,  -713,  -265,  -609,  -191,  -398,  -636,
245     -121,  -383,  -749,   567,   252,   -36,  -354,  -417,   -50,
246     204,   100,  -149,  -650, -1081,   -47,    -7,  -263,   111,
247     -46,  -180,  -267,  -324,  -562,  -394,  -692,   398,   292,
248     482,   670,   683,   624,   442,   165,   116,    36,  -149,
249     108,   247,   291,   247,   355,   122,   109,   224,   296,
250     -14,   945,   990,   801,   755,   815,   847,   913,   892,
251     292,   349,   725,   482,   388,   329,   429,   620,   667,
252     -34,   197,   213,  -127,    84,   494,   620,   575,   375,
253     126,   207,   172,   167,   362,   202,   296,   395,   455,
254     -6,   250,   539,   467,   636,   801,  1149,  1287,  1118,
255     27,   240,   369,   280,   440,   411,   634,   892,   953,
256     159,   170,   -58,  -395,  -797,  -690,    77,  -211,  -334,
257     -5,   -28,   -13,   -74,  -335,  -603,   300,    88,  -205,
258     82,   -33,  -364,  -698, -1203, -1153,   110,  -146,  -289,
259     113,     1,  -243,  -588,  -994,  -496,   414,   160,    42,
260     -56,  -247,  -440,  -693,  -996,  -479,    11,  -178,  -357,
261     -151,  -353,  -327,  -211,  -340,   141,    65,   425,   453,
262     34,  -169,  -455,  -932, -1215,   138,   499,   256,   324,
263     68,   139,   -15,  -547,  -478,    17,   306,   502,   481,
264     -32,  -134,   445,   129,  -143,  -244,  -503,  -507,  -599,
265     61,  -140,  -345,   496,   458,    -2,    20,  -227,  -514,
266     394,  1765,  1666,  1339,  1117,   806,   642,   479,   380,
267     215,   519,   920,  1053,  1090,   791,   528,   290,   155,
268     -54,  -233,  -647,  -602,   639,   294,    -2,  -167,  -442,
269     -78,  -315,  -791,  -113,   820,   403,   158,  -116,  -356,
270     529,  1851,  2003,  1228,   622,   -41,  -416,   344,   819,
271     -105,  -379,  -236,  1224,   893,   749,   568,   356,   214,
272     -17,  -199,  -144,    50,  -283,  -247,  -578,  -846, -1087,
273     69,   -11,  -381,  -206,   209,  -284,  -387,  -416,  -716,
274     39,    -5,  -145,  -374,  -682,  -909, -1074, -1169, -1066,
275     287,   226,    67,  -221,  -662,  -171,  -421,  -642,  -707,
276     -132,  -348,  -538,  -448,   -20,    -4,  -354,  -748,  -933,
277     4,   -75,  -289,  -598,   317,    52,  -208,  -297,  -559,
278     -88,  -264,  -358,  -589,  -631,  -248,  -523,  -822, -1071,
279     70,    -8,    54,  -314,  -515,    92,  -146,  -274,  -493,
280     199,    62,   391,   158,  -141,    71,  -219,  -203,  -207,
281     152,    40,   329,   162,   -29,    48,  -149,   108,   127,
282     635,  1058,   883,   492,   372,   312,   317,   274,   241,
283     267,   722,  1256,   882,   625,   248,     8,   -81,   -60,
284     -58,  -138,  -291,  -600,   -12,    -2,   -39,   147,   117,
285     -107,  -345,  -513,   459,    76,    92,  -272,   388,   262,
286     362,   516,   203,  -409,  -716,  -831,  -331,   185,   209,
287     -117,  -391,  -298,   671,   292,   538,   257,   166,   -38,
288     -102,  -319,  -194,  -283,  -573,  -262,  -579,  -219,  -444,
289     -235,    78,    11,  -168,  -101,  -229,  -263,  -321,  -123,
290     70,    50,  -170,  -599,  -996,  -588,  -263,  -516,  -455,
291     394,   363,   229,  -136,  -538,    21,  -183,  -348,  -201,
292     -124,  -368,  -640,  -879,  -847,  -209,  -409,  -494,  -515,
293     -127,  -341,  -541,  -425,  -510,   -10,  -252,  -473,  -291,
294     84,   -69,  -201,  -676,  -868,   103,  -311,  -132,  -320,
295     5,  -173,  -188,  -297,  -628,   197,   -57,     7,   -11,
296     49,  -160,    56,   558,   111,    33,  -311,  -440,  -463,
297     -1,  -246,  -307,   862,   453,   139,  -170,  -355,  -232,
298     279,   966,  1642,  1478,  1463,  1123,   795,   525,   339,
299     -197,   -38,  1702,  1331,  1252,   950,   692,   504,   426,
300     -108,  -344,  -861, -1172,   444,   354,    88,   -46,  -220,
301     -53,  -321,  -494,  1113,   744,   364,   198,   -34,   -75,
302     457,   955,  1177,  1214,  1427,  1457,  1345,   917,   539,
303     -69,   199,   897,  1140,  1343,  1183,   977,   742,   522,
304     122,    44,  -269,    27,  -155,  -562,  -307,  -590,  -773,
305     154,    42,  -160,   252,  -129,  -305,  -471,  -733,  -371,
306     135,   185,   -82,  -416,  -722,  -913,  -504,  -743,  -880,
307     149,   214,   -84,  -329,  -680,  -835,  -426,  -661,   -81,
308     -128,  -380,  -735,  -998,  -337,    17,  -182,  -467,  -697,
309     -84,  -290,  -510,  -592,    13,   440,   154,   -38,  -279,
310     70,   -61,  -246,  -727, -1047,   -80,  -381,  -535,  -704,
311     178,    -2,  -146,  -670,  -938,   482,   138,    63,    65,
312     -11,    15,   772,   443,   142,   -20,  -209,  -126,  -161,
313     -32,  -249,    95,   552,   124,    30,  -343,    82,   -86,
314     148,   751,  1515,  1105,   867,   606,   474,   448,   399,
315     -163,  -257,   899,  1097,   906,   751,   502,   390,   294,
316     -51,  -258,  -447,  -806,  -368,   763,   464,   364,   183,
317     -166,  -374,  -367,    87,    35,   399,   418,   856,   833,
318     -205,  -310,   588,   778,   785,  1065,  1118,  1245,  1157,
319     -173,  -312,   107,   345,   400,   790,   870,  1113,  1001,
320     -7,  -120,  -387,  -410,  -614,  -943,  -226,  -384,  -491,
321     -203,  -288,   -51,  -331,   -90,  -178,  -408,  -573,  -338,
322     56,   -29,  -273,  -627, -1041,  -798,  -247,  -467,   148,
323     66,    -2,  -205,  -205,  -575,  -349,   -57,  -352,   -58,
324     -45,  -225,  -471,  -924,  -497,    77,   -32,    44,  -135,
325     -277,  -491,  -497,  -502,  -424,  -202,  -137,    77,    96,
326     26,  -179,  -469, -1008, -1260,   262,   -35,  -132,  -259,
327     -66,  -232,  -447,  -533,  -789,  -191,  -100,  -267,   364
328 };
329
330 /*------------------------------------------------*
331  * 1st stage codebook; 2nd split:   isf9 to isf15
332  *------------------------------------------------*/
333
334 const int16 dico2_isf[SIZE_BK2*7] =
335 {
336
337     1357,  1313,  1136,   784,   438,   181,   145,
338     636,   648,   667,   568,   442,   217,   362,
339     427,   440,   674,   524,   332,   117,  -417,
340     121,   295,   468,   465,   230,    44,  -221,
341     -147,  -240,   149,    80,   390,   278,   106,
342     -418,  -556,   552,   511,   235,   144,   -95,
343     43,   193,   274,   150,    67,    34,  -273,
344     -43,  -126,   171,   416,   282,    63,  -354,
345     -372,   -86,  -344,  -108,   -94,  -182,   -89,
346     -600,  -840,  -200,   465,   258,   -11,  -253,
347     -48,   329,    97,  -290,  -543,  -795,  -354,
348     -570,  -117,   187,    10,  -133,  -416,   -76,
349     -618,  -129,  -247,  -371,    45,   -76,   277,
350     -1022, -1079,   126,   474,   254,   127,    52,
351     -281,    76,  -167,  -361,  -283,  -551,  -283,
352     -119,   -52,    -1,   134,   -32,  -204,  -415,
353     1064,   827,   637,   684,   464,   209,    12,
354     482,   416,   449,   371,   335,   294,   194,
355     719,   576,   365,   135,   113,    91,  -199,
356     298,   176,   493,   366,   194,   163,    36,
357     -35,  -236,  -259,   -36,    -4,    99,   152,
358     -98,  -306,   -27,   228,    90,   111,   -86,
359     91,    13,  -211,  -258,  -106,    86,   -64,
360     73,   -35,   -57,   -31,   162,    35,  -192,
361     -109,  -335,  -629,   -66,   -61,  -128,   322,
362     -495,  -669,  -728,   193,    31,  -220,   122,
363     324,    95,   -89,   -91,  -409,  -710,  -154,
364     0,  -234,    92,    33,  -343,  -609,  -220,
365     -343,  -408,  -476,  -655,  -153,    82,   222,
366     -490,  -745,  -255,    49,   -48,   135,  -127,
367     119,   -67,  -328,  -390,  -272,  -545,   -56,
368     -57,  -130,   -10,    -7,  -164,   -47,   -22,
369     984,  1064,   961,   568,   210,   -27,    16,
370     811,   691,   754,   514,   224,   -35,   166,
371     662,   704,   618,   386,    57,  -211,  -257,
372     510,   359,   418,   393,    91,  -144,   -18,
373     -193,   -31,   -27,   223,    89,  -143,    24,
374     -112,   -98,   471,   319,   185,     3,   175,
375     252,   146,   -47,   272,    48,  -211,  -234,
376     146,    69,   203,   364,    68,   -52,    51,
377     -259,  -478,  -697,  -349,  -758,  -501,    63,
378     -501,  -769,  -289,    79,  -311,  -497,  -106,
379     251,    53,  -235,  -469,  -895,  -884,   145,
380     -416,  -551,   140,  -133,  -523,  -775,    44,
381     -326,  -423,  -713,  -497,   -86,  -431,    99,
382     -757,  -772,  -160,   -76,   -46,   -32,   379,
383     85,   -35,  -200,  -401,  -663, -1040,  -247,
384     -180,  -330,   -92,  -376,    27,  -183,  -110,
385     1279,  1086,   781,   502,   324,   164,   157,
386     682,   466,   449,   277,   146,    28,   409,
387     635,   472,   390,   107,  -232,  -538,  -139,
388     196,   396,   332,   213,   209,   -29,   -81,
389     150,   -95,  -312,    76,   -77,  -320,   -50,
390     46,     9,    47,   175,   139,    30,   384,
391     218,   206,   -24,  -250,   -96,  -276,  -183,
392     26,   119,    38,    14,    -4,  -133,   -52,
393     -477,  -614,  -987,  -715,  -631,  -813,   200,
394     -744, -1009, -1065,  -745,  -631,  -171,    18,
395     -137,  -251,  -483,  -613,  -980, -1203,    12,
396     -605,  -767,  -562,  -686, -1088,  -515,    58,
397     -202,  -428,  -782, -1072,   -96,  -234,  -179,
398     -480,  -709, -1070,  -897,  -131,   -92,   321,
399     -145,  -193,  -512,  -729,  -572,  -765,  -210,
400     -331,  -585,  -525,  -631,  -281,  -208,  -303,
401     1165,  1104,   939,   828,   716,   426,   155,
402     6,  -109,   820,   778,   415,   113,   -27,
403     381,   339,   314,   265,   121,    -9,  -474,
404     -373,    47,   584,   442,    99,  -231,  -113,
405     -496,   -38,  -285,   262,   305,   170,     4,
406     -587,  -556,    69,    66,   471,   354,    13,
407     -138,    70,   -18,   106,    67,   167,  -302,
408     -445,  -141,   185,   191,   151,    83,  -133,
409     -257,  -521,  -720,  -198,   134,   -46,  -182,
410     -819, -1168,  -777,   512,   359,    95,  -113,
411     137,    -2,   -74,  -138,  -401,  -114,  -371,
412     -242,  -466,   204,   223,   -31,  -212,  -192,
413     -532,  -637,  -466,  -686,   256,   277,  -139,
414     -1141, -1244,  -381,   -75,   -54,    14,    88,
415     -311,   115,  -143,  -499,  -343,   124,  -416,
416     -616,  -147,  -135,    43,    -4,   121,  -369,
417     835,   783,   641,   390,   355,   350,    64,
418     72,   194,   443,   467,   436,   219,   372,
419     464,   369,   192,     4,  -156,   -72,  -226,
420     57,   206,   303,   205,   188,   101,   265,
421     -40,  -205,  -488,  -184,   276,    64,   -26,
422     -217,  -433,  -297,   137,   328,   308,  -289,
423     378,    81,  -308,  -465,    57,   -37,   227,
424     -100,    24,   -36,  -151,   199,     8,   143,
425     -426,  -697, -1059,  -133,   388,   161,   321,
426     -644, -1023, -1271,    39,    66,  -123,    70,
427     372,   177,  -173,  -556,  -553,  -304,  -189,
428     -117,  -369,  -425,  -122,  -462,  -152,   -73,
429     -649,  -850, -1189,  -767,   497,   360,   222,
430     -798, -1139, -1455,  -190,   430,   234,   179,
431     42,   -94,  -405,  -692,    38,  -202,  -246,
432     -169,  -366,  -290,   -88,   -64,    32,  -292,
433     1010,   923,   938,   710,   465,   230,   342,
434     217,   300,  1054,   675,    68,  -458,  -179,
435     78,   453,   316,    18,  -237,  -496,  -243,
436     167,    21,   424,   215,   -91,  -303,  -170,
437     -290,   -81,   -70,   -67,    40,    54,   -59,
438     -353,  -427,   -90,    53,    94,     9,    54,
439     -28,   318,   283,    15,  -240,   -58,    79,
440     -75,  -121,   229,    35,    58,     6,  -133,
441     -351,  -514,  -744,  -834,  -705,  -137,   164,
442     -1124, -1388, -1055,  -230,   -73,    40,    36,
443     -163,  -233,  -532,  -785, -1170,  -697,    96,
444     -788,  -959,  -246,  -430,  -624,  -165,    -8,
445     -856,  -540,  -630,  -907,  -337,   -70,    76,
446     -937, -1042,  -659,  -733,  -208,   199,   -26,
447     -523,    78,   -98,  -501,  -869,  -890,   -81,
448     -624,  -703,   -45,  -348,   -25,    87,  -186,
449     1005,   823,   546,   249,    90,   -22,   207,
450     298,   397,   381,   319,   200,    62,   303,
451     473,   379,   133,  -247,  -632,  -441,    75,
452     284,   208,   391,   115,   -25,    44,    95,
453     -72,    79,   -95,   -63,  -129,  -293,   203,
454     -164,  -349,   115,   122,    69,    -1,   378,
455     348,   170,    99,    58,  -179,  -302,   188,
456     -190,    -2,   150,    23,   -51,   -11,   216,
457     -615,  -863, -1090, -1427,  -802,   -48,    -6,
458     -961, -1276, -1548,  -727,   -58,    56,   223,
459     -124,  -255,  -561,  -988, -1277,  -148,   -82,
460     -480,  -660,  -891, -1191, -1339,  -325,    20,
461     -621,  -917, -1296, -1350,   264,   289,    50,
462     -844, -1022, -1345, -1329,  -293,    46,   278,
463     -260,  -468,  -829, -1176,  -533,  -560,   -78,
464     -215,  -484,  -822, -1233,  -791,    15,  -138,
465     1301,  1317,  1262,  1048,   716,   357,   -64,
466     578,   824,   925,   802,   630,   362,   102,
467     470,   925,   767,   514,   327,   190,  -112,
468     225,   492,   495,   437,   598,   384,   -45,
469     43,    82,   -42,   175,   519,   342,   -64,
470     -304,  -154,   159,   576,   403,   221,   327,
471     214,   244,   122,   -62,   312,    92,  -160,
472     218,   208,   310,   268,   306,   323,  -199,
473     -285,  -269,   -79,  -124,  -143,  -153,   236,
474     -205,  -384,  -426,   344,    59,  -185,  -184,
475     -272,   247,   126,  -210,  -518,  -468,    78,
476     -99,  -120,   502,   160,  -280,  -557,   304,
477     -423,   -17,  -283,  -443,   215,   212,  -140,
478     -564,  -684,  -228,   510,   361,   130,   323,
479     -428,   335,    98,   -65,    36,  -215,  -246,
480     -362,    51,   364,   -16,  -234,   150,  -165,
481     914,   883,   751,   653,   676,   464,  -153,
482     631,   545,   535,   720,   596,   360,   -81,
483     783,   712,   512,   439,   341,   251,  -391,
484     497,   417,   249,   372,   295,   173,  -193,
485     128,  -110,  -385,    93,    39,   173,  -231,
486     216,   -59,  -253,   462,   389,   154,    69,
487     455,   270,    -4,  -337,   -49,   233,  -322,
488     307,   143,    53,   218,   128,   236,  -156,
489     -37,  -186,  -240,  -411,  -110,     9,   399,
490     -140,  -365,  -628,   258,   380,   214,   277,
491     131,   454,   177,  -285,  -520,   108,  -214,
492     77,  -141,   201,  -123,  -490,  -131,    60,
493     -14,  -194,  -521,  -741,   273,   362,   -33,
494     -362,  -566,  -287,  -228,   161,   237,   317,
495     -269,   195,   -75,  -375,  -204,    11,    77,
496     -128,  -264,  -156,  -223,  -475,   265,    27,
497     1238,  1147,   916,   689,   432,   210,  -280,
498     800,   664,   879,   726,   411,   160,  -164,
499     454,   686,   536,   275,   147,    46,   111,
500     303,   486,   512,   355,   241,   181,   -69,
501     79,    92,    29,   147,   233,    52,    17,
502     -171,   289,   131,   439,   271,     3,   -10,
503     413,   241,   144,   174,   155,    -2,    14,
504     58,   217,   247,   219,   149,   175,   -18,
505     228,    -8,  -240,  -206,  -513,  -191,   202,
506     -96,  -272,  -454,    33,  -300,  -575,    46,
507     -10,  -108,  -246,  -347,  -770,  -535,     9,
508     -326,  -430,   -61,  -321,  -704,  -299,   201,
509     -1,  -280,  -603,  -419,  -185,    18,   -36,
510     -516,  -522,  -379,  -291,  -181,   -97,    27,
511     -159,  -313,  -525,  -224,  -510,  -831,  -197,
512     -292,  -459,   -59,  -310,  -562,  -143,  -351,
513     1066,   912,   631,   389,   207,    86,  -224,
514     596,   512,   596,   505,   314,   122,   -48,
515     787,   861,   441,   -93,  -303,    33,  -190,
516     257,   469,   337,    51,    15,   298,   -93,
517     295,    73,  -119,    25,    36,    23,   108,
518     -28,    -3,   -32,   114,    21,   185,   107,
519     482,   305,    15,  -279,  -319,    52,    96,
520     226,    46,   115,    72,  -136,   133,  -125,
521     18,  -207,  -559,  -590,  -503,  -482,   321,
522     -571,  -789,  -951,  -172,  -441,  -538,   113,
523     181,    14,  -310,  -641, -1001,  -202,   159,
524     -136,  -393,  -433,  -513,  -911,  -144,   -22,
525     72,  -265,  -706,  -954,  -159,    53,   332,
526     -338,  -591,  -852,  -383,  -395,    56,    44,
527     43,  -158,  -464,  -897,  -631,  -157,  -294,
528     -161,  -128,  -328,  -573,  -483,  -125,    11,
529     1017,   906,  1051,  1005,   679,   341,  -102,
530     359,   334,  1567,  1314,   723,   105,    10,
531     -65,   726,   529,   301,   220,    43,  -273,
532     -510,   436,   719,   566,   358,   179,   114,
533     -560,   298,   133,  -120,   342,   225,    14,
534     -899,  -101,   217,   617,   400,   146,   -58,
535     -41,   352,    82,  -196,    39,   121,  -167,
536     -212,    59,   447,   284,   423,   250,  -169,
537     -371,  -484,  -596,    30,   -41,   249,    22,
538     -372,  -650,  -794,   477,   445,   216,   -79,
539     -352,   275,    17,  -443,  -929,    92,    19,
540     -699,  -696,   431,   264,   -49,  -310,   182,
541     -978,  -217,  -430,  -400,   101,   261,    72,
542     -929,  -889,  -357,   -13,   463,   378,   236,
543     -826,    56,    30,  -299,  -360,  -128,   -51,
544     -878,  -299,  -111,    75,    65,    36,     3,
545     817,   368,   -25,   354,   697,   591,  -173,
546     309,   212,   222,   751,   484,   140,   -56,
547     593,   379,    70,    -8,   258,   180,   110,
548     165,   -46,   255,   297,   219,   273,   105,
549     160,   -70,  -358,  -181,   379,   330,   319,
550     -238,  -369,  -198,   740,   580,   319,  -143,
551     201,   109,  -202,  -456,   328,   276,  -141,
552     203,   170,   111,    42,   207,   360,   188,
553     -345,  -399,  -513,  -233,   650,   422,    81,
554     -635,  -961, -1220,   463,   539,   204,   209,
555     202,   -25,  -194,  -498,  -787,   193,  -143,
556     -449,  -538,   195,  -106,  -331,    68,    62,
557     -228,  -477,  -840,  -576,   317,   128,   283,
558     -671,  -937,  -807,  -114,   391,   335,   -62,
559     246,     2,  -314,  -679,  -303,   180,   -88,
560     -107,  -272,    90,  -198,   -28,   290,  -112,
561     885,  1149,  1021,   712,   496,   281,   -83,
562     269,   492,   787,   643,   347,    70,   124,
563     336,   636,   499,    92,  -229,  -179,   191,
564     26,   402,   564,   340,   149,   -11,   135,
565     -440,   561,   470,   204,   -72,  -186,   140,
566     -720,    14,   355,   229,    68,  -133,   465,
567     110,   310,   103,    12,   106,    29,   158,
568     -178,   113,   161,   142,   121,   115,    27,
569     -651,  -414,  -645,  -152,  -164,   -13,  -429,
570     -639,  -944,  -681,  -104,   -81,    52,  -189,
571     -663,  -164,  -316,  -683,  -954,  -205,   -83,
572     -609,  -669,  -172,  -517,  -694,   283,   -80,
573     -646,  -152,  -383,  -678,  -246,   -40,  -143,
574     -747,  -796,  -745,  -390,   -98,    43,   275,
575     -599,  -199,  -398,  -433,  -436,  -538,    31,
576     -1107,  -568,  -376,  -265,  -126,   -21,     1,
577     847,   573,   308,   392,   305,   101,    55,
578     273,   293,   201,   267,   346,   201,   123,
579     727,   480,   226,     2,   -65,  -138,   164,
580     273,   208,   173,   292,    12,   253,   174,
581     340,   207,   180,    88,   116,    46,   475,
582     -460,  -166,   -30,    13,   110,   173,   396,
583     137,    88,    43,  -137,   -94,    34,   284,
584     96,   -14,   226,    40,    63,    70,   130,
585     -467,  -735, -1012, -1174,  -307,   305,   -67,
586     -612,  -920, -1146,  -567,    -8,    92,   -25,
587     -182,  -271,  -492,  -754,  -857,   287,   -75,
588     -494,  -787,  -689,  -683,  -709,   137,  -326,
589     -288,  -550,  -903, -1105,   334,   321,   -62,
590     -354,  -653,  -834,  -445,     1,   377,  -152,
591     -162,  -306,  -608,  -937,  -297,   247,  -192,
592     -234,  -477,  -244,  -488,  -266,   342,  -332
593 };
594
595 /*
596  * 2nd stage codebook; 1st split:   isf2_0 to isf2_2
597  */
598
599
600 const int16 dico21_isf[SIZE_BK21*3] =
601 {
602
603     329,   409,   249,
604     -33,   505,   160,
605     -29,   -14,   582,
606     -262,   127,   354,
607     145,   237,   175,
608     -152,   245,   122,
609     27,    42,   340,
610     -84,   -93,   311,
611     285,   222,  -156,
612     47,   -43,  -504,
613     234,   121,   385,
614     104,  -317,    45,
615     176,   195,     8,
616     104,   -59,   -94,
617     177,    53,   192,
618     -34,  -127,   152,
619     570,   277,   -34,
620     -67,  -329,  -639,
621     -157,  -272,   462,
622     -177,  -462,   198,
623     322,   179,   115,
624     -386,   171,    19,
625     19,   -12,   195,
626     -120,  -252,   201,
627     304,    36,  -336,
628     -128,  -221,  -380,
629     171,  -185,   296,
630     -242,  -312,    23,
631     198,    39,    16,
632     -3,  -177,  -111,
633     111,   -93,    76,
634     -92,  -223,     4,
635     177,   406,   -44,
636     -168,   380,  -149,
637     -4,   273,   331,
638     -420,   513,   277,
639     21,   247,    47,
640     -58,   131,    -2,
641     -3,   134,   180,
642     -145,    40,   175,
643     189,    74,  -145,
644     -27,   -45,  -325,
645     370,  -114,   -21,
646     -83,  -415,  -173,
647     77,    95,   -51,
648     -40,   -30,   -67,
649     71,    88,    86,
650     -35,   -98,    14,
651     69,   197,  -334,
652     -196,    79,  -231,
653     -348,  -137,   218,
654     -352,   -89,   -85,
655     47,   201,  -130,
656     -165,    37,   -15,
657     -43,     3,    86,
658     -161,  -108,    79,
659     83,    21,  -237,
660     -81,  -149,  -238,
661     150,  -186,  -251,
662     -186,  -249,  -162,
663     -19,    66,  -139,
664     -26,   -50,  -181,
665     24,    11,     0,
666     -130,  -105,   -98
667 };
668
669
670
671 /*
672  * 2nd stage codebook; 2nd split:   isf2_3 to isf2_5
673  */
674
675
676 const int16 dico22_isf[SIZE_BK22*3] =
677 {
678
679     -127,   310,    42,
680     -242,   197,     5,
681     -151,    84,   -17,
682     -214,   127,  -149,
683     -247,  -131,   159,
684     -268,  -267,   -95,
685     -217,     1,   -79,
686     -271,   -80,  -185,
687     -45,   436,   159,
688     165,   199,   391,
689     -33,    81,   187,
690     -66,   -42,   355,
691     -298,   -57,   343,
692     -108,  -537,   226,
693     -144,   -23,   193,
694     176,  -402,    87,
695     53,   296,    25,
696     -84,   253,  -104,
697     -58,   105,  -126,
698     -169,   174,  -314,
699     -48,    44,  -294,
700     -164,  -417,  -242,
701     -139,     3,  -194,
702     -155,  -207,  -211,
703     119,   322,   213,
704     333,    50,   380,
705     237,   247,    -2,
706     466,   -16,   201,
707     238,  -255,  -107,
708     67,  -440,  -149,
709     122,   -88,  -139,
710     88,  -247,   -73,
711     -41,   231,   167,
712     -62,   155,    16,
713     -65,    16,    77,
714     -68,    -2,   -63,
715     -151,  -300,   160,
716     -18,  -333,    54,
717     -56,   -94,     5,
718     2,  -190,    14,
719     92,   148,   209,
720     108,     9,   272,
721     108,    35,   110,
722     142,   -85,   145,
723     47,  -157,   279,
724     3,  -320,   246,
725     43,   -72,    68,
726     86,  -217,   135,
727     36,   140,    79,
728     56,   175,   -49,
729     26,    45,     3,
730     73,    55,  -101,
731     109,  -183,  -242,
732     -4,  -283,  -242,
733     48,   -68,   -48,
734     -6,  -153,  -122,
735     161,   196,    96,
736     232,    80,   190,
737     165,    97,    11,
738     258,   -31,    71,
739     267,   -77,   -91,
740     311,  -209,    87,
741     152,   -14,   -22,
742     150,  -149,     9,
743     -324,   557,   187,
744     -384,   307,    46,
745     -251,    27,    77,
746     -365,    77,   -52,
747     -482,   -84,   160,
748     -424,  -515,   -64,
749     -294,  -120,    -4,
750     -476,  -116,  -109,
751     -97,   318,   365,
752     106,   627,   445,
753     -190,   120,   287,
754     -146,    65,   619,
755     -427,   242,   363,
756     -361,  -371,   432,
757     -347,   102,   168,
758     -629,   195,   -14,
759     -65,   476,   -47,
760     -297,   320,  -168,
761     -55,   356,  -264,
762     -391,    82,  -286,
763     -51,   -31,  -556,
764     -178,  -399,  -586,
765     -205,   -49,  -360,
766     -343,  -238,  -337,
767     220,   457,    58,
768     561,   467,   259,
769     340,   270,  -168,
770     450,    77,  -280,
771     60,   167,  -413,
772     133,  -252,  -492,
773     216,   157,  -290,
774     282,     0,  -495,
775     -226,   293,   183,
776     -157,   135,   122,
777     -158,   -59,    39,
778     -133,  -118,   -97,
779     -332,  -309,   113,
780     -160,  -425,    -6,
781     -149,  -211,    24,
782     -80,  -277,   -90,
783     -11,   125,   338,
784     130,   -71,   465,
785     5,   -45,   184,
786     237,   -95,   253,
787     -139,  -197,   297,
788     -19,  -300,   511,
789     -63,  -152,   139,
790     250,  -289,   336,
791     124,   339,  -150,
792     34,   176,  -208,
793     171,   166,  -116,
794     94,    38,  -229,
795     75,   -65,  -339,
796     -78,  -205,  -385,
797     0,   -30,  -163,
798     -56,  -110,  -242,
799     321,   244,   194,
800     505,   238,    -1,
801     317,   116,    65,
802     309,    88,   -74,
803     452,   -51,   -50,
804     334,  -217,  -290,
805     211,    41,  -152,
806     238,   -55,  -260
807 };
808
809
810 /*
811  * 2nd stage codebook; 3rd split:   isf2_6 to isf2_8
812  */
813
814
815 const int16 dico23_isf[SIZE_BK23*3] =
816 {
817
818     -10,   151,   359,
819     136,   298,   223,
820     255,  -104,   290,
821     423,     6,   183,
822     -270,  -269,   -98,
823     -52,   -82,    13,
824     -82,  -274,   -97,
825     90,  -246,   -72,
826     -299,   -70,   421,
827     -88,   365,   430,
828     187,  -318,   381,
829     380,    37,   488,
830     -373,  -316,    79,
831     -308,  -101,     5,
832     -135,  -451,     8,
833     72,  -421,  -154,
834     180,   170,  -121,
835     62,   177,   -40,
836     326,    80,  -105,
837     248,   263,    -5,
838     -168,  -181,  -221,
839     -2,   -23,  -158,
840     -14,  -149,  -121,
841     119,   -91,  -147,
842     119,   332,  -153,
843     49,   303,    34,
844     442,   -55,   -69,
845     217,   454,    58,
846     -359,  -187,  -375,
847     -42,    50,  -274,
848     -8,  -267,  -249,
849     85,   -86,  -346,
850     -77,   -40,   345,
851     89,   134,   219,
852     156,   -80,   160,
853     108,    40,   116,
854     -158,  -206,    29,
855     5,   -32,   175,
856     -65,  -158,   146,
857     55,   -78,    73,
858     -114,  -222,   353,
859     -47,    81,   211,
860     49,  -151,   268,
861     105,     4,   302,
862     -263,  -132,   183,
863     -151,   -28,   201,
864     -177,  -307,   166,
865     101,  -221,   130,
866     74,    58,   -98,
867     32,    44,    13,
868     194,    30,  -142,
869     170,    96,     8,
870     -136,  -119,   -91,
871     -65,     8,   -55,
872     3,  -188,    12,
873     45,   -63,   -49,
874     149,   -21,   -19,
875     24,   144,    95,
876     254,   -22,    60,
877     161,   196,    96,
878     -158,   -61,    48,
879     -70,    33,    82,
880     -23,  -321,    58,
881     155,  -147,     5,
882     -364,   328,    77,
883     -21,   453,   173,
884     -108,    82,   630,
885     367,   263,   208,
886     -300,   -62,  -176,
887     -205,   143,  -158,
888     -169,  -410,  -264,
889     257,  -269,  -100,
890     -636,   289,    -2,
891     -292,   627,   173,
892     -382,  -363,   387,
893     248,   524,   447,
894     -521,  -111,  -107,
895     -395,   118,  -274,
896     -343,  -680,  -125,
897     -172,  -447,  -663,
898     75,   148,  -367,
899     -79,   263,   -94,
900     249,   148,  -286,
901     380,   271,  -162,
902     -142,    -4,  -186,
903     -57,   111,  -125,
904     -35,  -108,  -254,
905     100,    29,  -242,
906     -80,   303,  -264,
907     -78,   464,   -57,
908     248,   -22,  -494,
909     661,   662,    44,
910     -193,   -40,  -330,
911     -178,   145,  -337,
912     -90,  -199,  -400,
913     -40,   -23,  -498,
914     -192,   114,   315,
915     -41,   244,   190,
916     88,   -97,   485,
917     241,    80,   212,
918     -246,    40,    87,
919     -156,   147,   134,
920     -2,  -334,   239,
921     308,  -203,   110,
922     -459,   251,   422,
923     -218,   310,   228,
924     -86,  -346,   654,
925     184,   175,   425,
926     -481,   -63,   169,
927     -349,   117,   188,
928     -125,  -560,   310,
929     158,  -416,    94,
930     46,   171,  -192,
931     -63,   157,    14,
932     256,   -35,  -271,
933     322,   123,    53,
934     -214,     4,   -76,
935     -156,    86,   -18,
936     128,  -197,  -232,
937     265,   -90,   -98,
938     -308,   332,  -145,
939     -131,   308,    58,
940     509,    59,  -339,
941     562,   196,   -14,
942     -378,   100,   -47,
943     -234,   202,     1,
944     104,  -270,  -493,
945     319,  -210,  -325
946 };
947
948
949 /*
950  * 2nd stage codebook; 4th split:   isf2_9 to isf2_11
951  */
952
953 const int16 dico24_isf[SIZE_BK24*3] =
954 {
955
956     -79,   -89,    -4,
957     -171,    77,  -211,
958     160,  -193,    98,
959     120,  -103,   323,
960     32,   -22,  -129,
961     72,    78,  -268,
962     182,   -76,   -66,
963     309,    99,  -145,
964     -229,  -157,   -84,
965     -383,    98,   -71,
966     -90,  -352,    12,
967     -284,  -178,   178,
968     -65,  -125,  -166,
969     -87,  -175,  -351,
970     42,  -198,   -48,
971     154,  -140,  -243,
972     -77,    18,   108,
973     -39,   355,    91,
974     87,     8,   155,
975     -4,   158,   239,
976     128,    95,   -54,
977     7,   246,  -124,
978     258,    15,    89,
979     206,   216,    98,
980     -201,     9,    18,
981     -312,   233,   204,
982     -39,  -174,   155,
983     -144,    -9,   284,
984     -57,    70,   -69,
985     -157,   187,    18,
986     54,   -30,    23,
987     24,   135,    55
988 };
989
990
991 /*
992  * 2nd stage codebook; 5th split:   isf2_12 to isf2_15
993  */
994
995 const int16 dico25_isf[SIZE_BK25*4] =
996 {
997
998     169,   142,  -119,   115,
999     206,   -20,    94,   226,
1000     -106,   313,   -21,    16,
1001     -62,   161,    71,   255,
1002     -89,   101,  -185,   125,
1003     72,   -30,  -201,   344,
1004     -258,    33,    -8,    81,
1005     -104,  -154,    72,   296,
1006     144,   -68,  -268,   -25,
1007     81,   -78,   -87,   106,
1008     22,   155,  -186,  -119,
1009     -46,   -28,    27,    91,
1010     -114,   -37,  -175,   -33,
1011     -94,  -222,  -189,   122,
1012     -132,  -119,  -191,  -270,
1013     -172,  -173,    18,   -43,
1014     279,   135,   -42,  -128,
1015     187,   -86,   229,  -138,
1016     159,   240,   140,    46,
1017     69,    25,   227,    77,
1018     21,   115,    13,     8,
1019     68,  -248,   126,    81,
1020     -150,   137,   207,    -9,
1021     -154,  -133,   289,    67,
1022     143,   -37,   -86,  -326,
1023     180,   -32,    19,   -23,
1024     26,   168,   116,  -233,
1025     -32,   -26,   118,   -78,
1026     3,    -8,   -45,  -115,
1027     57,  -215,   -54,   -83,
1028     -209,   112,   -22,  -167,
1029     -91,  -151,   168,  -262
1030 };
1031
1032
1033
1034 /* 36 bit */
1035 /*
1036  *  isf codebooks:  two-stage VQ with split-by-3 in 2nd stage
1037  *                1st stage is kept the same as the 46 bit quantizer
1038  *
1039  *  codebook   vector dimension    number of vectors
1040  *  ~~~~~~~~   ~~~~~~~~~~~~~~~~    ~~~~~~~~~~~~~~~~~
1041  *     1_1            9                  256
1042  *     1_2            7                  256
1043  *     2_1            5                  128
1044  *     2_2            4                  128
1045  *     2_3            7                  64
1046  */
1047
1048 const int16 dico21_isf_36b[SIZE_BK21_36b*5] =
1049 {
1050
1051     -52,   -96,   212,   315,   -73,
1052     82,  -204,   363,   136,  -197,
1053     -126,  -331,   183,   218,   143,
1054     -49,   -41,   557,   230,    72,
1055     2,   -73,   163,   377,   221,
1056     133,   111,   278,   215,  -110,
1057     -102,   -20,   284,   113,   273,
1058     84,   319,   290,    18,    85,
1059     -25,    -5,   125,   132,  -204,
1060     -38,    -5,   286,    -9,  -356,
1061     -140,  -256,    92,   117,  -189,
1062     -144,   191,   313,    51,   -98,
1063     167,   -10,    44,   247,    36,
1064     381,   197,   238,    74,     6,
1065     38,  -408,    29,    -3,   -85,
1066     92,   266,   157,   -25,  -200,
1067     161,  -121,    70,    84,  -140,
1068     -16,   -86,   112,   -94,  -189,
1069     -269,  -270,   351,   107,   -24,
1070     -68,   -67,   492,  -103,  -155,
1071     -53,  -131,    62,   122,    10,
1072     135,    84,   283,   -55,  -120,
1073     -12,  -219,   331,   -81,   167,
1074     220,  -136,   147,  -172,   -42,
1075     140,   -95,  -109,   -88,  -194,
1076     0,    -2,    -4,   -33,  -381,
1077     -66,  -217,   152,  -186,  -402,
1078     244,   108,   156,  -140,  -395,
1079     113,  -136,  -196,   110,   -24,
1080     214,   118,    11,   -64,  -131,
1081     -110,  -286,    -6,  -332,    16,
1082     94,    97,    79,  -291,  -205,
1083     -5,   -39,   -20,   252,   -96,
1084     76,   174,   101,   163,    61,
1085     -69,  -239,   -55,   399,     6,
1086     -115,   319,   164,   275,   196,
1087     -15,    36,   -47,   331,   121,
1088     226,   209,   271,   325,   184,
1089     13,   -80,  -218,   471,   353,
1090     288,   378,    16,   -51,   251,
1091     174,   116,    52,   149,  -279,
1092     235,   276,    39,   120,   -48,
1093     0,  -108,  -108,   241,  -339,
1094     -93,   534,    45,    33,   -87,
1095     194,   149,   -71,   405,   -44,
1096     409,   370,    81,  -186,  -154,
1097     25,  -102,  -448,   124,  -173,
1098     22,   408,  -110,  -310,  -214,
1099     -26,    23,   -83,   114,    14,
1100     -110,   164,    52,   223,   -82,
1101     37,   -25,  -263,   306,   -15,
1102     -466,   415,   292,   165,   -18,
1103     29,   -19,  -171,   155,   182,
1104     179,   144,   -27,   231,   258,
1105     -103,  -247,  -396,   238,   113,
1106     375,  -154,  -109,    -4,   156,
1107     98,    85,  -292,    -5,  -124,
1108     116,   139,  -116,   -98,  -294,
1109     -14,   -83,  -278,  -117,  -378,
1110     106,    33,  -106,  -344,  -484,
1111     119,    17,  -412,   138,   166,
1112     384,   101,  -204,    88,  -156,
1113     -121,  -284,  -300,    -1,  -166,
1114     280,    33,  -152,  -313,   -81,
1115     -37,    22,   229,   153,    37,
1116     -60,   -83,   236,    -8,   -41,
1117     -169,  -228,   126,   -20,   363,
1118     -235,    17,   364,  -156,   156,
1119     -25,   -30,    72,   144,   156,
1120     153,   -26,   256,    97,   144,
1121     -21,   -37,    48,   -65,   250,
1122     63,    77,   273,  -128,   124,
1123     -129,   -26,    40,     9,  -115,
1124     -6,    82,    38,   -90,  -182,
1125     -336,   -13,    28,   158,    91,
1126     -30,   241,   137,  -170,   -17,
1127     146,    14,   -11,    33,    61,
1128     192,   197,    54,   -84,    85,
1129     23,  -200,   -78,   -29,   140,
1130     122,   237,   106,  -341,   136,
1131     -57,  -142,   -85,   -16,   -74,
1132     -59,   -90,    -8,  -187,   -20,
1133     -211,  -267,   216,  -179,  -110,
1134     -50,    -7,   220,  -267,   -70,
1135     -57,   -42,   -17,   -15,    71,
1136     32,    21,    63,  -137,    33,
1137     -137,  -175,   104,   -68,    97,
1138     -67,   -43,   133,  -301,   221,
1139     -116,  -200,   -81,   -92,  -272,
1140     -64,   -41,   -54,  -244,  -220,
1141     -287,  -242,   -50,   -87,   -89,
1142     -245,   236,   102,  -166,  -295,
1143     66,    24,  -162,   -71,    95,
1144     66,   136,   -90,  -220,   -36,
1145     -98,  -161,  -222,  -188,    29,
1146     -18,    18,   -19,  -415,     9,
1147     49,    61,   100,    39,   -56,
1148     -111,    82,   135,   -31,    52,
1149     -90,  -153,   -93,   189,   182,
1150     -214,   295,   119,   -74,   284,
1151     2,   137,    37,    47,   182,
1152     92,   117,   184,   -53,   373,
1153     -21,   -14,   -35,   136,   391,
1154     146,   129,  -164,   -28,   333,
1155     92,    80,   -84,   100,  -134,
1156     -8,   217,   -32,     3,   -47,
1157     -151,   251,  -215,   142,    92,
1158     -224,   310,  -172,  -275,    98,
1159     159,   155,  -177,   112,    53,
1160     205,    27,     8,  -240,   192,
1161     169,   120,  -319,  -201,   106,
1162     11,    36,   -86,  -237,   455,
1163     -109,  -154,  -163,   174,   -55,
1164     -38,    32,  -101,   -78,   -59,
1165     -205,  -321,   -97,    69,    79,
1166     -310,    44,    18,  -185,    34,
1167     -115,   -20,  -148,   -39,   203,
1168     -29,   154,   -30,  -158,   166,
1169     -45,  -131,  -317,   -24,   363,
1170     -165,  -205,  -112,  -222,   265,
1171     -32,   -44,  -150,    54,  -193,
1172     -6,   -38,  -255,  -169,  -115,
1173     -266,    87,  -189,   -36,  -169,
1174     -60,   -87,  -266,  -436,  -170,
1175     -68,   -81,  -278,    24,    38,
1176     -23,   -19,  -155,  -256,   141,
1177     -61,  -226,  -565,  -175,    71,
1178     9,   -29,  -237,  -515,   263
1179 };
1180
1181 const int16 dico22_isf_36b[SIZE_BK22_36b*4] =
1182 {
1183
1184     -298,    -6,    95,    31,
1185     -213,   -87,  -122,   261,
1186     4,   -49,   208,    14,
1187     -129,  -110,    30,   118,
1188     -214,   258,   110,  -235,
1189     -41,   -18,  -126,   120,
1190     103,    65,   127,   -37,
1191     126,   -36,   -24,    25,
1192     -138,   -67,  -278,  -186,
1193     -164,  -194,  -201,    78,
1194     -211,   -87,   -51,  -221,
1195     -174,   -79,   -94,   -39,
1196     23,    -6,  -157,  -240,
1197     22,  -110,  -153,   -68,
1198     148,    -5,    -2,  -149,
1199     -1,  -135,   -39,  -179,
1200     68,   360,  -117,   -15,
1201     137,    47,  -278,   146,
1202     136,   260,   135,    65,
1203     61,   116,   -45,    97,
1204     231,   379,    87,  -120,
1205     338,   177,  -272,     3,
1206     266,   156,    28,   -69,
1207     260,    84,   -85,    86,
1208     -266,   154,  -256,  -182,
1209     -17,   -65,  -304,    -6,
1210     -40,   175,  -151,  -180,
1211     -27,    27,   -87,   -63,
1212     121,   114,  -166,  -469,
1213     159,   -66,  -323,  -231,
1214     214,   152,  -141,  -212,
1215     137,    36,  -184,   -51,
1216     -282,  -237,    40,    10,
1217     -48,  -235,   -37,   251,
1218     -54,  -323,   136,    29,
1219     -88,  -174,   213,   198,
1220     -390,    99,   -63,  -375,
1221     107,  -169,  -164,   424,
1222     69,  -111,   141,  -167,
1223     74,  -129,    65,   144,
1224     -353,  -207,  -205,  -109,
1225     -160,  -386,  -355,    98,
1226     -176,  -493,   -20,  -143,
1227     -252,  -432,    -2,   216,
1228     -90,  -174,  -168,  -411,
1229     13,  -284,  -229,  -160,
1230     -87,  -279,    34,  -251,
1231     -75,  -263,   -58,   -42,
1232     420,    53,  -211,  -358,
1233     384,   -35,  -374,   396,
1234     68,  -228,   323,    -2,
1235     167,  -307,   192,   194,
1236     459,   329,    -5,  -332,
1237     375,    79,    -7,   313,
1238     282,  -124,   200,   -92,
1239     271,  -162,   -70,   180,
1240     -157,  -298,  -514,  -309,
1241     58,  -163,  -546,    18,
1242     124,  -364,   167,  -238,
1243     83,  -411,  -117,    96,
1244     140,  -112,  -388,  -624,
1245     259,  -133,  -317,    41,
1246     163,  -130,   -64,  -334,
1247     226,  -165,  -124,  -110,
1248     -466,   -61,     6,   229,
1249     -153,   205,  -145,   242,
1250     -159,    48,   195,   148,
1251     -58,    28,    31,   279,
1252     -303,   185,   279,    -4,
1253     -61,   197,    59,    86,
1254     -114,   123,   168,   -52,
1255     35,    36,   100,   126,
1256     -407,   102,   -77,   -40,
1257     -338,    -1,  -342,   156,
1258     -179,   105,   -34,   -97,
1259     -185,    84,   -35,   108,
1260     -133,   107,   -91,  -357,
1261     -180,    54,  -229,    24,
1262     -44,    47,    47,  -182,
1263     -66,    13,    45,     4,
1264     -339,   251,    64,   226,
1265     -42,   101,  -350,   275,
1266     -99,   398,   142,   121,
1267     111,    12,  -102,   260,
1268     0,   505,   260,   -94,
1269     161,   285,   -96,   224,
1270     -4,   206,   314,    33,
1271     167,   139,    88,   204,
1272     -235,   316,   -60,   -25,
1273     -8,  -150,  -312,   201,
1274     -36,   292,    61,  -104,
1275     -40,   174,  -162,    42,
1276     -21,   402,   -29,  -351,
1277     21,   152,  -360,   -93,
1278     57,   191,   212,  -196,
1279     76,   158,   -21,   -69,
1280     -328,  -185,   331,   119,
1281     -53,   285,    56,   337,
1282     -107,   -24,   405,    29,
1283     -18,   137,   272,   277,
1284     -255,    22,   173,  -191,
1285     295,   322,   325,   302,
1286     21,   -27,   332,  -178,
1287     119,    13,   271,   129,
1288     -455,  -180,   116,  -191,
1289     -227,    62,  -148,   524,
1290     -176,  -287,   282,  -157,
1291     -243,    13,   199,   430,
1292     -59,   -49,   115,  -365,
1293     72,  -172,  -137,    93,
1294     -138,  -126,   141,   -84,
1295     5,  -124,    38,   -20,
1296     -258,   311,   601,   213,
1297     94,   130,   -61,   502,
1298     -1,  -157,   485,   313,
1299     146,   -74,   158,   345,
1300     276,   135,   280,   -57,
1301     490,   252,    99,    43,
1302     267,   -74,   429,   105,
1303     278,   -23,   119,    94,
1304     -542,   488,   257,  -115,
1305     -84,  -244,  -438,   478,
1306     -113,  -545,   387,   101,
1307     -95,  -306,   111,   498,
1308     95,   166,    22,  -301,
1309     420,   -15,   -58,   -78,
1310     270,    29,   122,  -282,
1311     160,  -240,    50,   -38
1312 };
1313
1314 const int16 dico23_isf_36b[SIZE_BK23_36b*7] =
1315 {
1316
1317     81,   -18,    68,   -27,  -122,  -280,    -4,
1318     45,  -177,   209,   -30,  -136,   -74,   131,
1319     -44,   101,   -75,   -88,   -48,  -137,   -54,
1320     -245,   -28,    63,   -18,  -112,  -103,    58,
1321     -79,    -6,   220,   -65,   114,   -35,   -50,
1322     109,   -65,   143,  -114,   129,    76,   125,
1323     166,    90,   -61,  -242,   186,   -74,   -43,
1324     -46,   -92,    49,  -227,    24,  -155,    39,
1325     67,    85,    99,   -42,    53,  -184,  -281,
1326     142,  -122,     0,    21,  -142,   -15,   -17,
1327     223,    92,   -21,   -48,   -82,   -14,  -167,
1328     51,   -37,  -243,   -30,   -90,    18,   -56,
1329     54,   105,    74,    86,    69,    13,  -101,
1330     196,    72,   -89,    43,    65,    19,    39,
1331     121,    34,   131,   -82,    25,   213,  -156,
1332     101,  -102,  -136,   -21,    57,   214,    22,
1333     36,  -124,   205,   204,    58,  -156,   -83,
1334     83,  -117,   137,   137,    85,   116,    44,
1335     -92,  -148,   -68,    11,  -102,  -197,  -220,
1336     -76,  -185,   -58,   132,   -26,  -183,    85,
1337     -7,   -31,    -2,    23,   205,  -151,    10,
1338     -27,   -37,    -5,   -18,   292,   131,     1,
1339     117,  -168,     9,   -93,    80,   -59,  -125,
1340     -182,  -244,    98,   -24,   135,   -22,    94,
1341     221,    97,   106,    42,    43,  -160,    83,
1342     25,   -64,   -21,     6,    14,   -15,   154,
1343     126,    15,  -140,   150,   -10,  -207,  -114,
1344     79,   -63,  -211,   -70,   -28,  -217,   165,
1345     46,    38,   -22,   281,   132,   -62,   109,
1346     112,    54,  -112,   -93,   208,    27,   296,
1347     115,    10,  -147,    41,   216,    42,  -276,
1348     50,  -115,  -254,   167,   117,    -2,    61,
1349     17,   144,    34,   -72,  -186,  -150,   272,
1350     -29,   -66,   -89,   -95,  -149,   129,   251,
1351     122,     0,   -50,  -234,   -91,    36,    26,
1352     -105,  -102,   -88,  -121,  -236,    -7,   -11,
1353     -204,   109,     5,  -191,   105,   -15,   163,
1354     -80,    32,   -24,  -209,    41,   294,    70,
1355     -106,   -94,  -204,  -118,   120,   -50,   -37,
1356     -82,  -241,    46,  -131,   -29,   150,   -55,
1357     33,   155,   120,   -89,    -8,     7,    62,
1358     213,    82,    61,    18,  -161,   144,   152,
1359     30,   131,    65,   -87,  -255,   -17,  -107,
1360     -8,    85,   -64,    51,  -162,   223,   -53,
1361     -134,   261,    69,   -56,   218,    72,  -111,
1362     2,   155,  -113,   -87,    49,    85,   -28,
1363     -163,    42,    -1,  -196,     7,    39,  -245,
1364     14,  -137,   -79,    11,  -160,   202,  -293,
1365     -94,    33,   208,   100,    56,   -44,   326,
1366     -78,   -41,   232,    13,  -142,   227,    80,
1367     -16,   -87,   201,    33,  -133,    15,  -183,
1368     -58,  -192,   -47,   184,  -128,   133,    99,
1369     -205,    11,  -155,    78,    52,    72,   141,
1370     -246,    26,    99,   151,    59,   115,   -64,
1371     -79,   -47,   -16,   -14,     6,    47,   -43,
1372     -72,  -178,   -27,   162,   112,    43,  -174,
1373     -175,   238,   186,    71,   -54,  -188,   -76,
1374     -225,   233,    39,   -39,  -158,   122,    44,
1375     -26,    43,    84,   130,   -93,   -51,    22,
1376     3,    92,  -150,   136,  -182,   -57,    97,
1377     -131,   179,   -78,    80,    91,  -165,    90,
1378     -2,   148,    15,   130,    65,   175,   117,
1379     -138,   114,  -137,   132,     3,   -10,  -186,
1380     140,    -4,   -37,   254,   -62,    92,  -109
1381 };
1382
1383