235 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			235 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | /***********************************************************************
 | ||
|  | Copyright (c) 2006-2011, Skype Limited. All rights reserved. | ||
|  | Redistribution and use in source and binary forms, with or without | ||
|  | modification, are permitted provided that the following conditions | ||
|  | are met: | ||
|  | - Redistributions of source code must retain the above copyright notice, | ||
|  | this list of conditions and the following disclaimer. | ||
|  | - Redistributions in binary form must reproduce the above copyright | ||
|  | notice, this list of conditions and the following disclaimer in the | ||
|  | documentation and/or other materials provided with the distribution. | ||
|  | - Neither the name of Internet Society, IETF or IETF Trust, nor the | ||
|  | names of specific contributors, may be used to endorse or promote | ||
|  | products derived from this software without specific prior written | ||
|  | permission. | ||
|  | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
|  | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
|  | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
|  | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | ||
|  | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
|  | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
|  | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
|  | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
|  | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
|  | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
|  | POSSIBILITY OF SUCH DAMAGE. | ||
|  | ***********************************************************************/ | ||
|  | 
 | ||
|  | #ifdef HAVE_CONFIG_H
 | ||
|  | #include "config.h"
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #include "tables.h"
 | ||
|  | 
 | ||
|  | static const opus_uint8 silk_NLSF_CB1_WB_Q8[ 512 ] = { | ||
|  |          7,     23,     38,     54,     69,     85,    100,    116, | ||
|  |        131,    147,    162,    178,    193,    208,    223,    239, | ||
|  |         13,     25,     41,     55,     69,     83,     98,    112, | ||
|  |        127,    142,    157,    171,    187,    203,    220,    236, | ||
|  |         15,     21,     34,     51,     61,     78,     92,    106, | ||
|  |        126,    136,    152,    167,    185,    205,    225,    240, | ||
|  |         10,     21,     36,     50,     63,     79,     95,    110, | ||
|  |        126,    141,    157,    173,    189,    205,    221,    237, | ||
|  |         17,     20,     37,     51,     59,     78,     89,    107, | ||
|  |        123,    134,    150,    164,    184,    205,    224,    240, | ||
|  |         10,     15,     32,     51,     67,     81,     96,    112, | ||
|  |        129,    142,    158,    173,    189,    204,    220,    236, | ||
|  |          8,     21,     37,     51,     65,     79,     98,    113, | ||
|  |        126,    138,    155,    168,    179,    192,    209,    218, | ||
|  |         12,     15,     34,     55,     63,     78,     87,    108, | ||
|  |        118,    131,    148,    167,    185,    203,    219,    236, | ||
|  |         16,     19,     32,     36,     56,     79,     91,    108, | ||
|  |        118,    136,    154,    171,    186,    204,    220,    237, | ||
|  |         11,     28,     43,     58,     74,     89,    105,    120, | ||
|  |        135,    150,    165,    180,    196,    211,    226,    241, | ||
|  |          6,     16,     33,     46,     60,     75,     92,    107, | ||
|  |        123,    137,    156,    169,    185,    199,    214,    225, | ||
|  |         11,     19,     30,     44,     57,     74,     89,    105, | ||
|  |        121,    135,    152,    169,    186,    202,    218,    234, | ||
|  |         12,     19,     29,     46,     57,     71,     88,    100, | ||
|  |        120,    132,    148,    165,    182,    199,    216,    233, | ||
|  |         17,     23,     35,     46,     56,     77,     92,    106, | ||
|  |        123,    134,    152,    167,    185,    204,    222,    237, | ||
|  |         14,     17,     45,     53,     63,     75,     89,    107, | ||
|  |        115,    132,    151,    171,    188,    206,    221,    240, | ||
|  |          9,     16,     29,     40,     56,     71,     88,    103, | ||
|  |        119,    137,    154,    171,    189,    205,    222,    237, | ||
|  |         16,     19,     36,     48,     57,     76,     87,    105, | ||
|  |        118,    132,    150,    167,    185,    202,    218,    236, | ||
|  |         12,     17,     29,     54,     71,     81,     94,    104, | ||
|  |        126,    136,    149,    164,    182,    201,    221,    237, | ||
|  |         15,     28,     47,     62,     79,     97,    115,    129, | ||
|  |        142,    155,    168,    180,    194,    208,    223,    238, | ||
|  |          8,     14,     30,     45,     62,     78,     94,    111, | ||
|  |        127,    143,    159,    175,    192,    207,    223,    239, | ||
|  |         17,     30,     49,     62,     79,     92,    107,    119, | ||
|  |        132,    145,    160,    174,    190,    204,    220,    235, | ||
|  |         14,     19,     36,     45,     61,     76,     91,    108, | ||
|  |        121,    138,    154,    172,    189,    205,    222,    238, | ||
|  |         12,     18,     31,     45,     60,     76,     91,    107, | ||
|  |        123,    138,    154,    171,    187,    204,    221,    236, | ||
|  |         13,     17,     31,     43,     53,     70,     83,    103, | ||
|  |        114,    131,    149,    167,    185,    203,    220,    237, | ||
|  |         17,     22,     35,     42,     58,     78,     93,    110, | ||
|  |        125,    139,    155,    170,    188,    206,    224,    240, | ||
|  |          8,     15,     34,     50,     67,     83,     99,    115, | ||
|  |        131,    146,    162,    178,    193,    209,    224,    239, | ||
|  |         13,     16,     41,     66,     73,     86,     95,    111, | ||
|  |        128,    137,    150,    163,    183,    206,    225,    241, | ||
|  |         17,     25,     37,     52,     63,     75,     92,    102, | ||
|  |        119,    132,    144,    160,    175,    191,    212,    231, | ||
|  |         19,     31,     49,     65,     83,    100,    117,    133, | ||
|  |        147,    161,    174,    187,    200,    213,    227,    242, | ||
|  |         18,     31,     52,     68,     88,    103,    117,    126, | ||
|  |        138,    149,    163,    177,    192,    207,    223,    239, | ||
|  |         16,     29,     47,     61,     76,     90,    106,    119, | ||
|  |        133,    147,    161,    176,    193,    209,    224,    240, | ||
|  |         15,     21,     35,     50,     61,     73,     86,     97, | ||
|  |        110,    119,    129,    141,    175,    198,    218,    237 | ||
|  | }; | ||
|  | 
 | ||
