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