1470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 2470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 3470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 4470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Use of this source code is governed by a BSD-style license 5470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * that can be found in the LICENSE file in the root of the source 6470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * tree. An additional intellectual property rights grant can be found 7470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * in the file PATENTS. All contributing project authors may 8470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * be found in the AUTHORS file in the root of the source tree. 9470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */ 10470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 11470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 12470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * SWB_KLT_Tables_LPCGain.c 13470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 14470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * This file defines tables used for entropy coding of LPC Gain 15470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * of upper-band. 16470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 17470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */ 18470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 19470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#include "lpc_gain_swb_tables.h" 20470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#include "settings.h" 21262e676a08fc29ee6c414f5858d68697be983515andresp@webrtc.org#include "webrtc/typedefs.h" 22470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 23470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comconst double WebRtcIsac_kQSizeLpcGain = 0.100000; 24470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 25470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comconst double WebRtcIsac_kMeanLpcGain = -3.3822; 26470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 27470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 28470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* The smallest reconstruction points for quantiztion of 29470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* LPC gains. 30470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com*/ 31470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comconst double WebRtcIsac_kLeftRecPointLpcGain[SUBFRAMES] = 32470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{ 33470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com -0.800000, -1.000000, -1.200000, -2.200000, -3.000000, -12.700000 34470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}; 35470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 36470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 37470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* Number of reconstruction points of quantizers for LPC Gains. 38470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com*/ 390946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgconst int16_t WebRtcIsac_kNumQCellLpcGain[SUBFRAMES] = 40470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{ 41470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 17, 20, 25, 45, 77, 170 42470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}; 43470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 44470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* Starting index for entropy decoder to search for the right interval, 45470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* one entry per LAR coefficient 46470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com*/ 470946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgconst uint16_t WebRtcIsac_kLpcGainEntropySearch[SUBFRAMES] = 48470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{ 49470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 8, 10, 12, 22, 38, 85 50470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}; 51470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 52470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 53470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* The following 6 vectors define CDF of 6 decorrelated LPC 54470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* gains. 55470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com*/ 560946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgconst uint16_t WebRtcIsac_kLpcGainCdfVec0[18] = 57470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{ 58470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 0, 10, 27, 83, 234, 568, 1601, 4683, 16830, 57534, 63437, 59470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 64767, 65229, 65408, 65483, 65514, 65527, 65535 60470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}; 61470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 620946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgconst uint16_t WebRtcIsac_kLpcGainCdfVec1[21] = 63470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{ 64470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 0, 15, 33, 84, 185, 385, 807, 1619, 3529, 7850, 19488, 65470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 51365, 62437, 64548, 65088, 65304, 65409, 65484, 65507, 65522, 65535 66470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}; 67470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 680946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgconst uint16_t WebRtcIsac_kLpcGainCdfVec2[26] = 69470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{ 70470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 0, 15, 29, 54, 89, 145, 228, 380, 652, 1493, 4260, 71470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 12359, 34133, 50749, 57224, 60814, 62927, 64078, 64742, 65103, 65311, 65418, 72470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 65473, 65509, 65521, 65535 73470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}; 74470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 750946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgconst uint16_t WebRtcIsac_kLpcGainCdfVec3[46] = 76470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{ 77470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 0, 8, 12, 16, 26, 42, 56, 76, 111, 164, 247, 78470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 366, 508, 693, 1000, 1442, 2155, 3188, 4854, 7387, 11249, 17617, 79470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 30079, 46711, 56291, 60127, 62140, 63258, 63954, 64384, 64690, 64891, 65031, 80470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 65139, 65227, 65293, 65351, 65399, 65438, 65467, 65492, 65504, 65510, 65518, 81470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 65523, 65535 82470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}; 83470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 840946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgconst uint16_t WebRtcIsac_kLpcGainCdfVec4[78] = 85470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{ 86470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 0, 17, 29, 39, 51, 70, 104, 154, 234, 324, 443, 87470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 590, 760, 971, 1202, 1494, 1845, 2274, 2797, 3366, 4088, 4905, 88470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 5899, 7142, 8683, 10625, 12983, 16095, 20637, 28216, 38859, 47237, 51537, 89470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 54150, 56066, 57583, 58756, 59685, 60458, 61103, 61659, 62144, 62550, 62886, 90470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 63186, 63480, 63743, 63954, 64148, 64320, 64467, 64600, 64719, 64837, 64939, 91470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 65014, 65098, 65160, 65211, 65250, 65290, 65325, 65344, 65366, 65391, 65410, 92470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 65430, 65447, 65460, 65474, 65487, 65494, 65501, 65509, 65513, 65518, 65520, 93470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 65535 94470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}; 95470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 960946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgconst uint16_t WebRtcIsac_kLpcGainCdfVec5[171] = 97470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{ 98470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 0, 10, 12, 14, 16, 18, 23, 29, 35, 42, 51, 99470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 58, 65, 72, 78, 87, 96, 103, 111, 122, 134, 150, 100470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 167, 184, 202, 223, 244, 265, 289, 315, 346, 379, 414, 101470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 450, 491, 532, 572, 613, 656, 700, 751, 802, 853, 905, 102470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 957, 1021, 1098, 1174, 1250, 1331, 1413, 1490, 1565, 1647, 1730, 103470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 1821, 1913, 2004, 2100, 2207, 2314, 2420, 2532, 2652, 2783, 2921, 104470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 3056, 3189, 3327, 3468, 3640, 3817, 3993, 4171, 4362, 4554, 4751, 105470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 4948, 5142, 5346, 5566, 5799, 6044, 6301, 6565, 6852, 7150, 7470, 106470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 7797, 8143, 8492, 8835, 9181, 9547, 9919, 10315, 10718, 11136, 11566, 107470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 12015, 12482, 12967, 13458, 13953, 14432, 14903, 15416, 15936, 16452, 16967, 108470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 17492, 18024, 18600, 19173, 19736, 20311, 20911, 21490, 22041, 22597, 23157, 109470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 23768, 24405, 25034, 25660, 26280, 26899, 27614, 28331, 29015, 29702, 30403, 110470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 31107, 31817, 32566, 33381, 34224, 35099, 36112, 37222, 38375, 39549, 40801, 111470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 42074, 43350, 44626, 45982, 47354, 48860, 50361, 51845, 53312, 54739, 56026, 112470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 57116, 58104, 58996, 59842, 60658, 61488, 62324, 63057, 63769, 64285, 64779, 113470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 65076, 65344, 65430, 65500, 65517, 65535 114470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}; 115470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 116470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 117470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* An array of pointers to CDFs of decorrelated LPC Gains 118470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com*/ 1190946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgconst uint16_t* WebRtcIsac_kLpcGainCdfMat[SUBFRAMES] = 120470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{ 121470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com WebRtcIsac_kLpcGainCdfVec0, WebRtcIsac_kLpcGainCdfVec1, 122470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com WebRtcIsac_kLpcGainCdfVec2, WebRtcIsac_kLpcGainCdfVec3, 123470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com WebRtcIsac_kLpcGainCdfVec4, WebRtcIsac_kLpcGainCdfVec5 124470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}; 125470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 126470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 127470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* A matrix to decorrellate LPC gains of subframes. 128470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com*/ 129470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comconst double WebRtcIsac_kLpcGainDecorrMat[SUBFRAMES][SUBFRAMES] = 130470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{ 131470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com {-0.150860, 0.327872, 0.367220, 0.504613, 0.559270, 0.409234}, 132470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com { 0.457128, -0.613591, -0.289283, -0.029734, 0.393760, 0.418240}, 133470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com {-0.626043, 0.136489, -0.439118, -0.448323, 0.135987, 0.420869}, 134470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com { 0.526617, 0.480187, 0.242552, -0.488754, -0.158713, 0.411331}, 135470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com {-0.302587, -0.494953, 0.588112, -0.063035, -0.404290, 0.387510}, 136470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com { 0.086378, 0.147714, -0.428875, 0.548300, -0.570121, 0.401391} 137470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}; 138