|  | static const opus_int16 silk_NLSF_CB1_WB_Wght_Q9[ 512 ] = { | ||
|  |      3657, 2925, 2925, 2925, 2925, 2925, 2925, 2925, 2925, 2925, 2925, 2925, 2963, 2963, 2925, 2846, | ||
|  |      3216, 3085, 2972, 3056, 3056, 3010, 3010, 3010, 2963, 2963, 3010, 2972, 2888, 2846, 2846, 2726, | ||
|  |      3920, 4014, 2981, 3207, 3207, 2934, 3056, 2846, 3122, 3244, 2925, 2846, 2620, 2553, 2780, 2925, | ||
|  |      3516, 3197, 3010, 3103, 3019, 2888, 2925, 2925, 2925, 2925, 2888, 2888, 2888, 2888, 2888, 2753, | ||
|  |      5054, 5054, 2934, 3573, 3385, 3056, 3085, 2793, 3160, 3160, 2972, 2846, 2513, 2540, 2753, 2888, | ||
|  |      4428, 4149, 2700, 2753, 2972, 3010, 2925, 2846, 2981, 3019, 2925, 2925, 2925, 2925, 2888, 2726, | ||
|  |      3620, 3019, 2972, 3056, 3056, 2873, 2806, 3056, 3216, 3047, 2981, 3291, 3291, 2981, 3310, 2991, | ||
|  |      5227, 5014, 2540, 3338, 3526, 3385, 3197, 3094, 3376, 2981, 2700, 2647, 2687, 2793, 2846, 2673, | ||
|  |      5081, 5174, 4615, 4428, 2460, 2897, 3047, 3207, 3169, 2687, 2740, 2888, 2846, 2793, 2846, 2700, | ||
|  |      3122, 2888, 2963, 2925, 2925, 2925, 2925, 2963, 2963, 2963, 2963, 2925, 2925, 2963, 2963, 2963, | ||
|  |      4202, 3207, 2981, 3103, 3010, 2888, 2888, 2925, 2972, 2873, 2916, 3019, 2972, 3010, 3197, 2873, | ||
|  |      3760, 3760, 3244, 3103, 2981, 2888, 2925, 2888, 2972, 2934, 2793, 2793, 2846, 2888, 2888, 2660, | ||
|  |      3854, 4014, 3207, 3122, 3244, 2934, 3047, 2963, 2963, 3085, 2846, 2793, 2793, 2793, 2793, 2580, | ||
|  |      3845, 4080, 3357, 3516, 3094, 2740, 3010, 2934, 3122, 3085, 2846, 2846, 2647, 2647, 2846, 2806, | ||
|  |      5147, 4894, 3225, 3845, 3441, 3169, 2897, 3413, 3451, 2700, 2580, 2673, 2740, 2846, 2806, 2753, | ||
|  |      4109, 3789, 3291, 3160, 2925, 2888, 2888, 2925, 2793, 2740, 2793, 2740, 2793, 2846, 2888, 2806, | ||
|  |      5081, 5054, 3047, 3545, 3244, 3056, 3085, 2944, 3103, 2897, 2740, 2740, 2740, 2846, 2793, 2620, | ||
|  |      4309, 4309, 2860, 2527, 3207, 3376, 3376, 3075, 3075, 3376, 3056, 2846, 2647, 2580, 2726, 2753, | ||
|  |      3056, 2916, 2806, 2888, 2740, 2687, 2897, 3103, 3150, 3150, 3216, 3169, 3056, 3010, 2963, 2846, | ||
|  |      4375, 3882, 2925, 2888, 2846, 2888, 2846, 2846, 2888, 2888, 2888, 2846, 2888, 2925, 2888, 2846, | ||
|  |      2981, 2916, 2916, 2981, 2981, 3056, 3122, 3216, 3150, 3056, 3010, 2972, 2972, 2972, 2925, 2740, | ||
|  |      4229, 4149, 3310, 3347, 2925, 2963, 2888, 2981, 2981, 2846, 2793, 2740, 2846, 2846, 2846, 2793, | ||
|  |      4080, 4014, 3103, 3010, 2925, 2925, 2925, 2888, 2925, 2925, 2846, 2846, 2846, 2793, 2888, 2780, | ||
|  |      4615, 4575, 3169, 3441, 3207, 2981, 2897, 3038, 3122, 2740, 2687, 2687, 2687, 2740, 2793, 2700, | ||
|  |      4149, 4269, 3789, 3657, 2726, 2780, 2888, 2888, 3010, 2972, 2925, 2846, 2687, 2687, 2793, 2888, | ||
|  |      4215, 3554, 2753, 2846, 2846, 2888, 2888, 2888, 2925, 2925, 2888, 2925, 2925, 2925, 2963, 2888, | ||
|  |      5174, 4921, 2261, 3432, 3789, 3479, 3347, 2846, 3310, 3479, 3150, 2897, 2460, 2487, 2753, 2925, | ||
|  |      3451, 3685, 3122, 3197, 3357, 3047, 3207, 3207, 2981, 3216, 3085, 2925, 2925, 2687, 2540, 2434, | ||
|  |      2981, 3010, 2793, 2793, 2740, 2793, 2846, 2972, 3056, 3103, 3150, 3150, 3150, 3103, 3010, 3010, | ||
|  |      2944, 2873, 2687, 2726, 2780, 3010, 3432, 3545, 3357, 3244, 3056, 3010, 2963, 2925, 2888, 2846, | ||
|  |      3019, 2944, 2897, 3010, 3010, 2972, 3019, 3103, 3056, 3056, 3010, 2888, 2846, 2925, 2925, 2888, | ||
|  |      3920, 3967, 3010, 3197, 3357, 3216, 3291, 3291, 3479, 3704, 3441, 2726, 2181, 2460, 2580, 2607 | ||
|  | }; | ||
|  | 
 | ||
