Home | History | Annotate | Download | only in source
      1 /*
      2  *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 /*
     12  * SWB_KLT_Tables_LPCGain.c
     13  *
     14  * This file defines tables used for entropy coding of LPC Gain
     15  * of upper-band.
     16  *
     17  */
     18 
     19 #include "lpc_gain_swb_tables.h"
     20 #include "settings.h"
     21 #include "webrtc/typedefs.h"
     22 
     23 const double WebRtcIsac_kQSizeLpcGain = 0.100000;
     24 
     25 const double WebRtcIsac_kMeanLpcGain = -3.3822;
     26 
     27 /*
     28 * The smallest reconstruction points for quantiztion of
     29 * LPC gains.
     30 */
     31 const double WebRtcIsac_kLeftRecPointLpcGain[SUBFRAMES] =
     32 {
     33    -0.800000, -1.000000, -1.200000, -2.200000, -3.000000, -12.700000
     34 };
     35 
     36 /*
     37 * Number of reconstruction points of quantizers for LPC Gains.
     38 */
     39 const int16_t WebRtcIsac_kNumQCellLpcGain[SUBFRAMES] =
     40 {
     41     17,  20,  25,  45,  77, 170
     42 };
     43 /*
     44 * Starting index for entropy decoder to search for the right interval,
     45 * one entry per LAR coefficient
     46 */
     47 const uint16_t WebRtcIsac_kLpcGainEntropySearch[SUBFRAMES] =
     48 {
     49      8,  10,  12,  22,  38,  85
     50 };
     51 
     52 /*
     53 * The following 6 vectors define CDF of 6 decorrelated LPC
     54 * gains.
     55 */
     56 const uint16_t WebRtcIsac_kLpcGainCdfVec0[18] =
     57 {
     58      0,    10,    27,    83,   234,   568,  1601,  4683, 16830, 57534, 63437,
     59  64767, 65229, 65408, 65483, 65514, 65527, 65535
     60 };
     61 
     62 const uint16_t WebRtcIsac_kLpcGainCdfVec1[21] =
     63 {
     64      0,    15,    33,    84,   185,   385,   807,  1619,  3529,  7850, 19488,
     65  51365, 62437, 64548, 65088, 65304, 65409, 65484, 65507, 65522, 65535
     66 };
     67 
     68 const uint16_t WebRtcIsac_kLpcGainCdfVec2[26] =
     69 {
     70      0,    15,    29,    54,    89,   145,   228,   380,   652,  1493,  4260,
     71  12359, 34133, 50749, 57224, 60814, 62927, 64078, 64742, 65103, 65311, 65418,
     72  65473, 65509, 65521, 65535
     73 };
     74 
     75 const uint16_t WebRtcIsac_kLpcGainCdfVec3[46] =
     76 {
     77      0,     8,    12,    16,    26,    42,    56,    76,   111,   164,   247,
     78    366,   508,   693,  1000,  1442,  2155,  3188,  4854,  7387, 11249, 17617,
     79  30079, 46711, 56291, 60127, 62140, 63258, 63954, 64384, 64690, 64891, 65031,
     80  65139, 65227, 65293, 65351, 65399, 65438, 65467, 65492, 65504, 65510, 65518,
     81  65523, 65535
     82 };
     83 
     84 const uint16_t WebRtcIsac_kLpcGainCdfVec4[78] =
     85 {
     86      0,    17,    29,    39,    51,    70,   104,   154,   234,   324,   443,
     87    590,   760,   971,  1202,  1494,  1845,  2274,  2797,  3366,  4088,  4905,
     88   5899,  7142,  8683, 10625, 12983, 16095, 20637, 28216, 38859, 47237, 51537,
     89  54150, 56066, 57583, 58756, 59685, 60458, 61103, 61659, 62144, 62550, 62886,
     90  63186, 63480, 63743, 63954, 64148, 64320, 64467, 64600, 64719, 64837, 64939,
     91  65014, 65098, 65160, 65211, 65250, 65290, 65325, 65344, 65366, 65391, 65410,
     92  65430, 65447, 65460, 65474, 65487, 65494, 65501, 65509, 65513, 65518, 65520,
     93  65535
     94 };
     95 
     96 const uint16_t WebRtcIsac_kLpcGainCdfVec5[171] =
     97 {
     98      0,    10,    12,    14,    16,    18,    23,    29,    35,    42,    51,
     99     58,    65,    72,    78,    87,    96,   103,   111,   122,   134,   150,
    100    167,   184,   202,   223,   244,   265,   289,   315,   346,   379,   414,
    101    450,   491,   532,   572,   613,   656,   700,   751,   802,   853,   905,
    102    957,  1021,  1098,  1174,  1250,  1331,  1413,  1490,  1565,  1647,  1730,
    103   1821,  1913,  2004,  2100,  2207,  2314,  2420,  2532,  2652,  2783,  2921,
    104   3056,  3189,  3327,  3468,  3640,  3817,  3993,  4171,  4362,  4554,  4751,
    105   4948,  5142,  5346,  5566,  5799,  6044,  6301,  6565,  6852,  7150,  7470,
    106   7797,  8143,  8492,  8835,  9181,  9547,  9919, 10315, 10718, 11136, 11566,
    107  12015, 12482, 12967, 13458, 13953, 14432, 14903, 15416, 15936, 16452, 16967,
    108  17492, 18024, 18600, 19173, 19736, 20311, 20911, 21490, 22041, 22597, 23157,
    109  23768, 24405, 25034, 25660, 26280, 26899, 27614, 28331, 29015, 29702, 30403,
    110  31107, 31817, 32566, 33381, 34224, 35099, 36112, 37222, 38375, 39549, 40801,
    111  42074, 43350, 44626, 45982, 47354, 48860, 50361, 51845, 53312, 54739, 56026,
    112  57116, 58104, 58996, 59842, 60658, 61488, 62324, 63057, 63769, 64285, 64779,
    113  65076, 65344, 65430, 65500, 65517, 65535
    114 };
    115 
    116 /*
    117 * An array of pointers to CDFs of decorrelated LPC Gains
    118 */
    119 const uint16_t* WebRtcIsac_kLpcGainCdfMat[SUBFRAMES] =
    120 {
    121     WebRtcIsac_kLpcGainCdfVec0, WebRtcIsac_kLpcGainCdfVec1,
    122     WebRtcIsac_kLpcGainCdfVec2, WebRtcIsac_kLpcGainCdfVec3,
    123     WebRtcIsac_kLpcGainCdfVec4, WebRtcIsac_kLpcGainCdfVec5
    124 };
    125 
    126 /*
    127 * A matrix to decorrellate LPC gains of subframes.
    128 */
    129 const double WebRtcIsac_kLpcGainDecorrMat[SUBFRAMES][SUBFRAMES] =
    130 {
    131     {-0.150860,  0.327872,  0.367220,  0.504613,  0.559270,  0.409234},
    132     { 0.457128, -0.613591, -0.289283, -0.029734,  0.393760,  0.418240},
    133     {-0.626043,  0.136489, -0.439118, -0.448323,  0.135987,  0.420869},
    134     { 0.526617,  0.480187,  0.242552, -0.488754, -0.158713,  0.411331},
    135     {-0.302587, -0.494953,  0.588112, -0.063035, -0.404290,  0.387510},
    136     { 0.086378,  0.147714, -0.428875,  0.548300, -0.570121,  0.401391}
    137 };
    138