xref: /aosp_15_r20/external/libopus/silk/tables_NLSF_CB_WB.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 static const opus_uint8 silk_NLSF_CB1_WB_Q8[ 512 ] = {
35*a58d3d2aSXin Li          7,     23,     38,     54,     69,     85,    100,    116,
36*a58d3d2aSXin Li        131,    147,    162,    178,    193,    208,    223,    239,
37*a58d3d2aSXin Li         13,     25,     41,     55,     69,     83,     98,    112,
38*a58d3d2aSXin Li        127,    142,    157,    171,    187,    203,    220,    236,
39*a58d3d2aSXin Li         15,     21,     34,     51,     61,     78,     92,    106,
40*a58d3d2aSXin Li        126,    136,    152,    167,    185,    205,    225,    240,
41*a58d3d2aSXin Li         10,     21,     36,     50,     63,     79,     95,    110,
42*a58d3d2aSXin Li        126,    141,    157,    173,    189,    205,    221,    237,
43*a58d3d2aSXin Li         17,     20,     37,     51,     59,     78,     89,    107,
44*a58d3d2aSXin Li        123,    134,    150,    164,    184,    205,    224,    240,
45*a58d3d2aSXin Li         10,     15,     32,     51,     67,     81,     96,    112,
46*a58d3d2aSXin Li        129,    142,    158,    173,    189,    204,    220,    236,
47*a58d3d2aSXin Li          8,     21,     37,     51,     65,     79,     98,    113,
48*a58d3d2aSXin Li        126,    138,    155,    168,    179,    192,    209,    218,
49*a58d3d2aSXin Li         12,     15,     34,     55,     63,     78,     87,    108,
50*a58d3d2aSXin Li        118,    131,    148,    167,    185,    203,    219,    236,
51*a58d3d2aSXin Li         16,     19,     32,     36,     56,     79,     91,    108,
52*a58d3d2aSXin Li        118,    136,    154,    171,    186,    204,    220,    237,
53*a58d3d2aSXin Li         11,     28,     43,     58,     74,     89,    105,    120,
54*a58d3d2aSXin Li        135,    150,    165,    180,    196,    211,    226,    241,
55*a58d3d2aSXin Li          6,     16,     33,     46,     60,     75,     92,    107,
56*a58d3d2aSXin Li        123,    137,    156,    169,    185,    199,    214,    225,
57*a58d3d2aSXin Li         11,     19,     30,     44,     57,     74,     89,    105,
58*a58d3d2aSXin Li        121,    135,    152,    169,    186,    202,    218,    234,
59*a58d3d2aSXin Li         12,     19,     29,     46,     57,     71,     88,    100,
60*a58d3d2aSXin Li        120,    132,    148,    165,    182,    199,    216,    233,
61*a58d3d2aSXin Li         17,     23,     35,     46,     56,     77,     92,    106,
62*a58d3d2aSXin Li        123,    134,    152,    167,    185,    204,    222,    237,
63*a58d3d2aSXin Li         14,     17,     45,     53,     63,     75,     89,    107,
64*a58d3d2aSXin Li        115,    132,    151,    171,    188,    206,    221,    240,
65*a58d3d2aSXin Li          9,     16,     29,     40,     56,     71,     88,    103,
66*a58d3d2aSXin Li        119,    137,    154,    171,    189,    205,    222,    237,
67*a58d3d2aSXin Li         16,     19,     36,     48,     57,     76,     87,    105,
68*a58d3d2aSXin Li        118,    132,    150,    167,    185,    202,    218,    236,
69*a58d3d2aSXin Li         12,     17,     29,     54,     71,     81,     94,    104,
70*a58d3d2aSXin Li        126,    136,    149,    164,    182,    201,    221,    237,
71*a58d3d2aSXin Li         15,     28,     47,     62,     79,     97,    115,    129,
72*a58d3d2aSXin Li        142,    155,    168,    180,    194,    208,    223,    238,
73*a58d3d2aSXin Li          8,     14,     30,     45,     62,     78,     94,    111,
74*a58d3d2aSXin Li        127,    143,    159,    175,    192,    207,    223,    239,
75*a58d3d2aSXin Li         17,     30,     49,     62,     79,     92,    107,    119,
76*a58d3d2aSXin Li        132,    145,    160,    174,    190,    204,    220,    235,
77*a58d3d2aSXin Li         14,     19,     36,     45,     61,     76,     91,    108,
78*a58d3d2aSXin Li        121,    138,    154,    172,    189,    205,    222,    238,
79*a58d3d2aSXin Li         12,     18,     31,     45,     60,     76,     91,    107,
80*a58d3d2aSXin Li        123,    138,    154,    171,    187,    204,    221,    236,
81*a58d3d2aSXin Li         13,     17,     31,     43,     53,     70,     83,    103,
82*a58d3d2aSXin Li        114,    131,    149,    167,    185,    203,    220,    237,
83*a58d3d2aSXin Li         17,     22,     35,     42,     58,     78,     93,    110,
84*a58d3d2aSXin Li        125,    139,    155,    170,    188,    206,    224,    240,
85*a58d3d2aSXin Li          8,     15,     34,     50,     67,     83,     99,    115,
86*a58d3d2aSXin Li        131,    146,    162,    178,    193,    209,    224,    239,
87*a58d3d2aSXin Li         13,     16,     41,     66,     73,     86,     95,    111,
88*a58d3d2aSXin Li        128,    137,    150,    163,    183,    206,    225,    241,
89*a58d3d2aSXin Li         17,     25,     37,     52,     63,     75,     92,    102,
90*a58d3d2aSXin Li        119,    132,    144,    160,    175,    191,    212,    231,
91*a58d3d2aSXin Li         19,     31,     49,     65,     83,    100,    117,    133,
92*a58d3d2aSXin Li        147,    161,    174,    187,    200,    213,    227,    242,
93*a58d3d2aSXin Li         18,     31,     52,     68,     88,    103,    117,    126,
94*a58d3d2aSXin Li        138,    149,    163,    177,    192,    207,    223,    239,
95*a58d3d2aSXin Li         16,     29,     47,     61,     76,     90,    106,    119,
96*a58d3d2aSXin Li        133,    147,    161,    176,    193,    209,    224,    240,
97*a58d3d2aSXin Li         15,     21,     35,     50,     61,     73,     86,     97,
98*a58d3d2aSXin Li        110,    119,    129,    141,    175,    198,    218,    237
99*a58d3d2aSXin Li };
100*a58d3d2aSXin Li 
101*a58d3d2aSXin Li static const opus_int16 silk_NLSF_CB1_WB_Wght_Q9[ 512 ] = {
102*a58d3d2aSXin Li      3657, 2925, 2925, 2925, 2925, 2925, 2925, 2925, 2925, 2925, 2925, 2925, 2963, 2963, 2925, 2846,
103*a58d3d2aSXin Li      3216, 3085, 2972, 3056, 3056, 3010, 3010, 3010, 2963, 2963, 3010, 2972, 2888, 2846, 2846, 2726,
104*a58d3d2aSXin Li      3920, 4014, 2981, 3207, 3207, 2934, 3056, 2846, 3122, 3244, 2925, 2846, 2620, 2553, 2780, 2925,
105*a58d3d2aSXin Li      3516, 3197, 3010, 3103, 3019, 2888, 2925, 2925, 2925, 2925, 2888, 2888, 2888, 2888, 2888, 2753,
106*a58d3d2aSXin Li      5054, 5054, 2934, 3573, 3385, 3056, 3085, 2793, 3160, 3160, 2972, 2846, 2513, 2540, 2753, 2888,
107*a58d3d2aSXin Li      4428, 4149, 2700, 2753, 2972, 3010, 2925, 2846, 2981, 3019, 2925, 2925, 2925, 2925, 2888, 2726,
108*a58d3d2aSXin Li      3620, 3019, 2972, 3056, 3056, 2873, 2806, 3056, 3216, 3047, 2981, 3291, 3291, 2981, 3310, 2991,
109*a58d3d2aSXin Li      5227, 5014, 2540, 3338, 3526, 3385, 3197, 3094, 3376, 2981, 2700, 2647, 2687, 2793, 2846, 2673,
110*a58d3d2aSXin Li      5081, 5174, 4615, 4428, 2460, 2897, 3047, 3207, 3169, 2687, 2740, 2888, 2846, 2793, 2846, 2700,
111*a58d3d2aSXin Li      3122, 2888, 2963, 2925, 2925, 2925, 2925, 2963, 2963, 2963, 2963, 2925, 2925, 2963, 2963, 2963,
112*a58d3d2aSXin Li      4202, 3207, 2981, 3103, 3010, 2888, 2888, 2925, 2972, 2873, 2916, 3019, 2972, 3010, 3197, 2873,
113*a58d3d2aSXin Li      3760, 3760, 3244, 3103, 2981, 2888, 2925, 2888, 2972, 2934, 2793, 2793, 2846, 2888, 2888, 2660,
114*a58d3d2aSXin Li      3854, 4014, 3207, 3122, 3244, 2934, 3047, 2963, 2963, 3085, 2846, 2793, 2793, 2793, 2793, 2580,
115*a58d3d2aSXin Li      3845, 4080, 3357, 3516, 3094, 2740, 3010, 2934, 3122, 3085, 2846, 2846, 2647, 2647, 2846, 2806,
116*a58d3d2aSXin Li      5147, 4894, 3225, 3845, 3441, 3169, 2897, 3413, 3451, 2700, 2580, 2673, 2740, 2846, 2806, 2753,
117*a58d3d2aSXin Li      4109, 3789, 3291, 3160, 2925, 2888, 2888, 2925, 2793, 2740, 2793, 2740, 2793, 2846, 2888, 2806,
118*a58d3d2aSXin Li      5081, 5054, 3047, 3545, 3244, 3056, 3085, 2944, 3103, 2897, 2740, 2740, 2740, 2846, 2793, 2620,
119*a58d3d2aSXin Li      4309, 4309, 2860, 2527, 3207, 3376, 3376, 3075, 3075, 3376, 3056, 2846, 2647, 2580, 2726, 2753,
120*a58d3d2aSXin Li      3056, 2916, 2806, 2888, 2740, 2687, 2897, 3103, 3150, 3150, 3216, 3169, 3056, 3010, 2963, 2846,
121*a58d3d2aSXin Li      4375, 3882, 2925, 2888, 2846, 2888, 2846, 2846, 2888, 2888, 2888, 2846, 2888, 2925, 2888, 2846,
122*a58d3d2aSXin Li      2981, 2916, 2916, 2981, 2981, 3056, 3122, 3216, 3150, 3056, 3010, 2972, 2972, 2972, 2925, 2740,
123*a58d3d2aSXin Li      4229, 4149, 3310, 3347, 2925, 2963, 2888, 2981, 2981, 2846, 2793, 2740, 2846, 2846, 2846, 2793,
124*a58d3d2aSXin Li      4080, 4014, 3103, 3010, 2925, 2925, 2925, 2888, 2925, 2925, 2846, 2846, 2846, 2793, 2888, 2780,
125*a58d3d2aSXin Li      4615, 4575, 3169, 3441, 3207, 2981, 2897, 3038, 3122, 2740, 2687, 2687, 2687, 2740, 2793, 2700,
126*a58d3d2aSXin Li      4149, 4269, 3789, 3657, 2726, 2780, 2888, 2888, 3010, 2972, 2925, 2846, 2687, 2687, 2793, 2888,
127*a58d3d2aSXin Li      4215, 3554, 2753, 2846, 2846, 2888, 2888, 2888, 2925, 2925, 2888, 2925, 2925, 2925, 2963, 2888,
128*a58d3d2aSXin Li      5174, 4921, 2261, 3432, 3789, 3479, 3347, 2846, 3310, 3479, 3150, 2897, 2460, 2487, 2753, 2925,
129*a58d3d2aSXin Li      3451, 3685, 3122, 3197, 3357, 3047, 3207, 3207, 2981, 3216, 3085, 2925, 2925, 2687, 2540, 2434,
130*a58d3d2aSXin Li      2981, 3010, 2793, 2793, 2740, 2793, 2846, 2972, 3056, 3103, 3150, 3150, 3150, 3103, 3010, 3010,
131*a58d3d2aSXin Li      2944, 2873, 2687, 2726, 2780, 3010, 3432, 3545, 3357, 3244, 3056, 3010, 2963, 2925, 2888, 2846,
132*a58d3d2aSXin Li      3019, 2944, 2897, 3010, 3010, 2972, 3019, 3103, 3056, 3056, 3010, 2888, 2846, 2925, 2925, 2888,
133*a58d3d2aSXin Li      3920, 3967, 3010, 3197, 3357, 3216, 3291, 3291, 3479, 3704, 3441, 2726, 2181, 2460, 2580, 2607
134*a58d3d2aSXin Li };
135*a58d3d2aSXin Li 
136*a58d3d2aSXin Li static const opus_uint8 silk_NLSF_CB1_iCDF_WB[ 64 ] = {
137*a58d3d2aSXin Li        225,    204,    201,    184,    183,    175,    158,    154,
138*a58d3d2aSXin Li        153,    135,    119,    115,    113,    110,    109,     99,
139*a58d3d2aSXin Li         98,     95,     79,     68,     52,     50,     48,     45,
140*a58d3d2aSXin Li         43,     32,     31,     27,     18,     10,      3,      0,
141*a58d3d2aSXin Li        255,    251,    235,    230,    212,    201,    196,    182,
142*a58d3d2aSXin Li        167,    166,    163,    151,    138,    124,    110,    104,
143*a58d3d2aSXin Li         90,     78,     76,     70,     69,     57,     45,     34,
144*a58d3d2aSXin Li         24,     21,     11,      6,      5,      4,      3,      0
145*a58d3d2aSXin Li };
146*a58d3d2aSXin Li 
147*a58d3d2aSXin Li static const opus_uint8 silk_NLSF_CB2_SELECT_WB[ 256 ] = {
148*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      1,
149*a58d3d2aSXin Li        100,    102,    102,     68,     68,     36,     34,     96,
150*a58d3d2aSXin Li        164,    107,    158,    185,    180,    185,    139,    102,
151*a58d3d2aSXin Li         64,     66,     36,     34,     34,      0,      1,     32,
152*a58d3d2aSXin Li        208,    139,    141,    191,    152,    185,    155,    104,
153*a58d3d2aSXin Li         96,    171,    104,    166,    102,    102,    102,    132,
154*a58d3d2aSXin Li          1,      0,      0,      0,      0,     16,     16,      0,
155*a58d3d2aSXin Li         80,    109,     78,    107,    185,    139,    103,    101,
156*a58d3d2aSXin Li        208,    212,    141,    139,    173,    153,    123,    103,
157*a58d3d2aSXin Li         36,      0,      0,      0,      0,      0,      0,      1,
158*a58d3d2aSXin Li         48,      0,      0,      0,      0,      0,      0,     32,
159*a58d3d2aSXin Li         68,    135,    123,    119,    119,    103,     69,     98,
160*a58d3d2aSXin Li         68,    103,    120,    118,    118,    102,     71,     98,
161*a58d3d2aSXin Li        134,    136,    157,    184,    182,    153,    139,    134,
162*a58d3d2aSXin Li        208,    168,    248,     75,    189,    143,    121,    107,
163*a58d3d2aSXin Li         32,     49,     34,     34,     34,      0,     17,      2,
164*a58d3d2aSXin Li        210,    235,    139,    123,    185,    137,    105,    134,
165*a58d3d2aSXin Li         98,    135,    104,    182,    100,    183,    171,    134,
166*a58d3d2aSXin Li        100,     70,     68,     70,     66,     66,     34,    131,
167*a58d3d2aSXin Li         64,    166,    102,     68,     36,      2,      1,      0,
168*a58d3d2aSXin Li        134,    166,    102,     68,     34,     34,     66,    132,
169*a58d3d2aSXin Li        212,    246,    158,    139,    107,    107,     87,    102,
170*a58d3d2aSXin Li        100,    219,    125,    122,    137,    118,    103,    132,
171*a58d3d2aSXin Li        114,    135,    137,    105,    171,    106,     50,     34,
172*a58d3d2aSXin Li        164,    214,    141,    143,    185,    151,    121,    103,
173*a58d3d2aSXin Li        192,     34,      0,      0,      0,      0,      0,      1,
174*a58d3d2aSXin Li        208,    109,     74,    187,    134,    249,    159,    137,
175*a58d3d2aSXin Li        102,    110,    154,    118,     87,    101,    119,    101,
176*a58d3d2aSXin Li          0,      2,      0,     36,     36,     66,     68,     35,
177*a58d3d2aSXin Li         96,    164,    102,    100,     36,      0,      2,     33,
178*a58d3d2aSXin Li        167,    138,    174,    102,    100,     84,      2,      2,
179*a58d3d2aSXin Li        100,    107,    120,    119,     36,    197,     24,      0
180*a58d3d2aSXin Li };
181*a58d3d2aSXin Li 
182*a58d3d2aSXin Li static const opus_uint8 silk_NLSF_CB2_iCDF_WB[ 72 ] = {
183*a58d3d2aSXin Li        255,    254,    253,    244,     12,      3,      2,      1,
184*a58d3d2aSXin Li          0,    255,    254,    252,    224,     38,      3,      2,
185*a58d3d2aSXin Li          1,      0,    255,    254,    251,    209,     57,      4,
186*a58d3d2aSXin Li          2,      1,      0,    255,    254,    244,    195,     69,
187*a58d3d2aSXin Li          4,      2,      1,      0,    255,    251,    232,    184,
188*a58d3d2aSXin Li         84,      7,      2,      1,      0,    255,    254,    240,
189*a58d3d2aSXin Li        186,     86,     14,      2,      1,      0,    255,    254,
190*a58d3d2aSXin Li        239,    178,     91,     30,      5,      1,      0,    255,
191*a58d3d2aSXin Li        248,    227,    177,    100,     19,      2,      1,      0
192*a58d3d2aSXin Li };
193*a58d3d2aSXin Li 
194*a58d3d2aSXin Li static const opus_uint8 silk_NLSF_CB2_BITS_WB_Q5[ 72 ] = {
195*a58d3d2aSXin Li        255,    255,    255,    156,      4,    154,    255,    255,
196*a58d3d2aSXin Li        255,    255,    255,    227,    102,     15,     92,    255,
197*a58d3d2aSXin Li        255,    255,    255,    255,    213,     83,     24,     72,
198*a58d3d2aSXin Li        236,    255,    255,    255,    255,    150,     76,     33,
199*a58d3d2aSXin Li         63,    214,    255,    255,    255,    190,    121,     77,
200*a58d3d2aSXin Li         43,     55,    185,    255,    255,    255,    245,    137,
201*a58d3d2aSXin Li         71,     43,     59,    139,    255,    255,    255,    255,
202*a58d3d2aSXin Li        131,     66,     50,     66,    107,    194,    255,    255,
203*a58d3d2aSXin Li        166,    116,     76,     55,     53,    125,    255,    255
204*a58d3d2aSXin Li };
205*a58d3d2aSXin Li 
206*a58d3d2aSXin Li static const opus_uint8 silk_NLSF_PRED_WB_Q8[ 30 ] = {
207*a58d3d2aSXin Li        175,    148,    160,    176,    178,    173,    174,    164,
208*a58d3d2aSXin Li        177,    174,    196,    182,    198,    192,    182,     68,
209*a58d3d2aSXin Li         62,     66,     60,     72,    117,     85,     90,    118,
210*a58d3d2aSXin Li        136,    151,    142,    160,    142,    155
211*a58d3d2aSXin Li };
212*a58d3d2aSXin Li 
213*a58d3d2aSXin Li static const opus_int16 silk_NLSF_DELTA_MIN_WB_Q15[ 17 ] = {
214*a58d3d2aSXin Li        100,      3,     40,      3,      3,      3,      5,     14,
215*a58d3d2aSXin Li         14,     10,     11,      3,      8,      9,      7,      3,
216*a58d3d2aSXin Li        347
217*a58d3d2aSXin Li };
218*a58d3d2aSXin Li 
219*a58d3d2aSXin Li const silk_NLSF_CB_struct silk_NLSF_CB_WB =
220*a58d3d2aSXin Li {
221*a58d3d2aSXin Li     32,
222*a58d3d2aSXin Li     16,
223*a58d3d2aSXin Li     SILK_FIX_CONST( 0.15, 16 ),
224*a58d3d2aSXin Li     SILK_FIX_CONST( 1.0 / 0.15, 6 ),
225*a58d3d2aSXin Li     silk_NLSF_CB1_WB_Q8,
226*a58d3d2aSXin Li     silk_NLSF_CB1_WB_Wght_Q9,
227*a58d3d2aSXin Li     silk_NLSF_CB1_iCDF_WB,
228*a58d3d2aSXin Li     silk_NLSF_PRED_WB_Q8,
229*a58d3d2aSXin Li     silk_NLSF_CB2_SELECT_WB,
230*a58d3d2aSXin Li     silk_NLSF_CB2_iCDF_WB,
231*a58d3d2aSXin Li     silk_NLSF_CB2_BITS_WB_Q5,
232*a58d3d2aSXin Li     silk_NLSF_DELTA_MIN_WB_Q15,
233*a58d3d2aSXin Li };
234*a58d3d2aSXin Li 
235