| /* |
| * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| /* |
| * SWB16_KLT_Tables.c |
| * |
| * This file defines tables used for entropy coding of LPC shape of |
| * upper-band signal if the bandwidth is 16 kHz. |
| * |
| */ |
| |
| #include "lpc_shape_swb16_tables.h" |
| #include "settings.h" |
| #include "typedefs.h" |
| |
| /* |
| * Mean value of LAR |
| */ |
| const double WebRtcIsac_kMeanLarUb16[UB_LPC_ORDER] = |
| { |
| 0.454978, 0.364747, 0.102999, 0.104523 |
| }; |
| |
| /* |
| * A rotation matrix to decorrelate intra-vector correlation, |
| * i.e. correlation among components of LAR vector. |
| */ |
| const double WebRtcIsac_kIintraVecDecorrMatUb16[UB_LPC_ORDER][UB_LPC_ORDER] = |
| { |
| {-0.020528, -0.085858, -0.002431, 0.996093}, |
| {-0.033155, 0.036102, 0.998786, 0.004866}, |
| { 0.202627, 0.974853, -0.028940, 0.088132}, |
| {-0.978479, 0.202454, -0.039785, -0.002811} |
| }; |
| |
| /* |
| * A rotation matrix to remove correlation among LAR coefficients |
| * of different LAR vectors. One might guess that decorrelation matrix |
| * for the first component should differ from the second component |
| * but we haven't observed a significant benefit of having different |
| * decorrelation matrices for different components. |
| */ |
| const double WebRtcIsac_kInterVecDecorrMatUb16 |
| [UB16_LPC_VEC_PER_FRAME][UB16_LPC_VEC_PER_FRAME] = |
| { |
| { 0.291675, -0.515786, 0.644927, 0.482658}, |
| {-0.647220, 0.479712, 0.289556, 0.516856}, |
| { 0.643084, 0.485489, -0.289307, 0.516763}, |
| {-0.287185, -0.517823, -0.645389, 0.482553} |
| }; |
| |
| /* |
| * The following 16 vectors define CDF of 16 decorrelated LAR |
| * coefficients. |
| */ |
| const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec01Ub16[14] = |
| { |
| 0, 2, 20, 159, 1034, 5688, 20892, 44653, |
| 59849, 64485, 65383, 65518, 65534, 65535 |
| }; |
| |
| const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec1Ub16[16] = |
| { |
| 0, 1, 7, 43, 276, 1496, 6681, 21653, |
| 43891, 58859, 64022, 65248, 65489, 65529, 65534, 65535 |
| }; |
| |
| const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec2Ub16[18] = |
| { |
| 0, 1, 9, 54, 238, 933, 3192, 9461, |
| 23226, 42146, 56138, 62413, 64623, 65300, 65473, 65521, |
| 65533, 65535 |
| }; |
| |
| const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec3Ub16[30] = |
| { |
| 0, 2, 4, 8, 17, 36, 75, 155, |
| 329, 683, 1376, 2662, 5047, 9508, 17526, 29027, |
| 40363, 48997, 55096, 59180, 61789, 63407, 64400, 64967, |
| 65273, 65429, 65497, 65526, 65534, 65535 |
| }; |
| |
| const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec4Ub16[16] = |
| { |
| 0, 1, 10, 63, 361, 1785, 7407, 22242, |
| 43337, 58125, 63729, 65181, 65472, 65527, 65534, 65535 |
| }; |
| |
| const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec5Ub16[17] = |
| { |
| 0, 1, 7, 29, 134, 599, 2443, 8590, |
| 22962, 42635, 56911, 63060, 64940, 65408, 65513, 65531, |
| 65535 |
| }; |
| |
| const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec6Ub16[21] = |
| { |
| 0, 1, 5, 16, 57, 191, 611, 1808, |
| 4847, 11755, 24612, 40910, 53789, 60698, 63729, 64924, |
| 65346, 65486, 65523, 65532, 65535 |
| }; |
| |
| const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec7Ub16[36] = |
| { |
| 0, 1, 4, 12, 25, 55, 104, 184, |
| 314, 539, 926, 1550, 2479, 3861, 5892, 8845, |
| 13281, 20018, 29019, 38029, 45581, 51557, 56057, 59284, |
| 61517, 63047, 64030, 64648, 65031, 65261, 65402, 65480, |
| 65518, 65530, 65534, 65535 |
| }; |
| |
| const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec8Ub16[21] = |
| { |
| 0, 1, 2, 7, 26, 103, 351, 1149, |
| 3583, 10204, 23846, 41711, 55361, 61917, 64382, 65186, |
| 65433, 65506, 65528, 65534, 65535 |
| }; |
| |
| const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec01Ub160[21] = |
| { |
| 0, 6, 19, 63, 205, 638, 1799, 4784, |
| 11721, 24494, 40803, 53805, 60886, 63822, 64931, 65333, |
| 65472, 65517, 65530, 65533, 65535 |
| }; |
| |
| const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec01Ub161[28] = |
| { |
| 0, 1, 3, 11, 31, 86, 221, 506, |
| 1101, 2296, 4486, 8477, 15356, 26079, 38941, 49952, |
| 57165, 61257, 63426, 64549, 65097, 65351, 65463, 65510, |
| 65526, 65532, 65534, 65535 |
| }; |
| |
| const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec01Ub162[55] = |
| { |
| 0, 3, 12, 23, 42, 65, 89, 115, |
| 150, 195, 248, 327, 430, 580, 784, 1099, |
| 1586, 2358, 3651, 5899, 9568, 14312, 19158, 23776, |
| 28267, 32663, 36991, 41153, 45098, 48680, 51870, 54729, |
| 57141, 59158, 60772, 62029, 63000, 63761, 64322, 64728, |
| 65000, 65192, 65321, 65411, 65463, 65496, 65514, 65523, |
| 65527, 65529, 65531, 65532, 65533, 65534, 65535 |
| }; |
| |
| const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec01Ub163[26] = |
| { |
| 0, 2, 4, 10, 21, 48, 114, 280, |
| 701, 1765, 4555, 11270, 24267, 41213, 54285, 61003, |
| 63767, 64840, 65254, 65421, 65489, 65514, 65526, 65532, |
| 65534, 65535 |
| }; |
| |
| const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec01Ub164[28] = |
| { |
| 0, 1, 3, 6, 15, 36, 82, 196, |
| 453, 1087, 2557, 5923, 13016, 25366, 40449, 52582, |
| 59539, 62896, 64389, 65033, 65316, 65442, 65494, 65519, |
| 65529, 65533, 65534, 65535 |
| }; |
| |
| const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec01Ub165[34] = |
| { |
| 0, 2, 4, 8, 18, 35, 73, 146, |
| 279, 524, 980, 1789, 3235, 5784, 10040, 16998, |
| 27070, 38543, 48499, 55421, 59712, 62257, 63748, 64591, |
| 65041, 65278, 65410, 65474, 65508, 65522, 65530, 65533, |
| 65534, 65535 |
| }; |
| |
| const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec01Ub166[71] = |
| { |
| 0, 1, 2, 6, 13, 26, 55, 92, |
| 141, 191, 242, 296, 355, 429, 522, 636, |
| 777, 947, 1162, 1428, 1753, 2137, 2605, 3140, |
| 3743, 4409, 5164, 6016, 6982, 8118, 9451, 10993, |
| 12754, 14810, 17130, 19780, 22864, 26424, 30547, 35222, |
| 40140, 44716, 48698, 52056, 54850, 57162, 59068, 60643, |
| 61877, 62827, 63561, 64113, 64519, 64807, 65019, 65167, |
| 65272, 65343, 65399, 65440, 65471, 65487, 65500, 65509, |
| 65518, 65524, 65527, 65531, 65533, 65534, 65535 |
| }; |
| |
| /* |
| * An array of pointers to CDFs of decorrelated LARs |
| */ |
| const WebRtc_UWord16* WebRtcIsac_kLpcShapeCdfMatUb16 |
| [UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME] = { |
| WebRtcIsac_kLpcShapeCdfVec01Ub16, |
| WebRtcIsac_kLpcShapeCdfVec1Ub16, |
| WebRtcIsac_kLpcShapeCdfVec2Ub16, |
| WebRtcIsac_kLpcShapeCdfVec3Ub16, |
| WebRtcIsac_kLpcShapeCdfVec4Ub16, |
| WebRtcIsac_kLpcShapeCdfVec5Ub16, |
| WebRtcIsac_kLpcShapeCdfVec6Ub16, |
| WebRtcIsac_kLpcShapeCdfVec7Ub16, |
| WebRtcIsac_kLpcShapeCdfVec8Ub16, |
| WebRtcIsac_kLpcShapeCdfVec01Ub160, |
| WebRtcIsac_kLpcShapeCdfVec01Ub161, |
| WebRtcIsac_kLpcShapeCdfVec01Ub162, |
| WebRtcIsac_kLpcShapeCdfVec01Ub163, |
| WebRtcIsac_kLpcShapeCdfVec01Ub164, |
| WebRtcIsac_kLpcShapeCdfVec01Ub165, |
| WebRtcIsac_kLpcShapeCdfVec01Ub166 |
| }; |
| |
| /* |
| * The smallest reconstruction points for quantiztion of LAR coefficients. |
| */ |
| const double WebRtcIsac_kLpcShapeLeftRecPointUb16 |
| [UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME] = |
| { |
| -0.8250, -0.9750, -1.1250, -2.1750, -0.9750, -1.1250, -1.4250, |
| -2.6250, -1.4250, -1.2750, -1.8750, -3.6750, -1.7250, -1.8750, |
| -2.3250, -5.4750 |
| }; |
| |
| /* |
| * Number of reconstruction points of quantizers for LAR coefficients. |
| */ |
| const WebRtc_Word16 WebRtcIsac_kLpcShapeNumRecPointUb16 |
| [UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME] = |
| { |
| 13, 15, 17, 29, 15, 16, 20, 35, 20, |
| 20, 27, 54, 25, 27, 33, 70 |
| }; |
| |
| /* |
| * Starting index for entropy decoder to search for the right interval, |
| * one entry per LAR coefficient |
| */ |
| const WebRtc_UWord16 WebRtcIsac_kLpcShapeEntropySearchUb16 |
| [UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME] = |
| { |
| 6, 7, 8, 14, 7, 8, 10, 17, 10, |
| 10, 13, 27, 12, 13, 16, 35 |
| }; |
| |
| /* |
| * LAR quantization step-size. |
| */ |
| const double WebRtcIsac_kLpcShapeQStepSizeUb16 = 0.150000; |