1/***********************************************************************
2Copyright (c) 2006-2011, Skype Limited. All rights reserved.
3Redistribution and use in source and binary forms, with or without
4modification, are permitted provided that the following conditions
5are met:
6- Redistributions of source code must retain the above copyright notice,
7this list of conditions and the following disclaimer.
8- Redistributions in binary form must reproduce the above copyright
9notice, this list of conditions and the following disclaimer in the
10documentation and/or other materials provided with the distribution.
11- Neither the name of Internet Society, IETF or IETF Trust, nor the
12names of specific contributors, may be used to endorse or promote
13products derived from this software without specific prior written
14permission.
15THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25POSSIBILITY OF SUCH DAMAGE.
26***********************************************************************/
27
28#ifdef HAVE_CONFIG_H
29#include "config.h"
30#endif
31
32#include "tables.h"
33
34static const opus_uint8 silk_NLSF_CB1_WB_Q8[ 512 ] = {
35         7,     23,     38,     54,     69,     85,    100,    116,
36       131,    147,    162,    178,    193,    208,    223,    239,
37        13,     25,     41,     55,     69,     83,     98,    112,
38       127,    142,    157,    171,    187,    203,    220,    236,
39        15,     21,     34,     51,     61,     78,     92,    106,
40       126,    136,    152,    167,    185,    205,    225,    240,
41        10,     21,     36,     50,     63,     79,     95,    110,
42       126,    141,    157,    173,    189,    205,    221,    237,
43        17,     20,     37,     51,     59,     78,     89,    107,
44       123,    134,    150,    164,    184,    205,    224,    240,
45        10,     15,     32,     51,     67,     81,     96,    112,
46       129,    142,    158,    173,    189,    204,    220,    236,
47         8,     21,     37,     51,     65,     79,     98,    113,
48       126,    138,    155,    168,    179,    192,    209,    218,
49        12,     15,     34,     55,     63,     78,     87,    108,
50       118,    131,    148,    167,    185,    203,    219,    236,
51        16,     19,     32,     36,     56,     79,     91,    108,
52       118,    136,    154,    171,    186,    204,    220,    237,
53        11,     28,     43,     58,     74,     89,    105,    120,
54       135,    150,    165,    180,    196,    211,    226,    241,
55         6,     16,     33,     46,     60,     75,     92,    107,
56       123,    137,    156,    169,    185,    199,    214,    225,
57        11,     19,     30,     44,     57,     74,     89,    105,
58       121,    135,    152,    169,    186,    202,    218,    234,
59        12,     19,     29,     46,     57,     71,     88,    100,
60       120,    132,    148,    165,    182,    199,    216,    233,
61        17,     23,     35,     46,     56,     77,     92,    106,
62       123,    134,    152,    167,    185,    204,    222,    237,
63        14,     17,     45,     53,     63,     75,     89,    107,
64       115,    132,    151,    171,    188,    206,    221,    240,
65         9,     16,     29,     40,     56,     71,     88,    103,
66       119,    137,    154,    171,    189,    205,    222,    237,
67        16,     19,     36,     48,     57,     76,     87,    105,
68       118,    132,    150,    167,    185,    202,    218,    236,
69        12,     17,     29,     54,     71,     81,     94,    104,
70       126,    136,    149,    164,    182,    201,    221,    237,
71        15,     28,     47,     62,     79,     97,    115,    129,
72       142,    155,    168,    180,    194,    208,    223,    238,
73         8,     14,     30,     45,     62,     78,     94,    111,
74       127,    143,    159,    175,    192,    207,    223,    239,
75        17,     30,     49,     62,     79,     92,    107,    119,
76       132,    145,    160,    174,    190,    204,    220,    235,
77        14,     19,     36,     45,     61,     76,     91,    108,
78       121,    138,    154,    172,    189,    205,    222,    238,
79        12,     18,     31,     45,     60,     76,     91,    107,
80       123,    138,    154,    171,    187,    204,    221,    236,
81        13,     17,     31,     43,     53,     70,     83,    103,
82       114,    131,    149,    167,    185,    203,    220,    237,
83        17,     22,     35,     42,     58,     78,     93,    110,
84       125,    139,    155,    170,    188,    206,    224,    240,
85         8,     15,     34,     50,     67,     83,     99,    115,
86       131,    146,    162,    178,    193,    209,    224,    239,
87        13,     16,     41,     66,     73,     86,     95,    111,
88       128,    137,    150,    163,    183,    206,    225,    241,
89        17,     25,     37,     52,     63,     75,     92,    102,
90       119,    132,    144,    160,    175,    191,    212,    231,
91        19,     31,     49,     65,     83,    100,    117,    133,
92       147,    161,    174,    187,    200,    213,    227,    242,
93        18,     31,     52,     68,     88,    103,    117,    126,
94       138,    149,    163,    177,    192,    207,    223,    239,
95        16,     29,     47,     61,     76,     90,    106,    119,
96       133,    147,    161,    176,    193,    209,    224,    240,
97        15,     21,     35,     50,     61,     73,     86,     97,
98       110,    119,    129,    141,    175,    198,    218,    237
99};
100
101static const opus_uint8 silk_NLSF_CB1_iCDF_WB[ 64 ] = {
102       225,    204,    201,    184,    183,    175,    158,    154,
103       153,    135,    119,    115,    113,    110,    109,     99,
104        98,     95,     79,     68,     52,     50,     48,     45,
105        43,     32,     31,     27,     18,     10,      3,      0,
106       255,    251,    235,    230,    212,    201,    196,    182,
107       167,    166,    163,    151,    138,    124,    110,    104,
108        90,     78,     76,     70,     69,     57,     45,     34,
109        24,     21,     11,      6,      5,      4,      3,      0
110};
111
112static const opus_uint8 silk_NLSF_CB2_SELECT_WB[ 256 ] = {
113         0,      0,      0,      0,      0,      0,      0,      1,
114       100,    102,    102,     68,     68,     36,     34,     96,
115       164,    107,    158,    185,    180,    185,    139,    102,
116        64,     66,     36,     34,     34,      0,      1,     32,
117       208,    139,    141,    191,    152,    185,    155,    104,
118        96,    171,    104,    166,    102,    102,    102,    132,
119         1,      0,      0,      0,      0,     16,     16,      0,
120        80,    109,     78,    107,    185,    139,    103,    101,
121       208,    212,    141,    139,    173,    153,    123,    103,
122        36,      0,      0,      0,      0,      0,      0,      1,
123        48,      0,      0,      0,      0,      0,      0,     32,
124        68,    135,    123,    119,    119,    103,     69,     98,
125        68,    103,    120,    118,    118,    102,     71,     98,
126       134,    136,    157,    184,    182,    153,    139,    134,
127       208,    168,    248,     75,    189,    143,    121,    107,
128        32,     49,     34,     34,     34,      0,     17,      2,
129       210,    235,    139,    123,    185,    137,    105,    134,
130        98,    135,    104,    182,    100,    183,    171,    134,
131       100,     70,     68,     70,     66,     66,     34,    131,
132        64,    166,    102,     68,     36,      2,      1,      0,
133       134,    166,    102,     68,     34,     34,     66,    132,
134       212,    246,    158,    139,    107,    107,     87,    102,
135       100,    219,    125,    122,    137,    118,    103,    132,
136       114,    135,    137,    105,    171,    106,     50,     34,
137       164,    214,    141,    143,    185,    151,    121,    103,
138       192,     34,      0,      0,      0,      0,      0,      1,
139       208,    109,     74,    187,    134,    249,    159,    137,
140       102,    110,    154,    118,     87,    101,    119,    101,
141         0,      2,      0,     36,     36,     66,     68,     35,
142        96,    164,    102,    100,     36,      0,      2,     33,
143       167,    138,    174,    102,    100,     84,      2,      2,
144       100,    107,    120,    119,     36,    197,     24,      0
145};
146
147static const opus_uint8 silk_NLSF_CB2_iCDF_WB[ 72 ] = {
148       255,    254,    253,    244,     12,      3,      2,      1,
149         0,    255,    254,    252,    224,     38,      3,      2,
150         1,      0,    255,    254,    251,    209,     57,      4,
151         2,      1,      0,    255,    254,    244,    195,     69,
152         4,      2,      1,      0,    255,    251,    232,    184,
153        84,      7,      2,      1,      0,    255,    254,    240,
154       186,     86,     14,      2,      1,      0,    255,    254,
155       239,    178,     91,     30,      5,      1,      0,    255,
156       248,    227,    177,    100,     19,      2,      1,      0
157};
158
159static const opus_uint8 silk_NLSF_CB2_BITS_WB_Q5[ 72 ] = {
160       255,    255,    255,    156,      4,    154,    255,    255,
161       255,    255,    255,    227,    102,     15,     92,    255,
162       255,    255,    255,    255,    213,     83,     24,     72,
163       236,    255,    255,    255,    255,    150,     76,     33,
164        63,    214,    255,    255,    255,    190,    121,     77,
165        43,     55,    185,    255,    255,    255,    245,    137,
166        71,     43,     59,    139,    255,    255,    255,    255,
167       131,     66,     50,     66,    107,    194,    255,    255,
168       166,    116,     76,     55,     53,    125,    255,    255
169};
170
171static const opus_uint8 silk_NLSF_PRED_WB_Q8[ 30 ] = {
172       175,    148,    160,    176,    178,    173,    174,    164,
173       177,    174,    196,    182,    198,    192,    182,     68,
174        62,     66,     60,     72,    117,     85,     90,    118,
175       136,    151,    142,    160,    142,    155
176};
177
178static const opus_int16 silk_NLSF_DELTA_MIN_WB_Q15[ 17 ] = {
179       100,      3,     40,      3,      3,      3,      5,     14,
180        14,     10,     11,      3,      8,      9,      7,      3,
181       347
182};
183
184const silk_NLSF_CB_struct silk_NLSF_CB_WB =
185{
186    32,
187    16,
188    SILK_FIX_CONST( 0.15, 16 ),
189    SILK_FIX_CONST( 1.0 / 0.15, 6 ),
190    silk_NLSF_CB1_WB_Q8,
191    silk_NLSF_CB1_iCDF_WB,
192    silk_NLSF_PRED_WB_Q8,
193    silk_NLSF_CB2_SELECT_WB,
194    silk_NLSF_CB2_iCDF_WB,
195    silk_NLSF_CB2_BITS_WB_Q5,
196    silk_NLSF_DELTA_MIN_WB_Q15,
197};
198
199