Home | History | Annotate | Download | only in silk
      1 /***********************************************************************
      2 Copyright (c) 2006-2011, Skype Limited. All rights reserved.
      3 Redistribution and use in source and binary forms, with or without
      4 modification, are permitted provided that the following conditions
      5 are met:
      6 - Redistributions of source code must retain the above copyright notice,
      7 this list of conditions and the following disclaimer.
      8 - Redistributions in binary form must reproduce the above copyright
      9 notice, this list of conditions and the following disclaimer in the
     10 documentation and/or other materials provided with the distribution.
     11 - Neither the name of Internet Society, IETF or IETF Trust, nor the
     12 names of specific contributors, may be used to endorse or promote
     13 products derived from this software without specific prior written
     14 permission.
     15 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     16 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     17 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     18 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
     19 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     20 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     21 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     22 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     23 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     24 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     25 POSSIBILITY OF SUCH DAMAGE.
     26 ***********************************************************************/
     27 
     28 #ifdef HAVE_CONFIG_H
     29 #include "config.h"
     30 #endif
     31 
     32 #include "tables.h"
     33 
     34 const opus_uint8 silk_max_pulses_table[ 4 ] = {
     35          8,     10,     12,     16
     36 };
     37 
     38 const 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 
     91 const 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 
    139 const 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 
    151 const 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 
    163 const 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 
    185 const 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 
    207 const 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 
    229 const 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 
    251 const 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 
    257 const 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