1 /* 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 3 * 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. 9 */ 10 11 #include "spectrum_ar_model_tables.h" 12 #include "settings.h" 13 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, 18 65533, 65535}; 19 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, 23 65533, 65535}; 24 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, 28 65533, 65535}; 29 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, 33 65533, 65535}; 34 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, 38 65533, 65535}; 39 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, 43 65533, 65535}; 44 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 48 }; 49 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 53 }; 54 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 58 }; 59 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 63 }; 64 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 68 }; 69 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 73 }; 74 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, 78 32767 79 }; 80 81 /* initial index for AR reflection coefficient quantizer and cdf table search */ 82 const uint16_t WebRtcIsac_kQArRcInitIndex[6] = { 83 5, 5, 5, 5, 5, 5}; 84 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 89 }; 90 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 95 }; 96 97 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}; 103 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}; 111 112 /* pointers to Gain cdf table */ 113 const uint16_t *WebRtcIsac_kQGainCdf_ptr[1] = {WebRtcIsac_kQGainCdf}; 114 115 /* Gain initial index for gain quantizer and cdf table search */ 116 const uint16_t WebRtcIsac_kQGainInitIndex[1] = {11}; 117 118 /************************* Cosine Tables ****************************/ 119 /* Cosine table */ 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} 139 }; 140