blob: c7c01c8893fa857cd5dba35f90eeb4cac5512817 [file] [log] [blame]
sergeyu@chromium.org885f2ff2012-10-17 22:31:52 +00001/***********************************************************************
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.
tlegrand@chromium.orge3ea0492013-10-23 09:13:50 +000011- Neither the name of Internet Society, IETF or IETF Trust, nor the
sergeyu@chromium.org885f2ff2012-10-17 22:31:52 +000012names of specific contributors, may be used to endorse or promote
13products derived from this software without specific prior written
14permission.
tlegrand@chromium.orge3ea0492013-10-23 09:13:50 +000015THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
sergeyu@chromium.org885f2ff2012-10-17 22:31:52 +000016AND 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
34const opus_uint8 silk_max_pulses_table[ 4 ] = {
35 8, 10, 12, 16
36};
37
38const opus_uint8 silk_pulses_per_block_iCDF[ 10 ][ 18 ] = {
39{
40 125, 51, 26, 18, 15, 12, 11, 10,
41 9, 8, 7, 6, 5, 4, 3, 2,
42 1, 0
43},
44{
45 198, 105, 45, 22, 15, 12, 11, 10,
46 9, 8, 7, 6, 5, 4, 3, 2,
47 1, 0
48},
49{
50 213, 162, 116, 83, 59, 43, 32, 24,
51 18, 15, 12, 9, 7, 6, 5, 3,
52 2, 0
53},
54{
55 239, 187, 116, 59, 28, 16, 11, 10,
56 9, 8, 7, 6, 5, 4, 3, 2,
57 1, 0
58},
59{
60 250, 229, 188, 135, 86, 51, 30, 19,
61 13, 10, 8, 6, 5, 4, 3, 2,
62 1, 0
63},
64{
65 249, 235, 213, 185, 156, 128, 103, 83,
66 66, 53, 42, 33, 26, 21, 17, 13,
67 10, 0
68},
69{
70 254, 249, 235, 206, 164, 118, 77, 46,
71 27, 16, 10, 7, 5, 4, 3, 2,
72 1, 0
73},
74{
75 255, 253, 249, 239, 220, 191, 156, 119,
76 85, 57, 37, 23, 15, 10, 6, 4,
77 2, 0
78},
79{
80 255, 253, 251, 246, 237, 223, 203, 179,
81 152, 124, 98, 75, 55, 40, 29, 21,
82 15, 0
83},
84{
85 255, 254, 253, 247, 220, 162, 106, 67,
86 42, 28, 18, 12, 9, 6, 4, 3,
87 2, 0
88}
89};
90
91const opus_uint8 silk_pulses_per_block_BITS_Q5[ 9 ][ 18 ] = {
92{
93 31, 57, 107, 160, 205, 205, 255, 255,
94 255, 255, 255, 255, 255, 255, 255, 255,
95 255, 255
96},
97{
98 69, 47, 67, 111, 166, 205, 255, 255,
99 255, 255, 255, 255, 255, 255, 255, 255,
100 255, 255
101},
102{
103 82, 74, 79, 95, 109, 128, 145, 160,
104 173, 205, 205, 205, 224, 255, 255, 224,
105 255, 224
106},
107{
108 125, 74, 59, 69, 97, 141, 182, 255,
109 255, 255, 255, 255, 255, 255, 255, 255,
110 255, 255
111},
112{
113 173, 115, 85, 73, 76, 92, 115, 145,
114 173, 205, 224, 224, 255, 255, 255, 255,
115 255, 255
116},
117{
118 166, 134, 113, 102, 101, 102, 107, 118,
119 125, 138, 145, 155, 166, 182, 192, 192,
120 205, 150
121},
122{
123 224, 182, 134, 101, 83, 79, 85, 97,
124 120, 145, 173, 205, 224, 255, 255, 255,
125 255, 255
126},
127{
128 255, 224, 192, 150, 120, 101, 92, 89,
129 93, 102, 118, 134, 160, 182, 192, 224,
130 224, 224
131},
132{
133 255, 224, 224, 182, 155, 134, 118, 109,
134 104, 102, 106, 111, 118, 131, 145, 160,
135 173, 131
136}
137};
138
139const opus_uint8 silk_rate_levels_iCDF[ 2 ][ 9 ] =
140{
141{
142 241, 190, 178, 132, 87, 74, 41, 14,
143 0
144},
145{
146 223, 193, 157, 140, 106, 57, 39, 18,
147 0
148}
149};
150
151const opus_uint8 silk_rate_levels_BITS_Q5[ 2 ][ 9 ] =
152{
153{
154 131, 74, 141, 79, 80, 138, 95, 104,
155 134
156},
157{
158 95, 99, 91, 125, 93, 76, 123, 115,
159 123
160}
161};
162
163const opus_uint8 silk_shell_code_table0[ 152 ] = {
164 128, 0, 214, 42, 0, 235, 128, 21,
165 0, 244, 184, 72, 11, 0, 248, 214,
166 128, 42, 7, 0, 248, 225, 170, 80,
167 25, 5, 0, 251, 236, 198, 126, 54,
168 18, 3, 0, 250, 238, 211, 159, 82,
169 35, 15, 5, 0, 250, 231, 203, 168,
170 128, 88, 53, 25, 6, 0, 252, 238,
171 216, 185, 148, 108, 71, 40, 18, 4,
172 0, 253, 243, 225, 199, 166, 128, 90,
173 57, 31, 13, 3, 0, 254, 246, 233,
174 212, 183, 147, 109, 73, 44, 23, 10,
175 2, 0, 255, 250, 240, 223, 198, 166,
176 128, 90, 58, 33, 16, 6, 1, 0,
177 255, 251, 244, 231, 210, 181, 146, 110,
178 75, 46, 25, 12, 5, 1, 0, 255,
179 253, 248, 238, 221, 196, 164, 128, 92,
180 60, 35, 18, 8, 3, 1, 0, 255,
181 253, 249, 242, 229, 208, 180, 146, 110,
182 76, 48, 27, 14, 7, 3, 1, 0
183};
184
185const opus_uint8 silk_shell_code_table1[ 152 ] = {
186 129, 0, 207, 50, 0, 236, 129, 20,
187 0, 245, 185, 72, 10, 0, 249, 213,
188 129, 42, 6, 0, 250, 226, 169, 87,
189 27, 4, 0, 251, 233, 194, 130, 62,
190 20, 4, 0, 250, 236, 207, 160, 99,
191 47, 17, 3, 0, 255, 240, 217, 182,
192 131, 81, 41, 11, 1, 0, 255, 254,
193 233, 201, 159, 107, 61, 20, 2, 1,
194 0, 255, 249, 233, 206, 170, 128, 86,
195 50, 23, 7, 1, 0, 255, 250, 238,
196 217, 186, 148, 108, 70, 39, 18, 6,
197 1, 0, 255, 252, 243, 226, 200, 166,
198 128, 90, 56, 30, 13, 4, 1, 0,
199 255, 252, 245, 231, 209, 180, 146, 110,
200 76, 47, 25, 11, 4, 1, 0, 255,
201 253, 248, 237, 219, 194, 163, 128, 93,
202 62, 37, 19, 8, 3, 1, 0, 255,
203 254, 250, 241, 226, 205, 177, 145, 111,
204 79, 51, 30, 15, 6, 2, 1, 0
205};
206
207const opus_uint8 silk_shell_code_table2[ 152 ] = {
208 129, 0, 203, 54, 0, 234, 129, 23,
209 0, 245, 184, 73, 10, 0, 250, 215,
210 129, 41, 5, 0, 252, 232, 173, 86,
211 24, 3, 0, 253, 240, 200, 129, 56,
212 15, 2, 0, 253, 244, 217, 164, 94,
213 38, 10, 1, 0, 253, 245, 226, 189,
214 132, 71, 27, 7, 1, 0, 253, 246,
215 231, 203, 159, 105, 56, 23, 6, 1,
216 0, 255, 248, 235, 213, 179, 133, 85,
217 47, 19, 5, 1, 0, 255, 254, 243,
218 221, 194, 159, 117, 70, 37, 12, 2,
219 1, 0, 255, 254, 248, 234, 208, 171,
220 128, 85, 48, 22, 8, 2, 1, 0,
221 255, 254, 250, 240, 220, 189, 149, 107,
222 67, 36, 16, 6, 2, 1, 0, 255,
223 254, 251, 243, 227, 201, 166, 128, 90,
224 55, 29, 13, 5, 2, 1, 0, 255,
225 254, 252, 246, 234, 213, 183, 147, 109,
226 73, 43, 22, 10, 4, 2, 1, 0
227};
228
229const opus_uint8 silk_shell_code_table3[ 152 ] = {
230 130, 0, 200, 58, 0, 231, 130, 26,
231 0, 244, 184, 76, 12, 0, 249, 214,
232 130, 43, 6, 0, 252, 232, 173, 87,
233 24, 3, 0, 253, 241, 203, 131, 56,
234 14, 2, 0, 254, 246, 221, 167, 94,
235 35, 8, 1, 0, 254, 249, 232, 193,
236 130, 65, 23, 5, 1, 0, 255, 251,
237 239, 211, 162, 99, 45, 15, 4, 1,
238 0, 255, 251, 243, 223, 186, 131, 74,
239 33, 11, 3, 1, 0, 255, 252, 245,
240 230, 202, 158, 105, 57, 24, 8, 2,
241 1, 0, 255, 253, 247, 235, 214, 179,
242 132, 84, 44, 19, 7, 2, 1, 0,
243 255, 254, 250, 240, 223, 196, 159, 112,
244 69, 36, 15, 6, 2, 1, 0, 255,
245 254, 253, 245, 231, 209, 176, 136, 93,
246 55, 27, 11, 3, 2, 1, 0, 255,
247 254, 253, 252, 239, 221, 194, 158, 117,
248 76, 42, 18, 4, 3, 2, 1, 0
249};
250
251const opus_uint8 silk_shell_code_table_offsets[ 17 ] = {
252 0, 0, 2, 5, 9, 14, 20, 27,
253 35, 44, 54, 65, 77, 90, 104, 119,
254 135
255};
256
257const opus_uint8 silk_sign_iCDF[ 42 ] = {
258 254, 49, 67, 77, 82, 93, 99,
259 198, 11, 18, 24, 31, 36, 45,
260 255, 46, 66, 78, 87, 94, 104,
261 208, 14, 21, 32, 42, 51, 66,
262 255, 94, 104, 109, 112, 115, 118,
263 248, 53, 69, 80, 88, 95, 102
264};