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.
11 #include "spectrum_ar_model_tables.h"
14 /********************* AR Coefficient Tables ************************/
15 /* cdf for quantized reflection coefficient 1 */
16 const uint16_t WebRtcIsac_kQArRc1Cdf[NUM_AR_RC_QUANT_BAUNDARY] = {
17 0, 2, 4, 129, 7707, 57485, 65495, 65527, 65529, 65531,
20 /* cdf for quantized reflection coefficient 2 */
21 const uint16_t WebRtcIsac_kQArRc2Cdf[NUM_AR_RC_QUANT_BAUNDARY] = {
22 0, 2, 4, 7, 531, 25298, 64525, 65526, 65529, 65531,
25 /* cdf for quantized reflection coefficient 3 */
26 const uint16_t WebRtcIsac_kQArRc3Cdf[NUM_AR_RC_QUANT_BAUNDARY] = {
27 0, 2, 4, 6, 620, 22898, 64843, 65527, 65529, 65531,
30 /* cdf for quantized reflection coefficient 4 */
31 const uint16_t WebRtcIsac_kQArRc4Cdf[NUM_AR_RC_QUANT_BAUNDARY] = {
32 0, 2, 4, 6, 35, 10034, 60733, 65506, 65529, 65531,
35 /* cdf for quantized reflection coefficient 5 */
36 const uint16_t WebRtcIsac_kQArRc5Cdf[NUM_AR_RC_QUANT_BAUNDARY] = {
37 0, 2, 4, 6, 36, 7567, 56727, 65385, 65529, 65531,
40 /* cdf for quantized reflection coefficient 6 */
41 const uint16_t WebRtcIsac_kQArRc6Cdf[NUM_AR_RC_QUANT_BAUNDARY] = {
42 0, 2, 4, 6, 14, 6579, 57360, 65409, 65529, 65531,
45 /* representation levels for quantized reflection coefficient 1 */
46 const int16_t WebRtcIsac_kQArRc1Levels[NUM_AR_RC_QUANT_BAUNDARY - 1] = {
47 -32104, -29007, -23202, -15496, -9279, -2577, 5934, 17535, 24512, 29503, 32104
50 /* representation levels for quantized reflection coefficient 2 */
51 const int16_t WebRtcIsac_kQArRc2Levels[NUM_AR_RC_QUANT_BAUNDARY - 1] = {
52 -32104, -29503, -23494, -15261, -7309, -1399, 6158, 16381, 24512, 29503, 32104
55 /* representation levels for quantized reflection coefficient 3 */
56 const int16_t WebRtcIsac_kQArRc3Levels[NUM_AR_RC_QUANT_BAUNDARY - 1] = {
57 -32104, -29503, -23157, -15186, -7347, -1359, 5829, 17535, 24512, 29503, 32104
60 /* representation levels for quantized reflection coefficient 4 */
61 const int16_t WebRtcIsac_kQArRc4Levels[NUM_AR_RC_QUANT_BAUNDARY - 1] = {
62 -32104, -29503, -24512, -15362, -6665, -342, 6596, 14585, 24512, 29503, 32104
65 /* representation levels for quantized reflection coefficient 5 */
66 const int16_t WebRtcIsac_kQArRc5Levels[NUM_AR_RC_QUANT_BAUNDARY - 1] = {
67 -32104, -29503, -24512, -15005, -6564, -106, 7123, 14920, 24512, 29503, 32104
70 /* representation levels for quantized reflection coefficient 6 */
71 const int16_t WebRtcIsac_kQArRc6Levels[NUM_AR_RC_QUANT_BAUNDARY - 1] = {
72 -32104, -29503, -24512, -15096, -6656, -37, 7036, 14847, 24512, 29503, 32104
75 /* quantization boundary levels for reflection coefficients */
76 const int16_t WebRtcIsac_kQArBoundaryLevels[NUM_AR_RC_QUANT_BAUNDARY] = {
77 -32768, -31441, -27566, -21458, -13612, -4663, 4663, 13612, 21458, 27566, 31441,
81 /* initial index for AR reflection coefficient quantizer and cdf table search */
82 const uint16_t WebRtcIsac_kQArRcInitIndex[6] = {
85 /* pointers to AR cdf tables */
86 const uint16_t *WebRtcIsac_kQArRcCdfPtr[AR_ORDER] = {
87 WebRtcIsac_kQArRc1Cdf, WebRtcIsac_kQArRc2Cdf, WebRtcIsac_kQArRc3Cdf,
88 WebRtcIsac_kQArRc4Cdf, WebRtcIsac_kQArRc5Cdf, WebRtcIsac_kQArRc6Cdf
91 /* pointers to AR representation levels tables */
92 const int16_t *WebRtcIsac_kQArRcLevelsPtr[AR_ORDER] = {
93 WebRtcIsac_kQArRc1Levels, WebRtcIsac_kQArRc2Levels, WebRtcIsac_kQArRc3Levels,
94 WebRtcIsac_kQArRc4Levels, WebRtcIsac_kQArRc5Levels, WebRtcIsac_kQArRc6Levels
98 /******************** GAIN Coefficient Tables ***********************/
99 /* cdf for Gain coefficient */
100 const uint16_t WebRtcIsac_kQGainCdf[19] = {
101 0, 2, 4, 6, 8, 10, 12, 14, 16, 1172,
102 11119, 29411, 51699, 64445, 65527, 65529, 65531, 65533, 65535};
104 /* representation levels for quantized squared Gain coefficient */
105 const int32_t WebRtcIsac_kQGain2Levels[18] = {
106 // 17, 28, 46, 76, 128, 215, 364, 709, 1268, 1960, 3405, 6078, 11286, 17827, 51918, 134498, 487432, 2048000};
107 128, 128, 128, 128, 128, 215, 364, 709, 1268, 1960, 3405, 6078, 11286, 17827, 51918, 134498, 487432, 2048000};
108 /* quantization boundary levels for squared Gain coefficient */
109 const int32_t WebRtcIsac_kQGain2BoundaryLevels[19] = {
110 0, 21, 35, 59, 99, 166, 280, 475, 815, 1414, 2495, 4505, 8397, 16405, 34431, 81359, 240497, 921600, 0x7FFFFFFF};
112 /* pointers to Gain cdf table */
113 const uint16_t *WebRtcIsac_kQGainCdf_ptr[1] = {WebRtcIsac_kQGainCdf};
115 /* Gain initial index for gain quantizer and cdf table search */
116 const uint16_t WebRtcIsac_kQGainInitIndex[1] = {11};
118 /************************* Cosine Tables ****************************/
120 const int16_t WebRtcIsac_kCos[6][60] = {
121 {512, 512, 511, 510, 508, 507, 505, 502, 499, 496, 493, 489, 485, 480, 476, 470, 465, 459, 453, 447,
122 440, 433, 426, 418, 410, 402, 394, 385, 376, 367, 357, 348, 338, 327, 317, 306, 295, 284, 273, 262,
123 250, 238, 226, 214, 202, 190, 177, 165, 152, 139, 126, 113, 100, 87, 73, 60, 47, 33, 20, 7},
124 {512, 510, 508, 503, 498, 491, 483, 473, 462, 450, 437, 422, 406, 389, 371, 352, 333, 312, 290, 268,
125 244, 220, 196, 171, 145, 120, 93, 67, 40, 13, -13, -40, -67, -93, -120, -145, -171, -196, -220, -244,
126 -268, -290, -312, -333, -352, -371, -389, -406, -422, -437, -450, -462, -473, -483, -491, -498, -503, -508, -510, -512},
127 {512, 508, 502, 493, 480, 465, 447, 426, 402, 376, 348, 317, 284, 250, 214, 177, 139, 100, 60, 20,
128 -20, -60, -100, -139, -177, -214, -250, -284, -317, -348, -376, -402, -426, -447, -465, -480, -493, -502, -508, -512,
129 -512, -508, -502, -493, -480, -465, -447, -426, -402, -376, -348, -317, -284, -250, -214, -177, -139, -100, -60, -20},
130 {511, 506, 495, 478, 456, 429, 398, 362, 322, 279, 232, 183, 133, 80, 27, -27, -80, -133, -183, -232,
131 -279, -322, -362, -398, -429, -456, -478, -495, -506, -511, -511, -506, -495, -478, -456, -429, -398, -362, -322, -279,
132 -232, -183, -133, -80, -27, 27, 80, 133, 183, 232, 279, 322, 362, 398, 429, 456, 478, 495, 506, 511},
133 {511, 502, 485, 459, 426, 385, 338, 284, 226, 165, 100, 33, -33, -100, -165, -226, -284, -338, -385, -426,
134 -459, -485, -502, -511, -511, -502, -485, -459, -426, -385, -338, -284, -226, -165, -100, -33, 33, 100, 165, 226,
135 284, 338, 385, 426, 459, 485, 502, 511, 511, 502, 485, 459, 426, 385, 338, 284, 226, 165, 100, 33},
136 {510, 498, 473, 437, 389, 333, 268, 196, 120, 40, -40, -120, -196, -268, -333, -389, -437, -473, -498, -510,
137 -510, -498, -473, -437, -389, -333, -268, -196, -120, -40, 40, 120, 196, 268, 333, 389, 437, 473, 498, 510,
138 510, 498, 473, 437, 389, 333, 268, 196, 120, 40, -40, -120, -196, -268, -333, -389, -437, -473, -498, -510}