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