blob: 5cc9f57bffca77886de8764d32d62213da5dafd2 [file] [log] [blame]
Vignesh Venkatasubramanian2bd8b542014-02-20 10:50:35 -08001/***********************************************************************
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
Felicia Lim0c2090c2017-07-05 17:36:56 -0700101static const opus_int16 silk_NLSF_CB1_WB_Wght_Q9[ 512 ] = {
102 3657, 2925, 2925, 2925, 2925, 2925, 2925, 2925, 2925, 2925, 2925, 2925, 2963, 2963, 2925, 2846,
103 3216, 3085, 2972, 3056, 3056, 3010, 3010, 3010, 2963, 2963, 3010, 2972, 2888, 2846, 2846, 2726,
104 3920, 4014, 2981, 3207, 3207, 2934, 3056, 2846, 3122, 3244, 2925, 2846, 2620, 2553, 2780, 2925,
105 3516, 3197, 3010, 3103, 3019, 2888, 2925, 2925, 2925, 2925, 2888, 2888, 2888, 2888, 2888, 2753,
106 5054, 5054, 2934, 3573, 3385, 3056, 3085, 2793, 3160, 3160, 2972, 2846, 2513, 2540, 2753, 2888,
107 4428, 4149, 2700, 2753, 2972, 3010, 2925, 2846, 2981, 3019, 2925, 2925, 2925, 2925, 2888, 2726,
108 3620, 3019, 2972, 3056, 3056, 2873, 2806, 3056, 3216, 3047, 2981, 3291, 3291, 2981, 3310, 2991,
109 5227, 5014, 2540, 3338, 3526, 3385, 3197, 3094, 3376, 2981, 2700, 2647, 2687, 2793, 2846, 2673,
110 5081, 5174, 4615, 4428, 2460, 2897, 3047, 3207, 3169, 2687, 2740, 2888, 2846, 2793, 2846, 2700,
111 3122, 2888, 2963, 2925, 2925, 2925, 2925, 2963, 2963, 2963, 2963, 2925, 2925, 2963, 2963, 2963,
112 4202, 3207, 2981, 3103, 3010, 2888, 2888, 2925, 2972, 2873, 2916, 3019, 2972, 3010, 3197, 2873,
113 3760, 3760, 3244, 3103, 2981, 2888, 2925, 2888, 2972, 2934, 2793, 2793, 2846, 2888, 2888, 2660,
114 3854, 4014, 3207, 3122, 3244, 2934, 3047, 2963, 2963, 3085, 2846, 2793, 2793, 2793, 2793, 2580,
115 3845, 4080, 3357, 3516, 3094, 2740, 3010, 2934, 3122, 3085, 2846, 2846, 2647, 2647, 2846, 2806,
116 5147, 4894, 3225, 3845, 3441, 3169, 2897, 3413, 3451, 2700, 2580, 2673, 2740, 2846, 2806, 2753,
117 4109, 3789, 3291, 3160, 2925, 2888, 2888, 2925, 2793, 2740, 2793, 2740, 2793, 2846, 2888, 2806,
118 5081, 5054, 3047, 3545, 3244, 3056, 3085, 2944, 3103, 2897, 2740, 2740, 2740, 2846, 2793, 2620,
119 4309, 4309, 2860, 2527, 3207, 3376, 3376, 3075, 3075, 3376, 3056, 2846, 2647, 2580, 2726, 2753,
120 3056, 2916, 2806, 2888, 2740, 2687, 2897, 3103, 3150, 3150, 3216, 3169, 3056, 3010, 2963, 2846,
121 4375, 3882, 2925, 2888, 2846, 2888, 2846, 2846, 2888, 2888, 2888, 2846, 2888, 2925, 2888, 2846,
122 2981, 2916, 2916, 2981, 2981, 3056, 3122, 3216, 3150, 3056, 3010, 2972, 2972, 2972, 2925, 2740,
123 4229, 4149, 3310, 3347, 2925, 2963, 2888, 2981, 2981, 2846, 2793, 2740, 2846, 2846, 2846, 2793,
124 4080, 4014, 3103, 3010, 2925, 2925, 2925, 2888, 2925, 2925, 2846, 2846, 2846, 2793, 2888, 2780,
125 4615, 4575, 3169, 3441, 3207, 2981, 2897, 3038, 3122, 2740, 2687, 2687, 2687, 2740, 2793, 2700,
126 4149, 4269, 3789, 3657, 2726, 2780, 2888, 2888, 3010, 2972, 2925, 2846, 2687, 2687, 2793, 2888,
127 4215, 3554, 2753, 2846, 2846, 2888, 2888, 2888, 2925, 2925, 2888, 2925, 2925, 2925, 2963, 2888,
128 5174, 4921, 2261, 3432, 3789, 3479, 3347, 2846, 3310, 3479, 3150, 2897, 2460, 2487, 2753, 2925,
129 3451, 3685, 3122, 3197, 3357, 3047, 3207, 3207, 2981, 3216, 3085, 2925, 2925, 2687, 2540, 2434,
130 2981, 3010, 2793, 2793, 2740, 2793, 2846, 2972, 3056, 3103, 3150, 3150, 3150, 3103, 3010, 3010,
131 2944, 2873, 2687, 2726, 2780, 3010, 3432, 3545, 3357, 3244, 3056, 3010, 2963, 2925, 2888, 2846,
132 3019, 2944, 2897, 3010, 3010, 2972, 3019, 3103, 3056, 3056, 3010, 2888, 2846, 2925, 2925, 2888,
133 3920, 3967, 3010, 3197, 3357, 3216, 3291, 3291, 3479, 3704, 3441, 2726, 2181, 2460, 2580, 2607
134};
135
Vignesh Venkatasubramanian2bd8b542014-02-20 10:50:35 -0800136static const opus_uint8 silk_NLSF_CB1_iCDF_WB[ 64 ] = {
137 225, 204, 201, 184, 183, 175, 158, 154,
138 153, 135, 119, 115, 113, 110, 109, 99,
139 98, 95, 79, 68, 52, 50, 48, 45,
140 43, 32, 31, 27, 18, 10, 3, 0,
141 255, 251, 235, 230, 212, 201, 196, 182,
142 167, 166, 163, 151, 138, 124, 110, 104,
143 90, 78, 76, 70, 69, 57, 45, 34,
144 24, 21, 11, 6, 5, 4, 3, 0
145};
146
147static const opus_uint8 silk_NLSF_CB2_SELECT_WB[ 256 ] = {
148 0, 0, 0, 0, 0, 0, 0, 1,
149 100, 102, 102, 68, 68, 36, 34, 96,
150 164, 107, 158, 185, 180, 185, 139, 102,
151 64, 66, 36, 34, 34, 0, 1, 32,
152 208, 139, 141, 191, 152, 185, 155, 104,
153 96, 171, 104, 166, 102, 102, 102, 132,
154 1, 0, 0, 0, 0, 16, 16, 0,
155 80, 109, 78, 107, 185, 139, 103, 101,
156 208, 212, 141, 139, 173, 153, 123, 103,
157 36, 0, 0, 0, 0, 0, 0, 1,
158 48, 0, 0, 0, 0, 0, 0, 32,
159 68, 135, 123, 119, 119, 103, 69, 98,
160 68, 103, 120, 118, 118, 102, 71, 98,
161 134, 136, 157, 184, 182, 153, 139, 134,
162 208, 168, 248, 75, 189, 143, 121, 107,
163 32, 49, 34, 34, 34, 0, 17, 2,
164 210, 235, 139, 123, 185, 137, 105, 134,
165 98, 135, 104, 182, 100, 183, 171, 134,
166 100, 70, 68, 70, 66, 66, 34, 131,
167 64, 166, 102, 68, 36, 2, 1, 0,
168 134, 166, 102, 68, 34, 34, 66, 132,
169 212, 246, 158, 139, 107, 107, 87, 102,
170 100, 219, 125, 122, 137, 118, 103, 132,
171 114, 135, 137, 105, 171, 106, 50, 34,
172 164, 214, 141, 143, 185, 151, 121, 103,
173 192, 34, 0, 0, 0, 0, 0, 1,
174 208, 109, 74, 187, 134, 249, 159, 137,
175 102, 110, 154, 118, 87, 101, 119, 101,
176 0, 2, 0, 36, 36, 66, 68, 35,
177 96, 164, 102, 100, 36, 0, 2, 33,
178 167, 138, 174, 102, 100, 84, 2, 2,
179 100, 107, 120, 119, 36, 197, 24, 0
180};
181
182static const opus_uint8 silk_NLSF_CB2_iCDF_WB[ 72 ] = {
183 255, 254, 253, 244, 12, 3, 2, 1,
184 0, 255, 254, 252, 224, 38, 3, 2,
185 1, 0, 255, 254, 251, 209, 57, 4,
186 2, 1, 0, 255, 254, 244, 195, 69,
187 4, 2, 1, 0, 255, 251, 232, 184,
188 84, 7, 2, 1, 0, 255, 254, 240,
189 186, 86, 14, 2, 1, 0, 255, 254,
190 239, 178, 91, 30, 5, 1, 0, 255,
191 248, 227, 177, 100, 19, 2, 1, 0
192};
193
194static const opus_uint8 silk_NLSF_CB2_BITS_WB_Q5[ 72 ] = {
195 255, 255, 255, 156, 4, 154, 255, 255,
196 255, 255, 255, 227, 102, 15, 92, 255,
197 255, 255, 255, 255, 213, 83, 24, 72,
198 236, 255, 255, 255, 255, 150, 76, 33,
199 63, 214, 255, 255, 255, 190, 121, 77,
200 43, 55, 185, 255, 255, 255, 245, 137,
201 71, 43, 59, 139, 255, 255, 255, 255,
202 131, 66, 50, 66, 107, 194, 255, 255,
203 166, 116, 76, 55, 53, 125, 255, 255
204};
205
206static const opus_uint8 silk_NLSF_PRED_WB_Q8[ 30 ] = {
207 175, 148, 160, 176, 178, 173, 174, 164,
208 177, 174, 196, 182, 198, 192, 182, 68,
209 62, 66, 60, 72, 117, 85, 90, 118,
210 136, 151, 142, 160, 142, 155
211};
212
213static const opus_int16 silk_NLSF_DELTA_MIN_WB_Q15[ 17 ] = {
214 100, 3, 40, 3, 3, 3, 5, 14,
215 14, 10, 11, 3, 8, 9, 7, 3,
216 347
217};
218
219const silk_NLSF_CB_struct silk_NLSF_CB_WB =
220{
221 32,
222 16,
223 SILK_FIX_CONST( 0.15, 16 ),
224 SILK_FIX_CONST( 1.0 / 0.15, 6 ),
225 silk_NLSF_CB1_WB_Q8,
Felicia Lim0c2090c2017-07-05 17:36:56 -0700226 silk_NLSF_CB1_WB_Wght_Q9,
Vignesh Venkatasubramanian2bd8b542014-02-20 10:50:35 -0800227 silk_NLSF_CB1_iCDF_WB,
228 silk_NLSF_PRED_WB_Q8,
229 silk_NLSF_CB2_SELECT_WB,
230 silk_NLSF_CB2_iCDF_WB,
231 silk_NLSF_CB2_BITS_WB_Q5,
232 silk_NLSF_DELTA_MIN_WB_Q15,
233};
234