Update SILK code using the CELT range coder
[opus.git] / src_common / SKP_Silk_tables_pulses_per_block.c
1 /***********************************************************************\r
2 Copyright (c) 2006-2010, 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 "SKP_Silk_tables.h"\r
29 \r
30 const SKP_int SKP_Silk_max_pulses_table[ 4 ] = {\r
31          6,      8,     12,     18\r
32 };\r
33 \r
34 const SKP_uint16 SKP_Silk_pulses_per_block_CDF[ 10 ][ 21 ] = \r
35 {\r
36 {\r
37          0,  47113,  61501,  64590,  65125,  65277,  65352,  65407,\r
38      65450,  65474,  65488,  65501,  65508,  65514,  65516,  65520,\r
39      65521,  65523,  65524,  65526,  65535\r
40 },\r
41 {\r
42          0,  26368,  47760,  58803,  63085,  64567,  65113,  65333,\r
43      65424,  65474,  65498,  65511,  65517,  65520,  65523,  65525,\r
44      65526,  65528,  65529,  65530,  65535\r
45 },\r
46 {\r
47          0,   9601,  28014,  45877,  57210,  62560,  64611,  65260,\r
48      65447,  65500,  65511,  65519,  65521,  65525,  65526,  65529,\r
49      65530,  65531,  65532,  65534,  65535\r
50 },\r
51 {\r
52          0,   3351,  12462,  25972,  39782,  50686,  57644,  61525,\r
53      63521,  64506,  65009,  65255,  65375,  65441,  65471,  65488,\r
54      65497,  65505,  65509,  65512,  65535\r
55 },\r
56 {\r
57          0,    488,   2944,   9295,  19712,  32160,  43976,  53121,\r
58      59144,  62518,  64213,  65016,  65346,  65470,  65511,  65515,\r
59      65525,  65529,  65531,  65534,  65535\r
60 },\r
61 {\r
62          0,  17013,  30405,  40812,  48142,  53466,  57166,  59845,\r
63      61650,  62873,  63684,  64223,  64575,  64811,  64959,  65051,\r
64      65111,  65143,  65165,  65183,  65535\r
65 },\r
66 {\r
67          0,   2994,   8323,  15845,  24196,  32300,  39340,  45140,\r
68      49813,  53474,  56349,  58518,  60167,  61397,  62313,  62969,\r
69      63410,  63715,  63906,  64056,  65535\r
70 },\r
71 {\r
72          0,     88,    721,   2795,   7542,  14888,  24420,  34593,\r
73      43912,  51484,  56962,  60558,  62760,  64037,  64716,  65069,\r
74      65262,  65358,  65398,  65420,  65535\r
75 },\r
76 {\r
77          0,    287,    789,   2064,   4398,   8174,  13534,  20151,\r
78      27347,  34533,  41295,  47242,  52070,  55772,  58458,  60381,\r
79      61679,  62533,  63109,  63519,  65535\r
80 },\r
81 {\r
82          0,      1,      3,     91,   4521,  14708,  28329,  41955,\r
83      52116,  58375,  61729,  63534,  64459,  64924,  65092,  65164,\r
84      65182,  65198,  65203,  65211,  65535\r
85 }\r
86 };\r
87 \r
88 const SKP_int SKP_Silk_pulses_per_block_CDF_offset = 6;\r
89 \r
90 \r
91 const SKP_int16 SKP_Silk_pulses_per_block_BITS_Q6[ 9 ][ 20 ] = \r
92 {\r
93 {\r
94         30,    140,    282,    444,    560,    625,    654,    677,\r
95        731,    780,    787,    844,    859,    960,    896,   1024,\r
96        960,   1024,    960,    821\r
97 },\r
98 {\r
99         84,    103,    164,    252,    350,    442,    526,    607,\r
100        663,    731,    787,    859,    923,    923,    960,   1024,\r
101        960,   1024,   1024,    875\r
102 },\r
103 {\r
104        177,    117,    120,    162,    231,    320,    426,    541,\r
105        657,    803,    832,    960,    896,   1024,    923,   1024,\r
106       1024,   1024,    960,   1024\r
107 },\r
108 {\r
109        275,    182,    146,    144,    166,    207,    261,    322,\r
110        388,    450,    516,    582,    637,    710,    762,    821,\r
111        832,    896,    923,    734\r
112 },\r
113 {\r
114        452,    303,    216,    170,    153,    158,    182,    220,\r
115        274,    337,    406,    489,    579,    681,    896,    811,\r
116        896,    960,    923,   1024\r
117 },\r
118 {\r
119        125,    147,    170,    202,    232,    265,    295,    332,\r
120        368,    406,    443,    483,    520,    563,    606,    646,\r
121        704,    739,    757,    483\r
122 },\r
123 {\r
124        285,    232,    200,    190,    193,    206,    224,    244,\r
125        266,    289,    315,    340,    367,    394,    425,    462,\r
126        496,    539,    561,    350\r
127 },\r
128 {\r
129        611,    428,    319,    242,    202,    178,    172,    180,\r
130        199,    229,    268,    313,    364,    422,    482,    538,\r
131        603,    683,    739,    586\r
132 },\r
133 {\r
134        501,    450,    364,    308,    264,    231,    212,    204,\r
135        204,    210,    222,    241,    265,    295,    326,    362,\r
136        401,    437,    469,    321\r
137 }\r
138 };\r
139 \r
140 const SKP_uint16 SKP_Silk_rate_levels_CDF[ 2 ][ 10 ] = \r
141 {\r
142 {\r
143          0,   2005,  12717,  20281,  31328,  36234,  45816,  57753,\r
144      63104,  65535\r
145 },\r
146 {\r
147          0,   8553,  23489,  36031,  46295,  53519,  56519,  59151,\r
148      64185,  65535\r
149 }\r
150 };\r
151 \r
152 const SKP_int SKP_Silk_rate_levels_CDF_offset = 4;\r
153 \r
154 \r
155 const SKP_int16 SKP_Silk_rate_levels_BITS_Q6[ 2 ][ 9 ] = \r
156 {\r
157 {\r
158        322,    167,    199,    164,    239,    178,    157,    231,\r
159        304\r
160 },\r
161 {\r
162        188,    137,    153,    171,    204,    285,    297,    237,\r
163        358\r
164 }\r
165 };\r
166 \r
167 const SKP_uint16 SKP_Silk_shell_code_table0[ 33 ] = {\r
168          0,  32748,  65535,      0,   9505,  56230,  65535,      0,\r
169       4093,  32204,  61720,  65535,      0,   2285,  16207,  48750,\r
170      63424,  65535,      0,   1709,   9446,  32026,  55752,  63876,\r
171      65535,      0,   1623,   6986,  21845,  45381,  59147,  64186,\r
172      65535\r
173 };\r
174 \r
175 const SKP_uint16 SKP_Silk_shell_code_table1[ 52 ] = {\r
176          0,  32691,  65535,      0,  12782,  52752,  65535,      0,\r
177       4847,  32665,  60899,  65535,      0,   2500,  17305,  47989,\r
178      63369,  65535,      0,   1843,  10329,  32419,  55433,  64277,\r
179      65535,      0,   1485,   7062,  21465,  43414,  59079,  64623,\r
180      65535,      0,      0,   4841,  14797,  31799,  49667,  61309,\r
181      65535,  65535,      0,      0,      0,   8032,  21695,  41078,\r
182      56317,  65535,  65535,  65535\r
183 };\r
184 \r
185 const SKP_uint16 SKP_Silk_shell_code_table2[ 102 ] = {\r
186          0,  32615,  65535,      0,  14447,  50912,  65535,      0,\r
187       6301,  32587,  59361,  65535,      0,   3038,  18640,  46809,\r
188      62852,  65535,      0,   1746,  10524,  32509,  55273,  64278,\r
189      65535,      0,   1234,   6360,  21259,  43712,  59651,  64805,\r
190      65535,      0,   1020,   4461,  14030,  32286,  51249,  61904,\r
191      65100,  65535,      0,    851,   3435,  10006,  23241,  40797,\r
192      55444,  63009,  65252,  65535,      0,      0,   2075,   7137,\r
193      17119,  31499,  46982,  58723,  63976,  65535,  65535,      0,\r
194          0,      0,   3820,  11572,  23038,  37789,  51969,  61243,\r
195      65535,  65535,  65535,      0,      0,      0,      0,   6882,\r
196      16828,  30444,  44844,  57365,  65535,  65535,  65535,  65535,\r
197          0,      0,      0,      0,      0,  10093,  22963,  38779,\r
198      54426,  65535,  65535,  65535,  65535,  65535\r
199 };\r
200 \r
201 const SKP_uint16 SKP_Silk_shell_code_table3[ 207 ] = {\r
202          0,  32324,  65535,      0,  15328,  49505,  65535,      0,\r
203       7474,  32344,  57955,  65535,      0,   3944,  19450,  45364,\r
204      61873,  65535,      0,   2338,  11698,  32435,  53915,  63734,\r
205      65535,      0,   1506,   7074,  21778,  42972,  58861,  64590,\r
206      65535,      0,   1027,   4490,  14383,  32264,  50980,  61712,\r
207      65043,  65535,      0,    760,   3022,   9696,  23264,  41465,\r
208      56181,  63253,  65251,  65535,      0,    579,   2256,   6873,\r
209      16661,  31951,  48250,  59403,  64198,  65360,  65535,      0,\r
210        464,   1783,   5181,  12269,  24247,  39877,  53490,  61502,\r
211      64591,  65410,  65535,      0,    366,   1332,   3880,   9273,\r
212      18585,  32014,  45928,  56659,  62616,  64899,  65483,  65535,\r
213          0,    286,   1065,   3089,   6969,  14148,  24859,  38274,\r
214      50715,  59078,  63448,  65091,  65481,  65535,      0,      0,\r
215        482,   2010,   5302,  10408,  18988,  30698,  43634,  54233,\r
216      60828,  64119,  65288,  65535,  65535,      0,      0,      0,\r
217       1006,   3531,   7857,  14832,  24543,  36272,  47547,  56883,\r
218      62327,  64746,  65535,  65535,  65535,      0,      0,      0,\r
219          0,   1863,   4950,  10730,  19284,  29397,  41382,  52335,\r
220      59755,  63834,  65535,  65535,  65535,  65535,      0,      0,\r
221          0,      0,      0,   2513,   7290,  14487,  24275,  35312,\r
222      46240,  55841,  62007,  65535,  65535,  65535,  65535,  65535,\r
223          0,      0,      0,      0,      0,      0,   3606,   9573,\r
224      18764,  28667,  40220,  51290,  59924,  65535,  65535,  65535,\r
225      65535,  65535,  65535,      0,      0,      0,      0,      0,\r
226          0,      0,   4879,  13091,  23376,  36061,  49395,  59315,\r
227      65535,  65535,  65535,  65535,  65535,  65535,  65535\r
228 };\r
229 \r
230 const SKP_uint16 SKP_Silk_shell_code_table_offsets[ 19 ] = {\r
231          0,      0,      3,      7,     12,     18,     25,     33,\r
232         42,     52,     63,     75,     88,    102,    117,    133,\r
233        150,    168,    187\r
234 };\r
235 \r