|  | static const opus_uint8 silk_NLSF_CB1_iCDF_WB[ 64 ] = { | ||
|  |        225,    204,    201,    184,    183,    175,    158,    154, | ||
|  |        153,    135,    119,    115,    113,    110,    109,     99, | ||
|  |         98,     95,     79,     68,     52,     50,     48,     45, | ||
|  |         43,     32,     31,     27,     18,     10,      3,      0, | ||
|  |        255,    251,    235,    230,    212,    201,    196,    182, | ||
|  |        167,    166,    163,    151,    138,    124,    110,    104, | ||
|  |         90,     78,     76,     70,     69,     57,     45,     34, | ||
|  |         24,     21,     11,      6,      5,      4,      3,      0 | ||
|  | }; | ||
|  | 
 | ||
|  | static const opus_uint8 silk_NLSF_CB2_SELECT_WB[ 256 ] = { | ||
|  |          0,      0,      0,      0,      0,      0,      0,      1, | ||
|  |        100,    102,    102,     68,     68,     36,     34,     96, | ||
|  |        164,    107,    158,    185,    180,    185,    139,    102, | ||
|  |         64,     66,     36,     34,     34,      0,      1,     32, | ||
|  |        208,    139,    141,    191,    152,    185,    155,    104, | ||
|  |         96,    171,    104,    166,    102,    102,    102,    132, | ||
|  |          1,      0,      0,      0,      0,     16,     16,      0, | ||
|  |         80,    109,     78,    107,    185,    139,    103,    101, | ||
|  |        208,    212,    141,    139,    173,    153,    123,    103, | ||
|  |         36,      0,      0,      0,      0,      0,      0,      1, | ||
|  |         48,      0,      0,      0,      0,      0,      0,     32, | ||
|  |         68,    135,    123,    119,    119,    103,     69,     98, | ||
|  |         68,    103,    120,    118,    118,    102,     71,     98, | ||
|  |        134,    136,    157,    184,    182,    153,    139,    134, | ||
|  |        208,    168,    248,     75,    189,    143,    121,    107, | ||
|  |         32,     49,     34,     34,     34,      0,     17,      2, | ||
|  |        210,    235,    139,    123,    185,    137,    105,    134, | ||
|  |         98,    135,    104,    182,    100,    183,    171,    134, | ||
|  |        100,     70,     68,     70,     66,     66,     34,    131, | ||
|  |         64,    166,    102,     68,     36,      2,      1,      0, | ||
|  |        134,    166,    102,     68,     34,     34,     66,    132, | ||
|  |        212,    246,    158,    139,    107,    107,     87,    102, | ||
|  |        100,    219,    125,    122,    137,    118,    103,    132, | ||
|  |        114,    135,    137,    105,    171,    106,     50,     34, | ||
|  |        164,    214,    141,    143,    185,    151,    121,    103, | ||
|  |        192,     34,      0,      0,      0,      0,      0,      1, | ||
|  |        208,    109,     74,    187,    134,    249,    159,    137, | ||
|  |        102,    110,    154,    118,     87,    101,    119,    101, | ||
|  |          0,      2,      0,     36,     36,     66,     68,     35, | ||
|  |         96,    164,    102,    100,     36,      0,      2,     33, | ||
|  |        167,    138,    174,    102,    100,     84,      2,      2, | ||
|  |        100,    107,    120,    119,     36,    197,     24,      0 | ||
|  | }; | ||
|  | 
 | ||
