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