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