xref: /aosp_15_r20/external/libopus/silk/tables_other.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 "structs.h"
33*a58d3d2aSXin Li #include "define.h"
34*a58d3d2aSXin Li #include "tables.h"
35*a58d3d2aSXin Li 
36*a58d3d2aSXin Li #ifdef __cplusplus
37*a58d3d2aSXin Li extern "C"
38*a58d3d2aSXin Li {
39*a58d3d2aSXin Li #endif
40*a58d3d2aSXin Li 
41*a58d3d2aSXin Li /* Tables for stereo predictor coding */
42*a58d3d2aSXin Li const opus_int16 silk_stereo_pred_quant_Q13[ STEREO_QUANT_TAB_SIZE ] = {
43*a58d3d2aSXin Li     -13732, -10050, -8266, -7526, -6500, -5000, -2950,  -820,
44*a58d3d2aSXin Li        820,   2950,  5000,  6500,  7526,  8266, 10050, 13732
45*a58d3d2aSXin Li };
46*a58d3d2aSXin Li const opus_uint8  silk_stereo_pred_joint_iCDF[ 25 ] = {
47*a58d3d2aSXin Li     249, 247, 246, 245, 244,
48*a58d3d2aSXin Li     234, 210, 202, 201, 200,
49*a58d3d2aSXin Li     197, 174,  82,  59,  56,
50*a58d3d2aSXin Li      55,  54,  46,  22,  12,
51*a58d3d2aSXin Li      11,  10,   9,   7,   0
52*a58d3d2aSXin Li };
53*a58d3d2aSXin Li const opus_uint8  silk_stereo_only_code_mid_iCDF[ 2 ] = { 64, 0 };
54*a58d3d2aSXin Li 
55*a58d3d2aSXin Li /* Tables for LBRR flags */
56*a58d3d2aSXin Li static const opus_uint8 silk_LBRR_flags_2_iCDF[ 3 ] = { 203, 150, 0 };
57*a58d3d2aSXin Li static const opus_uint8 silk_LBRR_flags_3_iCDF[ 7 ] = { 215, 195, 166, 125, 110, 82, 0 };
58*a58d3d2aSXin Li const opus_uint8 * const silk_LBRR_flags_iCDF_ptr[ 2 ] = {
59*a58d3d2aSXin Li     silk_LBRR_flags_2_iCDF,
60*a58d3d2aSXin Li     silk_LBRR_flags_3_iCDF
61*a58d3d2aSXin Li };
62*a58d3d2aSXin Li 
63*a58d3d2aSXin Li /* Table for LSB coding */
64*a58d3d2aSXin Li const opus_uint8 silk_lsb_iCDF[ 2 ] = { 120, 0 };
65*a58d3d2aSXin Li 
66*a58d3d2aSXin Li /* Tables for LTPScale */
67*a58d3d2aSXin Li const opus_uint8 silk_LTPscale_iCDF[ 3 ] = { 128, 64, 0 };
68*a58d3d2aSXin Li 
69*a58d3d2aSXin Li /* Tables for signal type and offset coding */
70*a58d3d2aSXin Li const opus_uint8 silk_type_offset_VAD_iCDF[ 4 ] = {
71*a58d3d2aSXin Li        232,    158,    10,      0
72*a58d3d2aSXin Li };
73*a58d3d2aSXin Li const opus_uint8 silk_type_offset_no_VAD_iCDF[ 2 ] = {
74*a58d3d2aSXin Li        230,      0
75*a58d3d2aSXin Li };
76*a58d3d2aSXin Li 
77*a58d3d2aSXin Li /* Tables for NLSF interpolation factor */
78*a58d3d2aSXin Li const opus_uint8 silk_NLSF_interpolation_factor_iCDF[ 5 ] = { 243, 221, 192, 181, 0 };
79*a58d3d2aSXin Li 
80*a58d3d2aSXin Li /* Quantization offsets */
81*a58d3d2aSXin Li const opus_int16  silk_Quantization_Offsets_Q10[ 2 ][ 2 ] = {
82*a58d3d2aSXin Li     { OFFSET_UVL_Q10, OFFSET_UVH_Q10 }, { OFFSET_VL_Q10, OFFSET_VH_Q10 }
83*a58d3d2aSXin Li };
84*a58d3d2aSXin Li 
85*a58d3d2aSXin Li /* Table for LTPScale */
86*a58d3d2aSXin Li const opus_int16 silk_LTPScales_table_Q14[ 3 ] = { 15565, 12288, 8192 };
87*a58d3d2aSXin Li 
88*a58d3d2aSXin Li /* Uniform entropy tables */
89*a58d3d2aSXin Li const opus_uint8 silk_uniform3_iCDF[ 3 ] = { 171, 85, 0 };
90*a58d3d2aSXin Li const opus_uint8 silk_uniform4_iCDF[ 4 ] = { 192, 128, 64, 0 };
91*a58d3d2aSXin Li const opus_uint8 silk_uniform5_iCDF[ 5 ] = { 205, 154, 102, 51, 0 };
92*a58d3d2aSXin Li const opus_uint8 silk_uniform6_iCDF[ 6 ] = { 213, 171, 128, 85, 43, 0 };
93*a58d3d2aSXin Li const opus_uint8 silk_uniform8_iCDF[ 8 ] = { 224, 192, 160, 128, 96, 64, 32, 0 };
94*a58d3d2aSXin Li 
95*a58d3d2aSXin Li const opus_uint8 silk_NLSF_EXT_iCDF[ 7 ] = { 100, 40, 16, 7, 3, 1, 0 };
96*a58d3d2aSXin Li 
97*a58d3d2aSXin Li /*  Elliptic/Cauer filters designed with 0.1 dB passband ripple,
98*a58d3d2aSXin Li         80 dB minimum stopband attenuation, and
99*a58d3d2aSXin Li         [0.95 : 0.15 : 0.35] normalized cut off frequencies. */
100*a58d3d2aSXin Li 
101*a58d3d2aSXin Li /* Interpolation points for filter coefficients used in the bandwidth transition smoother */
102*a58d3d2aSXin Li const opus_int32 silk_Transition_LP_B_Q28[ TRANSITION_INT_NUM ][ TRANSITION_NB ] =
103*a58d3d2aSXin Li {
104*a58d3d2aSXin Li {    250767114,  501534038,  250767114  },
105*a58d3d2aSXin Li {    209867381,  419732057,  209867381  },
106*a58d3d2aSXin Li {    170987846,  341967853,  170987846  },
107*a58d3d2aSXin Li {    131531482,  263046905,  131531482  },
108*a58d3d2aSXin Li {     89306658,  178584282,   89306658  }
109*a58d3d2aSXin Li };
110*a58d3d2aSXin Li 
111*a58d3d2aSXin Li /* Interpolation points for filter coefficients used in the bandwidth transition smoother */
112*a58d3d2aSXin Li const opus_int32 silk_Transition_LP_A_Q28[ TRANSITION_INT_NUM ][ TRANSITION_NA ] =
113*a58d3d2aSXin Li {
114*a58d3d2aSXin Li {    506393414,  239854379  },
115*a58d3d2aSXin Li {    411067935,  169683996  },
116*a58d3d2aSXin Li {    306733530,  116694253  },
117*a58d3d2aSXin Li {    185807084,   77959395  },
118*a58d3d2aSXin Li {     35497197,   57401098  }
119*a58d3d2aSXin Li };
120*a58d3d2aSXin Li 
121*a58d3d2aSXin Li #ifdef __cplusplus
122*a58d3d2aSXin Li }
123*a58d3d2aSXin Li #endif
124*a58d3d2aSXin Li 
125