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