SILK stereo fix
[opus.git] / 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 #ifdef HAVE_CONFIG_H
29 #include "config.h"
30 #endif
31
32 #include "tables.h"
33
34 const opus_uint8 silk_max_pulses_table[ 4 ] = {
35          8,     10,     12,     16
36 };
37
38 const 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
91 const 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
139 const 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
151 const 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
163 const 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
185 const 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
207 const 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
229 const 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
251 const 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
257 const 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 };