160 lines
5.1 KiB
C
160 lines
5.1 KiB
C
/*
|
|
* 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.
|
|
*/
|
|
|
|
/*
|
|
* SWB_KLT_Tables.c
|
|
*
|
|
* This file defines tables used for entropy coding of LPC shape of
|
|
* upper-band signal if the bandwidth is 12 kHz.
|
|
*
|
|
*/
|
|
|
|
#include "lpc_shape_swb12_tables.h"
|
|
#include "settings.h"
|
|
#include "typedefs.h"
|
|
|
|
/*
|
|
* Mean value of LAR
|
|
*/
|
|
const double WebRtcIsac_kMeanLarUb12[UB_LPC_ORDER] =
|
|
{
|
|
0.03748928306641, 0.09453441192543, -0.01112522344398, 0.03800237516842
|
|
};
|
|
|
|
/*
|
|
* A rotation matrix to decorrelate intra-vector correlation,
|
|
* i.e. correlation among components of LAR vector.
|
|
*/
|
|
const double WebRtcIsac_kIntraVecDecorrMatUb12[UB_LPC_ORDER][UB_LPC_ORDER] =
|
|
{
|
|
{-0.00075365493856, -0.05809964887743, -0.23397966154116, 0.97050367376411},
|
|
{ 0.00625021257734, -0.17299965610679, 0.95977735920651, 0.22104179375008},
|
|
{ 0.20543384258374, -0.96202143495696, -0.15301870801552, -0.09432375099565},
|
|
{-0.97865075648479, -0.20300322280841, -0.02581111653779, -0.01913568980258}
|
|
};
|
|
|
|
/*
|
|
* 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_kInterVecDecorrMatUb12
|
|
[UB_LPC_VEC_PER_FRAME][UB_LPC_VEC_PER_FRAME] =
|
|
{
|
|
{ 0.70650597970460, -0.70770707262373},
|
|
{-0.70770707262373, -0.70650597970460}
|
|
};
|
|
|
|
/*
|
|
* LAR quantization step-size.
|
|
*/
|
|
const double WebRtcIsac_kLpcShapeQStepSizeUb12 = 0.150000;
|
|
|
|
/*
|
|
* The smallest reconstruction points for quantiztion of LAR coefficients.
|
|
*/
|
|
const double WebRtcIsac_kLpcShapeLeftRecPointUb12
|
|
[UB_LPC_ORDER*UB_LPC_VEC_PER_FRAME] =
|
|
{
|
|
-0.900000, -1.050000, -1.350000, -1.800000, -1.350000, -1.650000,
|
|
-2.250000, -3.450000
|
|
};
|
|
|
|
/*
|
|
* Number of reconstruction points of quantizers for LAR coefficients.
|
|
*/
|
|
const WebRtc_Word16 WebRtcIsac_kLpcShapeNumRecPointUb12
|
|
[UB_LPC_ORDER * UB_LPC_VEC_PER_FRAME] =
|
|
{
|
|
13, 15, 19, 27, 19, 24, 32, 48
|
|
};
|
|
|
|
/*
|
|
* Starting index for entropy decoder to search for the right interval,
|
|
* one entry per LAR coefficient
|
|
*/
|
|
const WebRtc_UWord16 WebRtcIsac_kLpcShapeEntropySearchUb12
|
|
[UB_LPC_ORDER * UB_LPC_VEC_PER_FRAME] =
|
|
{
|
|
6, 7, 9, 13, 9, 12, 16, 24
|
|
};
|
|
|
|
/*
|
|
* The following 8 vectors define CDF of 8 decorrelated LAR
|
|
* coefficients.
|
|
*/
|
|
const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec0Ub12[14] =
|
|
{
|
|
0, 13, 95, 418, 1687, 6498, 21317, 44200, 59029, 63849, 65147,
|
|
65449, 65525, 65535
|
|
};
|
|
|
|
const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec1Ub12[16] =
|
|
{
|
|
0, 10, 59, 255, 858, 2667, 8200, 22609, 42988, 57202, 62947,
|
|
64743, 65308, 65476, 65522, 65535
|
|
};
|
|
|
|
const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec2Ub12[20] =
|
|
{
|
|
0, 18, 40, 118, 332, 857, 2017, 4822, 11321, 24330, 41279,
|
|
54342, 60637, 63394, 64659, 65184, 65398, 65482, 65518, 65535
|
|
};
|
|
|
|
const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec3Ub12[28] =
|
|
{
|
|
0, 21, 38, 90, 196, 398, 770, 1400, 2589, 4650, 8211,
|
|
14933, 26044, 39592, 50814, 57452, 60971, 62884, 63995, 64621, 65019, 65273,
|
|
65410, 65480, 65514, 65522, 65531, 65535
|
|
};
|
|
|
|
const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec4Ub12[20] =
|
|
{
|
|
0, 7, 46, 141, 403, 969, 2132, 4649, 10633, 24902, 43254,
|
|
54665, 59928, 62674, 64173, 64938, 65293, 65464, 65523, 65535
|
|
};
|
|
|
|
const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec5Ub12[25] =
|
|
{
|
|
0, 7, 22, 72, 174, 411, 854, 1737, 3545, 6774, 13165,
|
|
25221, 40980, 52821, 58714, 61706, 63472, 64437, 64989, 65287, 65430, 65503,
|
|
65525, 65529, 65535
|
|
};
|
|
|
|
const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec6Ub12[33] =
|
|
{
|
|
0, 11, 21, 36, 65, 128, 228, 401, 707, 1241, 2126,
|
|
3589, 6060, 10517, 18853, 31114, 42477, 49770, 54271, 57467, 59838, 61569,
|
|
62831, 63772, 64433, 64833, 65123, 65306, 65419, 65466, 65499, 65519, 65535
|
|
};
|
|
|
|
const WebRtc_UWord16 WebRtcIsac_kLpcShapeCdfVec7Ub12[49] =
|
|
{
|
|
0, 14, 34, 67, 107, 167, 245, 326, 449, 645, 861,
|
|
1155, 1508, 2003, 2669, 3544, 4592, 5961, 7583, 9887, 13256, 18765,
|
|
26519, 34077, 40034, 44349, 47795, 50663, 53262, 55473, 57458, 59122, 60592,
|
|
61742, 62690, 63391, 63997, 64463, 64794, 65045, 65207, 65309, 65394, 65443,
|
|
65478, 65504, 65514, 65523, 65535
|
|
};
|
|
|
|
/*
|
|
* An array of pointers to CDFs of decorrelated LARs
|
|
*/
|
|
const WebRtc_UWord16* WebRtcIsac_kLpcShapeCdfMatUb12
|
|
[UB_LPC_ORDER * UB_LPC_VEC_PER_FRAME] =
|
|
{
|
|
WebRtcIsac_kLpcShapeCdfVec0Ub12, WebRtcIsac_kLpcShapeCdfVec1Ub12,
|
|
WebRtcIsac_kLpcShapeCdfVec2Ub12, WebRtcIsac_kLpcShapeCdfVec3Ub12,
|
|
WebRtcIsac_kLpcShapeCdfVec4Ub12, WebRtcIsac_kLpcShapeCdfVec5Ub12,
|
|
WebRtcIsac_kLpcShapeCdfVec6Ub12, WebRtcIsac_kLpcShapeCdfVec7Ub12
|
|
};
|