Home | History | Annotate | Download | only in source
      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 /*
     12  * spectrum_ar_model_tables.c
     13  *
     14  * This file contains tables with AR coefficients, Gain coefficients
     15  * and cosine tables.
     16  *
     17  */
     18 
     19 #include "spectrum_ar_model_tables.h"
     20 #include "settings.h"
     21 
     22 /********************* AR Coefficient Tables ************************/
     23 
     24 /* cdf for quantized reflection coefficient 1 */
     25 const WebRtc_UWord16 WebRtcIsacfix_kRc1Cdf[12] = {
     26   0,  2,  4,  129,  7707,  57485,  65495,  65527,  65529,  65531,
     27   65533,  65535
     28 };
     29 
     30 /* cdf for quantized reflection coefficient 2 */
     31 const WebRtc_UWord16 WebRtcIsacfix_kRc2Cdf[12] = {
     32   0,  2,  4,  7,  531,  25298,  64525,  65526,  65529,  65531,
     33   65533,  65535
     34 };
     35 
     36 /* cdf for quantized reflection coefficient 3 */
     37 const WebRtc_UWord16 WebRtcIsacfix_kRc3Cdf[12] = {
     38   0,  2,  4,  6,  620,  22898,  64843,  65527,  65529,  65531,
     39   65533,  65535
     40 };
     41 
     42 /* cdf for quantized reflection coefficient 4 */
     43 const WebRtc_UWord16 WebRtcIsacfix_kRc4Cdf[12] = {
     44   0,  2,  4,  6,  35,  10034,  60733,  65506,  65529,  65531,
     45   65533,  65535
     46 };
     47 
     48 /* cdf for quantized reflection coefficient 5 */
     49 const WebRtc_UWord16 WebRtcIsacfix_kRc5Cdf[12] = {
     50   0,  2,  4,  6,  36,  7567,  56727,  65385,  65529,  65531,
     51   65533,  65535
     52 };
     53 
     54 /* cdf for quantized reflection coefficient 6 */
     55 const WebRtc_UWord16 WebRtcIsacfix_kRc6Cdf[12] = {
     56   0,  2,  4,  6,  14,  6579,  57360,  65409,  65529,  65531,
     57   65533,  65535
     58 };
     59 
     60 /* representation levels for quantized reflection coefficient 1 */
     61 const WebRtc_Word16 WebRtcIsacfix_kRc1Levels[11] = {
     62   -32104, -29007, -23202, -15496, -9279, -2577, 5934, 17535, 24512, 29503, 32104
     63 };
     64 
     65 /* representation levels for quantized reflection coefficient 2 */
     66 const WebRtc_Word16 WebRtcIsacfix_kRc2Levels[11] = {
     67   -32104, -29503, -23494, -15261, -7309, -1399, 6158, 16381, 24512, 29503, 32104
     68 };
     69 
     70 /* representation levels for quantized reflection coefficient 3 */
     71 const WebRtc_Word16 WebRtcIsacfix_kRc3Levels[11] = {
     72   -32104, -29503, -23157, -15186, -7347, -1359, 5829, 17535, 24512, 29503, 32104
     73 };
     74 
     75 /* representation levels for quantized reflection coefficient 4 */
     76 const WebRtc_Word16 WebRtcIsacfix_kRc4Levels[11] = {
     77   -32104, -29503, -24512, -15362, -6665, -342, 6596, 14585, 24512, 29503, 32104
     78 };
     79 
     80 /* representation levels for quantized reflection coefficient 5 */
     81 const WebRtc_Word16 WebRtcIsacfix_kRc5Levels[11] = {
     82   -32104, -29503, -24512, -15005, -6564, -106, 7123, 14920, 24512, 29503, 32104
     83 };
     84 
     85 /* representation levels for quantized reflection coefficient 6 */
     86 const WebRtc_Word16 WebRtcIsacfix_kRc6Levels[11] = {
     87   -32104, -29503, -24512, -15096, -6656, -37, 7036, 14847, 24512, 29503, 32104
     88 };
     89 
     90 /* quantization boundary levels for reflection coefficients */
     91 const WebRtc_Word16 WebRtcIsacfix_kRcBound[12] = {
     92   -32768, -31441, -27566, -21458, -13612, -4663,
     93   4663, 13612, 21458, 27566, 31441, 32767
     94 };
     95 
     96 /* initial index for AR reflection coefficient quantizer and cdf table search */
     97 const WebRtc_UWord16 WebRtcIsacfix_kRcInitInd[6] = {
     98   5,  5,  5,  5,  5,  5
     99 };
    100 
    101 /* pointers to AR cdf tables */
    102 const WebRtc_UWord16 *WebRtcIsacfix_kRcCdfPtr[AR_ORDER] = {
    103   WebRtcIsacfix_kRc1Cdf,
    104   WebRtcIsacfix_kRc2Cdf,
    105   WebRtcIsacfix_kRc3Cdf,
    106   WebRtcIsacfix_kRc4Cdf,
    107   WebRtcIsacfix_kRc5Cdf,
    108   WebRtcIsacfix_kRc6Cdf
    109 };
    110 
    111 /* pointers to AR representation levels tables */
    112 const WebRtc_Word16 *WebRtcIsacfix_kRcLevPtr[AR_ORDER] = {
    113   WebRtcIsacfix_kRc1Levels,
    114   WebRtcIsacfix_kRc2Levels,
    115   WebRtcIsacfix_kRc3Levels,
    116   WebRtcIsacfix_kRc4Levels,
    117   WebRtcIsacfix_kRc5Levels,
    118   WebRtcIsacfix_kRc6Levels
    119 };
    120 
    121 
    122 /******************** GAIN Coefficient Tables ***********************/
    123 
    124 /* cdf for Gain coefficient */
    125 const WebRtc_UWord16 WebRtcIsacfix_kGainCdf[19] = {
    126   0,  2,  4,  6,  8,  10,  12,  14,  16,  1172,
    127   11119,  29411,  51699,  64445,  65527,  65529,  65531,  65533,  65535
    128 };
    129 
    130 /* representation levels for quantized squared Gain coefficient */
    131 const WebRtc_Word32 WebRtcIsacfix_kGain2Lev[18] = {
    132   128, 128, 128, 128, 128, 215, 364, 709, 1268,
    133   1960, 3405, 6078, 11286, 17827, 51918, 134498, 487432, 2048000
    134 };
    135 
    136 /* quantization boundary levels for squared Gain coefficient */
    137 const WebRtc_Word32 WebRtcIsacfix_kGain2Bound[19] = {
    138   0, 21, 35, 59, 99, 166, 280, 475, 815, 1414,
    139   2495, 4505, 8397, 16405, 34431, 81359, 240497, 921600, 0x7FFFFFFF
    140 };
    141 
    142 /* pointers to Gain cdf table */
    143 const WebRtc_UWord16 *WebRtcIsacfix_kGainPtr[1] = {
    144   WebRtcIsacfix_kGainCdf
    145 };
    146 
    147 /* gain initial index for gain quantizer and cdf table search */
    148 const WebRtc_UWord16 WebRtcIsacfix_kGainInitInd[1] = {
    149   11
    150 };
    151 
    152 
    153 /************************* Cosine Tables ****************************/
    154 
    155 /* cosine table */
    156 const WebRtc_Word16 WebRtcIsacfix_kCos[6][60] = {
    157   { 512,   512,   511,   510,   508,   507,   505,   502,   499,   496,
    158         493,   489,   485,   480,   476,   470,   465,   459,   453,   447,
    159  440,   433,   426,   418,   410,   402,   394,   385,   376,   367,
    160         357,   348,   338,   327,   317,   306,   295,   284,   273,   262,
    161  250,   238,   226,   214,   202,   190,   177,   165,   152,   139,
    162         126,   113,   100,   87,   73,   60,   47,   33,   20,   7       },
    163   { 512,   510,   508,   503,   498,   491,   483,   473,   462,   450,
    164         437,   422,   406,   389,   371,   352,   333,   312,   290,   268,
    165  244,   220,   196,   171,   145,   120,   93,   67,   40,   13,
    166         -13,   -40,   -67,   -93,   -120,   -145,   -171,   -196,   -220,   -244,
    167  -268,   -290,   -312,   -333,   -352,   -371,   -389,   -406,   -422,   -437,
    168         -450,   -462,   -473,   -483,   -491,   -498,   -503,   -508,   -510,   -512    },
    169   { 512,   508,   502,   493,   480,   465,   447,   426,   402,   376,
    170         348,   317,   284,   250,   214,   177,   139,   100,   60,   20,
    171  -20,   -60,   -100,   -139,   -177,   -214,   -250,   -284,   -317,   -348,
    172         -376,   -402,   -426,   -447,   -465,   -480,   -493,   -502,   -508,   -512,
    173  -512,   -508,   -502,   -493,   -480,   -465,   -447,   -426,   -402,   -376,
    174         -348,   -317,   -284,   -250,   -214,   -177,   -139,   -100,   -60,   -20     },
    175   { 511,   506,   495,   478,   456,   429,   398,   362,   322,   279,
    176         232,   183,   133,   80,   27,   -27,   -80,   -133,   -183,   -232,
    177  -279,   -322,   -362,   -398,   -429,   -456,   -478,   -495,   -506,   -511,
    178         -511,   -506,   -495,   -478,   -456,   -429,   -398,   -362,   -322,   -279,
    179  -232,   -183,   -133,   -80,   -27,   27,   80,   133,   183,   232,
    180         279,   322,   362,   398,   429,   456,   478,   495,   506,   511     },
    181   { 511,   502,   485,   459,   426,   385,   338,   284,   226,   165,
    182         100,   33,   -33,   -100,   -165,   -226,   -284,   -338,   -385,   -426,
    183  -459,   -485,   -502,   -511,   -511,   -502,   -485,   -459,   -426,   -385,
    184         -338,   -284,   -226,   -165,   -100,   -33,   33,   100,   165,   226,
    185  284,   338,   385,   426,   459,   485,   502,   511,   511,   502,
    186         485,   459,   426,   385,   338,   284,   226,   165,   100,   33      },
    187   { 510,   498,   473,   437,   389,   333,   268,   196,   120,   40,
    188         -40,   -120,   -196,   -268,   -333,   -389,   -437,   -473,   -498,   -510,
    189  -510,   -498,   -473,   -437,   -389,   -333,   -268,   -196,   -120,   -40,
    190         40,   120,   196,   268,   333,   389,   437,   473,   498,   510,
    191  510,   498,   473,   437,   389,   333,   268,   196,   120,   40,
    192         -40,   -120,   -196,   -268,   -333,   -389,   -437,   -473,   -498,   -510    }
    193 };
    194