|  | static const opus_uint8 silk_NLSF_CB2_iCDF_WB[ 72 ] = { | ||
|  |        255,    254,    253,    244,     12,      3,      2,      1, | ||
|  |          0,    255,    254,    252,    224,     38,      3,      2, | ||
|  |          1,      0,    255,    254,    251,    209,     57,      4, | ||
|  |          2,      1,      0,    255,    254,    244,    195,     69, | ||
|  |          4,      2,      1,      0,    255,    251,    232,    184, | ||
|  |         84,      7,      2,      1,      0,    255,    254,    240, | ||
|  |        186,     86,     14,      2,      1,      0,    255,    254, | ||
|  |        239,    178,     91,     30,      5,      1,      0,    255, | ||
|  |        248,    227,    177,    100,     19,      2,      1,      0 | ||
|  | }; | ||
|  | 
 | ||
|  | static const opus_uint8 silk_NLSF_CB2_BITS_WB_Q5[ 72 ] = { | ||
|  |        255,    255,    255,    156,      4,    154,    255,    255, | ||
|  |        255,    255,    255,    227,    102,     15,     92,    255, | ||
|  |        255,    255,    255,    255,    213,     83,     24,     72, | ||
|  |        236,    255,    255,    255,    255,    150,     76,     33, | ||
|  |         63,    214,    255,    255,    255,    190,    121,     77, | ||
|  |         43,     55,    185,    255,    255,    255,    245,    137, | ||
|  |         71,     43,     59,    139,    255,    255,    255,    255, | ||
|  |        131,     66,     50,     66,    107,    194,    255,    255, | ||
|  |        166,    116,     76,     55,     53,    125,    255,    255 | ||
|  | }; | ||
|  | 
 | ||
|  | static const opus_uint8 silk_NLSF_PRED_WB_Q8[ 30 ] = { | ||
|  |        175,    148,    160,    176,    178,    173,    174,    164, | ||
|  |        177,    174,    196,    182,    198,    192,    182,     68, | ||
|  |         62,     66,     60,     72,    117,     85,     90,    118, | ||
|  |        136,    151,    142,    160,    142,    155 | ||
|  | }; | ||
|  | 
 | ||
|  | static const opus_int16 silk_NLSF_DELTA_MIN_WB_Q15[ 17 ] = { | ||
|  |        100,      3,     40,      3,      3,      3,      5,     14, | ||
|  |         14,     10,     11,      3,      8,      9,      7,      3, | ||
|  |        347 | ||
|  | }; | ||
|  | 
 | ||
|  | const silk_NLSF_CB_struct silk_NLSF_CB_WB = | ||
|  | { | ||
|  |     32, | ||
|  |     16, | ||
|  |     SILK_FIX_CONST( 0.15, 16 ), | ||
|  |     SILK_FIX_CONST( 1.0 / 0.15, 6 ), | ||
|  |     silk_NLSF_CB1_WB_Q8, | ||
|  |     silk_NLSF_CB1_WB_Wght_Q9, | ||
|  |     silk_NLSF_CB1_iCDF_WB, | ||
|  |     silk_NLSF_PRED_WB_Q8, | ||
|  |     silk_NLSF_CB2_SELECT_WB, | ||
|  |     silk_NLSF_CB2_iCDF_WB, | ||
|  |     silk_NLSF_CB2_BITS_WB_Q5, | ||
|  |     silk_NLSF_DELTA_MIN_WB_Q15, | ||
|  | }; | ||
|  | 
 |