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/****************************************************************************************
19Portions 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)
26Permission to distribute, modify and use this file under the standard license
27terms 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 */
43const 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
69const 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
334const 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
600const 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
676const 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
815const 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
953const 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
995const 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
1048const 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
1181const 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
1314const 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
1384