2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
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.
14 * This file defines tables used for entropy coding of LPC shape of
15 * upper-band signal if the bandwidth is 16 kHz.
19 #include "lpc_shape_swb16_tables.h"
21 #include "webrtc/typedefs.h"
26 const double WebRtcIsac_kMeanLarUb16[UB_LPC_ORDER] =
28 0.454978, 0.364747, 0.102999, 0.104523
32 * A rotation matrix to decorrelate intra-vector correlation,
33 * i.e. correlation among components of LAR vector.
35 const double WebRtcIsac_kIintraVecDecorrMatUb16[UB_LPC_ORDER][UB_LPC_ORDER] =
37 {-0.020528, -0.085858, -0.002431, 0.996093},
38 {-0.033155, 0.036102, 0.998786, 0.004866},
39 { 0.202627, 0.974853, -0.028940, 0.088132},
40 {-0.978479, 0.202454, -0.039785, -0.002811}
44 * A rotation matrix to remove correlation among LAR coefficients
45 * of different LAR vectors. One might guess that decorrelation matrix
46 * for the first component should differ from the second component
47 * but we haven't observed a significant benefit of having different
48 * decorrelation matrices for different components.
50 const double WebRtcIsac_kInterVecDecorrMatUb16
51 [UB16_LPC_VEC_PER_FRAME][UB16_LPC_VEC_PER_FRAME] =
53 { 0.291675, -0.515786, 0.644927, 0.482658},
54 {-0.647220, 0.479712, 0.289556, 0.516856},
55 { 0.643084, 0.485489, -0.289307, 0.516763},
56 {-0.287185, -0.517823, -0.645389, 0.482553}
60 * The following 16 vectors define CDF of 16 decorrelated LAR
63 const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub16[14] =
65 0, 2, 20, 159, 1034, 5688, 20892, 44653,
66 59849, 64485, 65383, 65518, 65534, 65535
69 const uint16_t WebRtcIsac_kLpcShapeCdfVec1Ub16[16] =
71 0, 1, 7, 43, 276, 1496, 6681, 21653,
72 43891, 58859, 64022, 65248, 65489, 65529, 65534, 65535
75 const uint16_t WebRtcIsac_kLpcShapeCdfVec2Ub16[18] =
77 0, 1, 9, 54, 238, 933, 3192, 9461,
78 23226, 42146, 56138, 62413, 64623, 65300, 65473, 65521,
82 const uint16_t WebRtcIsac_kLpcShapeCdfVec3Ub16[30] =
84 0, 2, 4, 8, 17, 36, 75, 155,
85 329, 683, 1376, 2662, 5047, 9508, 17526, 29027,
86 40363, 48997, 55096, 59180, 61789, 63407, 64400, 64967,
87 65273, 65429, 65497, 65526, 65534, 65535
90 const uint16_t WebRtcIsac_kLpcShapeCdfVec4Ub16[16] =
92 0, 1, 10, 63, 361, 1785, 7407, 22242,
93 43337, 58125, 63729, 65181, 65472, 65527, 65534, 65535
96 const uint16_t WebRtcIsac_kLpcShapeCdfVec5Ub16[17] =
98 0, 1, 7, 29, 134, 599, 2443, 8590,
99 22962, 42635, 56911, 63060, 64940, 65408, 65513, 65531,
103 const uint16_t WebRtcIsac_kLpcShapeCdfVec6Ub16[21] =
105 0, 1, 5, 16, 57, 191, 611, 1808,
106 4847, 11755, 24612, 40910, 53789, 60698, 63729, 64924,
107 65346, 65486, 65523, 65532, 65535
110 const uint16_t WebRtcIsac_kLpcShapeCdfVec7Ub16[36] =
112 0, 1, 4, 12, 25, 55, 104, 184,
113 314, 539, 926, 1550, 2479, 3861, 5892, 8845,
114 13281, 20018, 29019, 38029, 45581, 51557, 56057, 59284,
115 61517, 63047, 64030, 64648, 65031, 65261, 65402, 65480,
116 65518, 65530, 65534, 65535
119 const uint16_t WebRtcIsac_kLpcShapeCdfVec8Ub16[21] =
121 0, 1, 2, 7, 26, 103, 351, 1149,
122 3583, 10204, 23846, 41711, 55361, 61917, 64382, 65186,
123 65433, 65506, 65528, 65534, 65535
126 const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub160[21] =
128 0, 6, 19, 63, 205, 638, 1799, 4784,
129 11721, 24494, 40803, 53805, 60886, 63822, 64931, 65333,
130 65472, 65517, 65530, 65533, 65535
133 const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub161[28] =
135 0, 1, 3, 11, 31, 86, 221, 506,
136 1101, 2296, 4486, 8477, 15356, 26079, 38941, 49952,
137 57165, 61257, 63426, 64549, 65097, 65351, 65463, 65510,
138 65526, 65532, 65534, 65535
141 const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub162[55] =
143 0, 3, 12, 23, 42, 65, 89, 115,
144 150, 195, 248, 327, 430, 580, 784, 1099,
145 1586, 2358, 3651, 5899, 9568, 14312, 19158, 23776,
146 28267, 32663, 36991, 41153, 45098, 48680, 51870, 54729,
147 57141, 59158, 60772, 62029, 63000, 63761, 64322, 64728,
148 65000, 65192, 65321, 65411, 65463, 65496, 65514, 65523,
149 65527, 65529, 65531, 65532, 65533, 65534, 65535
152 const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub163[26] =
154 0, 2, 4, 10, 21, 48, 114, 280,
155 701, 1765, 4555, 11270, 24267, 41213, 54285, 61003,
156 63767, 64840, 65254, 65421, 65489, 65514, 65526, 65532,
160 const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub164[28] =
162 0, 1, 3, 6, 15, 36, 82, 196,
163 453, 1087, 2557, 5923, 13016, 25366, 40449, 52582,
164 59539, 62896, 64389, 65033, 65316, 65442, 65494, 65519,
165 65529, 65533, 65534, 65535
168 const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub165[34] =
170 0, 2, 4, 8, 18, 35, 73, 146,
171 279, 524, 980, 1789, 3235, 5784, 10040, 16998,
172 27070, 38543, 48499, 55421, 59712, 62257, 63748, 64591,
173 65041, 65278, 65410, 65474, 65508, 65522, 65530, 65533,
177 const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub166[71] =
179 0, 1, 2, 6, 13, 26, 55, 92,
180 141, 191, 242, 296, 355, 429, 522, 636,
181 777, 947, 1162, 1428, 1753, 2137, 2605, 3140,
182 3743, 4409, 5164, 6016, 6982, 8118, 9451, 10993,
183 12754, 14810, 17130, 19780, 22864, 26424, 30547, 35222,
184 40140, 44716, 48698, 52056, 54850, 57162, 59068, 60643,
185 61877, 62827, 63561, 64113, 64519, 64807, 65019, 65167,
186 65272, 65343, 65399, 65440, 65471, 65487, 65500, 65509,
187 65518, 65524, 65527, 65531, 65533, 65534, 65535
191 * An array of pointers to CDFs of decorrelated LARs
193 const uint16_t* WebRtcIsac_kLpcShapeCdfMatUb16
194 [UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME] = {
195 WebRtcIsac_kLpcShapeCdfVec01Ub16,
196 WebRtcIsac_kLpcShapeCdfVec1Ub16,
197 WebRtcIsac_kLpcShapeCdfVec2Ub16,
198 WebRtcIsac_kLpcShapeCdfVec3Ub16,
199 WebRtcIsac_kLpcShapeCdfVec4Ub16,
200 WebRtcIsac_kLpcShapeCdfVec5Ub16,
201 WebRtcIsac_kLpcShapeCdfVec6Ub16,
202 WebRtcIsac_kLpcShapeCdfVec7Ub16,
203 WebRtcIsac_kLpcShapeCdfVec8Ub16,
204 WebRtcIsac_kLpcShapeCdfVec01Ub160,
205 WebRtcIsac_kLpcShapeCdfVec01Ub161,
206 WebRtcIsac_kLpcShapeCdfVec01Ub162,
207 WebRtcIsac_kLpcShapeCdfVec01Ub163,
208 WebRtcIsac_kLpcShapeCdfVec01Ub164,
209 WebRtcIsac_kLpcShapeCdfVec01Ub165,
210 WebRtcIsac_kLpcShapeCdfVec01Ub166
214 * The smallest reconstruction points for quantiztion of LAR coefficients.
216 const double WebRtcIsac_kLpcShapeLeftRecPointUb16
217 [UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME] =
219 -0.8250, -0.9750, -1.1250, -2.1750, -0.9750, -1.1250, -1.4250,
220 -2.6250, -1.4250, -1.2750, -1.8750, -3.6750, -1.7250, -1.8750,
225 * Number of reconstruction points of quantizers for LAR coefficients.
227 const int16_t WebRtcIsac_kLpcShapeNumRecPointUb16
228 [UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME] =
230 13, 15, 17, 29, 15, 16, 20, 35, 20,
231 20, 27, 54, 25, 27, 33, 70
235 * Starting index for entropy decoder to search for the right interval,
236 * one entry per LAR coefficient
238 const uint16_t WebRtcIsac_kLpcShapeEntropySearchUb16
239 [UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME] =
241 6, 7, 8, 14, 7, 8, 10, 17, 10,
242 10, 13, 27, 12, 13, 16, 35
246 * LAR quantization step-size.
248 const double WebRtcIsac_kLpcShapeQStepSizeUb16 = 0.150000;