Home | History | Annotate | Download | only in src
      1 /* ------------------------------------------------------------------
      2  * Copyright (C) 1998-2009 PacketVideo
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
     13  * express or implied.
     14  * See the License for the specific language governing permissions
     15  * and limitations under the License.
     16  * -------------------------------------------------------------------
     17  */
     18 /****************************************************************************************
     19 Portions of this file are derived from the following 3GPP standard:
     20 
     21     3GPP TS 26.073
     22     ANSI-C code for the Adaptive Multi-Rate (AMR) speech codec
     23     Available from http://www.3gpp.org
     24 
     25 (C) 2004, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC)
     26 Permission to distribute, modify and use this file under the standard license
     27 terms listed above has been obtained from the copyright holder.
     28 ****************************************************************************************/
     29 /*
     30 
     31  Filename: /audio/gsm_amr/c/src/qua_gain_tbl.c
     32 
     33 ------------------------------------------------------------------------------
     34  REVISION HISTORY
     35 
     36  Description: Created this file from the reference, qua_gain.tab
     37 
     38  Description: Added #ifdef __cplusplus and removed "extern" from table
     39               definition.
     40 
     41  Description: Put "extern" back.
     42 
     43  Who:                               Date:
     44  Description:
     45 
     46 ------------------------------------------------------------------------------
     47  MODULE DESCRIPTION
     48 
     49 ------------------------------------------------------------------------------
     50 */
     51 
     52 /*----------------------------------------------------------------------------
     53 ; INCLUDES
     54 ----------------------------------------------------------------------------*/
     55 #include "typedef.h"
     56 #include "qua_gain.h"
     57 
     58 /*--------------------------------------------------------------------------*/
     59 #ifdef __cplusplus
     60 extern "C"
     61 {
     62 #endif
     63 
     64     /*----------------------------------------------------------------------------
     65     ; MACROS
     66     ; [Define module specific macros here]
     67     ----------------------------------------------------------------------------*/
     68 
     69     /*----------------------------------------------------------------------------
     70     ; DEFINES
     71     ; [Include all pre-processor statements here. Include conditional
     72     ; compile variables also.]
     73     ----------------------------------------------------------------------------*/
     74 
     75     /*----------------------------------------------------------------------------
     76     ; LOCAL FUNCTION DEFINITIONS
     77     ; [List function prototypes here]
     78     ----------------------------------------------------------------------------*/
     79 
     80     /*----------------------------------------------------------------------------
     81     ; LOCAL VARIABLE DEFINITIONS
     82     ; [Variable declaration - defined here and used outside this module]
     83     ----------------------------------------------------------------------------*/
     84 
     85     /* The tables contains the following data:
     86      *
     87      *    g_pitch        (Q14),
     88      *    g_fac          (Q12), (g_code = g_code0*g_fac),
     89      *    qua_ener_MR122 (Q10), (log2(g_fac))
     90      *    qua_ener       (Q10)  (20*log10(g_fac))
     91      *
     92      *    The log2() and log10() values are calculated on the fixed point value
     93      *    (g_fac Q12) and not on the original floating point value of g_fac
     94      *    to make the quantizer/MA predictdor use corresponding values.
     95      */
     96 
     97     /* table used in 'high' rates: MR67 MR74 */
     98 
     99     extern const Word16 table_gain_highrates[VQ_SIZE_HIGHRATES*4] =
    100     {
    101 
    102         /*
    103          * Note: column 4 (qua_ener) contains the original values from IS641
    104          *       to ensure bit-exactness; however, they are not exactly the
    105          *       rounded value of (20*log10(g_fac))
    106          *
    107          */
    108 
    109         /*g_pit,    g_fac,  qua_ener_MR122, qua_ener */
    110         577,      662,           -2692,   -16214,
    111         806,     1836,           -1185,    -7135,
    112         3109,     1052,           -2008,   -12086,
    113         4181,     1387,           -1600,    -9629,
    114         2373,     1425,           -1560,    -9394,
    115         3248,     1985,           -1070,    -6442,
    116         1827,     2320,            -840,    -5056,
    117         941,     3314,            -313,    -1885,
    118         2351,     2977,            -471,    -2838,
    119         3616,     2420,            -777,    -4681,
    120         3451,     3096,            -414,    -2490,
    121         2955,     4301,              72,      434,
    122         1848,     4500,             139,      836,
    123         3884,     5416,             413,     2484,
    124         1187,     7210,             835,     5030,
    125         3083,     9000,            1163,     7002,
    126         7384,      883,           -2267,   -13647,
    127         5962,     1506,           -1478,    -8900,
    128         5155,     2134,            -963,    -5800,
    129         7944,     2009,           -1052,    -6335,
    130         6507,     2250,            -885,    -5327,
    131         7670,     2752,            -588,    -3537,
    132         5952,     3016,            -452,    -2724,
    133         4898,     3764,            -125,     -751,
    134         6989,     3588,            -196,    -1177,
    135         8174,     3978,             -43,     -260,
    136         6064,     4404,             107,      645,
    137         7709,     5087,             320,     1928,
    138         5523,     6021,             569,     3426,
    139         7769,     7126,             818,     4926,
    140         6060,     7938,             977,     5885,
    141         5594,    11487,            1523,     9172,
    142         10581,     1356,           -1633,    -9831,
    143         9049,     1597,           -1391,    -8380,
    144         9794,     2035,           -1033,    -6220,
    145         8946,     2415,            -780,    -4700,
    146         10296,     2584,            -681,    -4099,
    147         9407,     2734,            -597,    -3595,
    148         8700,     3218,            -356,    -2144,
    149         9757,     3395,            -277,    -1669,
    150         10177,     3892,             -75,     -454,
    151         9170,     4528,             148,      891,
    152         10152,     5004,             296,     1781,
    153         9114,     5735,             497,     2993,
    154         10500,     6266,             628,     3782,
    155         10110,     7631,             919,     5534,
    156         8844,     8727,            1117,     6728,
    157         8956,    12496,            1648,     9921,
    158         12924,      976,           -2119,   -12753,
    159         11435,     1755,           -1252,    -7539,
    160         12138,     2328,            -835,    -5024,
    161         11388,     2368,            -810,    -4872,
    162         10700,     3064,            -429,    -2580,
    163         12332,     2861,            -530,    -3192,
    164         11722,     3327,            -307,    -1848,
    165         11270,     3700,            -150,     -904,
    166         10861,     4413,             110,      663,
    167         12082,     4533,             150,      902,
    168         11283,     5205,             354,     2132,
    169         11960,     6305,             637,     3837,
    170         11167,     7534,             900,     5420,
    171         12128,     8329,            1049,     6312,
    172         10969,    10777,            1429,     8604,
    173         10300,    17376,            2135,    12853,
    174         13899,     1681,           -1316,    -7921,
    175         12580,     2045,           -1026,    -6179,
    176         13265,     2439,            -766,    -4610,
    177         14033,     2989,            -465,    -2802,
    178         13452,     3098,            -413,    -2482,
    179         12396,     3658,            -167,    -1006,
    180         13510,     3780,            -119,     -713,
    181         12880,     4272,              62,      374,
    182         13533,     4861,             253,     1523,
    183         12667,     5457,             424,     2552,
    184         13854,     6106,             590,     3551,
    185         13031,     6483,             678,     4084,
    186         13557,     7721,             937,     5639,
    187         12957,     9311,            1213,     7304,
    188         13714,    11551,            1532,     9221,
    189         12591,    15206,            1938,    11667,
    190         15113,     1540,           -1445,    -8700,
    191         15072,     2333,            -832,    -5007,
    192         14527,     2511,            -723,    -4352,
    193         14692,     3199,            -365,    -2197,
    194         15382,     3560,            -207,    -1247,
    195         14133,     3960,             -50,     -300,
    196         15102,     4236,              50,      298,
    197         14332,     4824,             242,     1454,
    198         14846,     5451,             422,     2542,
    199         15306,     6083,             584,     3518,
    200         14329,     6888,             768,     4623,
    201         15060,     7689,             930,     5602,
    202         14406,     9426,            1231,     7413,
    203         15387,     9741,            1280,     7706,
    204         14824,    14271,            1844,    11102,
    205         13600,    24939,            2669,    16067,
    206         16396,     1969,           -1082,    -6517,
    207         16817,     2832,            -545,    -3283,
    208         15713,     2843,            -539,    -3248,
    209         16104,     3336,            -303,    -1825,
    210         16384,     3963,             -49,     -294,
    211         16940,     4579,             165,      992,
    212         15711,     4599,             171,     1030,
    213         16222,     5448,             421,     2537,
    214         16832,     6382,             655,     3945,
    215         15745,     7141,             821,     4944,
    216         16326,     7469,             888,     5343,
    217         16611,     8624,            1100,     6622,
    218         17028,    10418,            1379,     8303,
    219         15905,    11817,            1565,     9423,
    220         16878,    14690,            1887,    11360,
    221         16515,    20870,            2406,    14483,
    222         18142,     2083,            -999,    -6013,
    223         19401,     3178,            -375,    -2257,
    224         17508,     3426,            -264,    -1589,
    225         20054,     4027,             -25,     -151,
    226         18069,     4249,              54,      326,
    227         18952,     5066,             314,     1890,
    228         17711,     5402,             409,     2461,
    229         19835,     6192,             610,     3676,
    230         17950,     7014,             795,     4784,
    231         21318,     7877,             966,     5816,
    232         17910,     9289,            1210,     7283,
    233         19144,     9290,            1210,     7284,
    234         20517,    11381,            1510,     9089,
    235         18075,    14485,            1866,    11234,
    236         19999,    17882,            2177,    13108,
    237         18842,    32764,            3072,    18494
    238     };
    239 
    240 
    241     /* table used in 'low' rates: MR475, MR515, MR59 */
    242 
    243     extern const Word16 table_gain_lowrates[VQ_SIZE_LOWRATES*4] =
    244     {
    245         /*g_pit,    g_fac,  qua_ener_MR122, qua_ener */
    246         10813,    28753,            2879,    17333,
    247         20480,     2785,            -570,    -3431,
    248         18841,     6594,             703,     4235,
    249         6225,     7413,             876,     5276,
    250         17203,    10444,            1383,     8325,
    251         21626,     1269,           -1731,   -10422,
    252         21135,     4423,             113,      683,
    253         11304,     1556,           -1430,    -8609,
    254         19005,    12820,            1686,    10148,
    255         17367,     2498,            -731,    -4398,
    256         17858,     4833,             244,     1472,
    257         9994,     2498,            -731,    -4398,
    258         17530,     7864,             964,     5802,
    259         14254,     1884,           -1147,    -6907,
    260         15892,     3153,            -387,    -2327,
    261         6717,     1802,           -1213,    -7303,
    262         18186,    20193,            2357,    14189,
    263         18022,     3031,            -445,    -2678,
    264         16711,     5857,             528,     3181,
    265         8847,     4014,             -30,     -180,
    266         15892,     8970,            1158,     6972,
    267         18022,     1392,           -1594,    -9599,
    268         16711,     4096,               0,        0,
    269         8192,      655,           -2708,   -16305,
    270         15237,    13926,            1808,    10884,
    271         14254,     3112,            -406,    -2444,
    272         14090,     4669,             193,     1165,
    273         5406,     2703,            -614,    -3697,
    274         13434,     6553,             694,     4180,
    275         12451,      901,           -2237,   -13468,
    276         12451,     2662,            -637,    -3833,
    277         3768,      655,           -2708,   -16305,
    278         14745,    23511,            2582,    15543,
    279         19169,     2457,            -755,    -4546,
    280         20152,     5079,             318,     1913,
    281         6881,     4096,               0,        0,
    282         20480,     8560,            1089,     6556,
    283         19660,      737,           -2534,   -15255,
    284         19005,     4259,              58,      347,
    285         7864,     2088,            -995,    -5993,
    286         11468,    12288,            1623,     9771,
    287         15892,     1474,           -1510,    -9090,
    288         15728,     4628,             180,     1086,
    289         9175,     1433,           -1552,    -9341,
    290         16056,     7004,             793,     4772,
    291         14827,      737,           -2534,   -15255,
    292         15073,     2252,            -884,    -5321,
    293         5079,     1228,           -1780,   -10714,
    294         13271,    17326,            2131,    12827,
    295         16547,     2334,            -831,    -5002,
    296         15073,     5816,             518,     3118,
    297         3932,     3686,            -156,     -938,
    298         14254,     8601,            1096,     6598,
    299         16875,      778,           -2454,   -14774,
    300         15073,     3809,            -107,     -646,
    301         6062,      614,           -2804,   -16879,
    302         9338,     9256,            1204,     7251,
    303         13271,     1761,           -1247,    -7508,
    304         13271,     3522,            -223,    -1343,
    305         2457,     1966,           -1084,    -6529,
    306         11468,     5529,             443,     2668,
    307         10485,      737,           -2534,   -15255,
    308         11632,     3194,            -367,    -2212,
    309         1474,      778,           -2454,   -14774
    310     };
    311 
    312     /*--------------------------------------------------------------------------*/
    313 #ifdef __cplusplus
    314 }
    315 #endif
    316 
    317 /*
    318 ------------------------------------------------------------------------------
    319  FUNCTION NAME:
    320 ------------------------------------------------------------------------------
    321  INPUT AND OUTPUT DEFINITIONS
    322 
    323  Inputs:
    324     None
    325 
    326  Outputs:
    327     None
    328 
    329  Returns:
    330     None
    331 
    332  Global Variables Used:
    333     None
    334 
    335  Local Variables Needed:
    336     None
    337 
    338 ------------------------------------------------------------------------------
    339  FUNCTION DESCRIPTION
    340 
    341  None
    342 
    343 ------------------------------------------------------------------------------
    344  REQUIREMENTS
    345 
    346  None
    347 
    348 ------------------------------------------------------------------------------
    349  REFERENCES
    350 
    351  [1] qua_gain.tab,  UMTS GSM AMR speech codec,
    352                     R99 - Version 3.2.0, March 2, 2001
    353 
    354 ------------------------------------------------------------------------------
    355  PSEUDO-CODE
    356 
    357 
    358 ------------------------------------------------------------------------------
    359  RESOURCES USED [optional]
    360 
    361  When the code is written for a specific target processor the
    362  the resources used should be documented below.
    363 
    364  HEAP MEMORY USED: x bytes
    365 
    366  STACK MEMORY USED: x bytes
    367 
    368  CLOCK CYCLES: (cycle count equation for this function) + (variable
    369                 used to represent cycle count for each subroutine
    370                 called)
    371      where: (cycle count variable) = cycle count for [subroutine
    372                                      name]
    373 
    374 ------------------------------------------------------------------------------
    375  CAUTION [optional]
    376  [State any special notes, constraints or cautions for users of this function]
    377 
    378 ------------------------------------------------------------------------------
    379 */
    380 
    381 /*----------------------------------------------------------------------------
    382 ; FUNCTION CODE
    383 ----------------------------------------------------------------------------*/
    384 
    385 
    386 
    387 
    388 
    389 
    390 
    391