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