⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rom_dec.h

📁 mpeg4 video codec mpeg4 video codec
💻 H
📖 第 1 页 / 共 5 页
字号:
/* * =================================================================== *  TS 26.104 *  R99   V3.5.0 2003-03 *  REL-4 V4.4.0 2003-03 *  REL-5 V5.1.0 2003-03 *  3GPP AMR Floating-point Speech Codec * =================================================================== * *//* * rom_dec.h * * * Project: *    AMR Floating-Point Codec * * Contains: *    This file contains all the tables needed by AMR decoder functions. * */#ifndef _ROM_DEC_H_#define _ROM_DEC_H_/* * include files */#include"typedef.h"#include"interf_rom.h"/* * definition of constants */#define M               10      /* Order of LP filter */#define MP1             (M+1)   /* Order of LP filter + 1 */#define L_WINDOW        240     /* Window size in LP analysis */#define L_NEXT          40      /* Overhead in LP analysis */#define LTPG_MEM_SIZE   5       /* number of stored past LTP coding gains + 1 */#define N_FRAME         7       /* old pitch gains in average calculation */#define DTX_HIST_SIZE   8       /* DTX history size */#define L_TOTAL         320     /* Total size of speech buffer. */#define L_FRAME         160     /* Frame size */#define L_FRAME_BY2     80      /* Frame size divided by 2 */#define L_SUBFR         40      /* Subframe size */#define L_CODE          40      /* codevector length */#define PIT_MAX         143     /* Maximum pitch lag */#define PIT_MIN         20      /* Minimum pitch lag */#define PIT_MIN_MR122   18      /* Minimum pitch lag (MR122 mode) */#define L_INTERPOL      (10+1)  /* Length of filter for interpolation */#define NPRED 4                 /* number of prediction taps */#define SHARPMIN  0             /* Minimum value of pitch sharpening */#define MAX_PRM_SIZE    57      /* max. num. of params */#define L_INTER_SRCH    4           /* Length of filter for CL LTP search interpolation */#define GP_CLIP         0.95F   /* Pitch gain clipping */#define UP_SAMP_MAX     6#define NB_TRACK        5       /* number of tracks */#define NB_TRACK_MR102  4       /* number of tracks mode mr102 */#define STEP            5       /* codebook step size */#define STEP_MR102      4       /* codebook step size mode mr102 */#define NC              M/2     /* Order of LP filter divided by 2 *//* vad */#define COMPLEN               9        /* Number of sub-bands used by VAD */#define L_ENERGYHIST          60#define L_CBGAINHIST          7#define PHDGAINMEMSIZE        5#define MIN_ENERGY            -14336   /* 14 Q10 */#define MIN_ENERGY_MR122      -2381    /* 14 / (20*log10(2)) Q10 */#define PN_INITIAL_SEED       0x70816958L /* Pseudo noise generator seed value  */#define MIN_16                (Word16)-32768#define MAX_16                (Word16)0x7fff#define MAX_32                (Word32)0x7fffffffL#define EXPCONST              5243     /* 0.16 in Q15 */#define DTX_MAX_EMPTY_THRESH  50#define DTX_ELAPSED_FRAMES_THRESH (24 + 7 -1)#define LSF_GAP               205      /* Minimum distance between LSF after quantization; 50 Hz = 205 */#define LSP_PRED_FAC_MR122    21299    /* MR122 LSP prediction factor (0.65 Q15) */#define POS_CODE              8191#define NEG_CODE              8191#define NMAX                  9        /* largest N used in median calculation */#define MEAN_ENER_MR122       783741L  /* 36/(20*log10(2)) (Q17) */#define SHARPMAX              13017    /* Maximum value of pitch sharpening */#define FRAMEENERGYLIMIT      17578    /* 150 */#define LOWERNOISELIMIT       20       /*  5 */#define UPPERNOISELIMIT       1953     /* 50 */#define AZ_SIZE               (4*M+4)  /* Size of array of LP filters in 4 subfr.s */#define AGC_FAC               29491    /* Factor for automatic gain control 0.9 */#define PHDGAINMEMSIZE        5#define PHDTHR1LTP            9830     /* 0.6 in Q14 */#define PHDTHR2LTP            14746    /* 0.9 in Q14 */#define ONFACTPLUS1           16384    /* 2.0 in Q13 */#define ONLENGTH              2#define DTX_HANG_CONST        7        /* yields eight frames of SP HANGOVER *//* number of parameters */#define PRMNO_MR475 17#define PRMNO_MR515 19#define PRMNO_MR59  19#define PRMNO_MR67  19#define PRMNO_MR74  19#define PRMNO_MR795 23#define PRMNO_MR102 39#define PRMNO_MR122 57#define PRMNO_MRDTX 5/* * tables *//* level adjustment for different modes Q11 */static const Word16 dtx_log_en_adjust[9] ={   - 1023,   /* MR475 */ - 878,   /* MR515 */ - 732,   /* MR59  */ - 586,   /* MR67  */ - 440,   /* MR74  */ - 294,   /* MR795 */ - 148,   /* MR102 */ 0,   /* MR122 */ 0,   /* MRDTX */};/* attenuation factors for codebook gain */static const Word32 cdown[7] =   {      32767,      32112,      32112,      32112,      32112,      32112,      22937   };/* attenuation factors for adaptive codebook gain */static const Word32 pdown[7] =   {      32767,      32112,      32112,      26214,      9830,      6553,      6553   };/* algebraic code book gain MA predictor coefficients */static const Word32 pred[NPRED] ={   5571,   4751,   2785,   1556};/* algebraic code book gain MA predictor coefficients (MR122) */static const Word32 pred_MR122[NPRED] ={   44,   37,   22,   12};static const Word32 gamma4_gamma3_MR122[M] ={   22938,   16057,   11240,   7868,   5508,   3856,   2699,   1889,   1322,   925};static const Word32 gamma3[M] ={   18022,   9912,   5451,   2998,   1649,   907,   499,   274,   151,   83};static const Word32 gamma4_MR122[M] ={   24576,   18432,   13824,   10368,   7776,   5832,   4374,   3281,   2461,   1846};/* adaptive codebook gain quantization table (MR122, MR795) */#define NB_QUA_PITCH 16static const Word32 qua_gain_pitch[NB_QUA_PITCH] ={   0,   3277,   6556,   8192,   9830,   11469,   12288,   13107,   13926,   14746,   15565,   16384,   17203,   18022,   18842,   19661};/* fixed codebook gain quantization table (MR122, MR795) */#define NB_QUA_CODE 32static const Word32 qua_gain_code[NB_QUA_CODE * 3] ={/* gain factor (g_fac) and quantized energy error (qua_ener_MR122, qua_ener) * are stored: * * qua_ener_MR122 = log2(g_fac)      (not the rounded floating point value, but *                                    the value the original EFR algorithm *                                    calculates from g_fac [using Log2]) * qua_ener       = 20*log10(g_fac); (rounded floating point value) * * * g_fac (Q11), * qua_ener_MR122 (Q10), * qua_ener (Q10) */ 159,   - 3776,   - 22731,   206,   - 3394,   - 20428,   268,   - 3005,   - 18088,   349,   - 2615,   - 15739,   419,   - 2345,   - 14113,   482,   - 2138,   - 12867,   554,   - 1932,   - 11629,   637,   - 1726,   - 10387,   733,   - 1518,   - 9139,   842,   - 1314,   - 7906,   969,   - 1106,   - 6656,   1114,   - 900,   - 5416,   1281,   - 694,   - 4173,   1473,   - 487,   - 2931,   1694,   - 281,   - 1688,   1948,   - 75,   - 445,   2241,   133,   801,   2577,   339,   2044,   2963,   545,   3285,   3408,   752,   4530,   3919,   958,   5772,   4507,   1165,   7016,   5183,   1371,   8259,   5960,   1577,   9501,   6855,   1784,   10745,   7883,   1991,   11988,   9065,   2197,   13231,   10425,   2404,   14474,   12510,   2673,   16096,   16263,   3060,   18429,   21142,   3448,   20763,   27485,   3836,   23097};/* gray coding table */static const Word8 gray[8] ={   0,   1,   3,   2,   6,   4,   5,   7};/* gray decoding table */static const Word32 dgray[8] ={   0,   1,   3,   2,   5,   6,   4,   7};/* table[i] = sqrt((i+16)*2^-6) * 2^15, i.e. sqrt(x) scaled Q15 */static const Word32 sqrt_table[49] ={   16384,   16888,   17378,   17854,   18318,   18770,   19212,   19644,   20066,   20480,   20886,   21283,   21674,   22058,   22435,   22806,   23170,   23530,   23884,   24232,   24576,   24915,   25249,   25580,   25905,   26227,   26545,   26859,   27170,   27477,   27780,   28081,   28378,   28672,   28963,   29251,   29537,   29819,   30099,   30377,   30652,   30924,   31194,   31462,   31727,   31991,   32252,   32511,   32767};static const Word32 inv_sqrt_table[49] ={   32767,   31790,   30894,   30070,   29309,   28602,   27945,   27330,   26755,   26214,   25705,   25225,   24770,   24339,   23930,   23541,   23170,   22817,   22479,   22155,   21845,   21548,   21263,   20988,   20724,   20470,   20225,   19988,   19760,   19539,   19326,   19119,   18919,   18725,   18536,   18354,   18176,   18004,   17837,   17674,   17515,   17361,   17211,   17064,   16921,   16782,   16646,   16514,   16384};/* table used inbase 2 logharithm computation */static const Word32 log2_table[33] ={   0,   1455,   2866,   4236,   5568,   6863,   8124,   9352,   10549,   11716,   12855,   13967,   15054,   16117,   17156,   18172,   19167,   20142,   21097,   22033,   22951,   23852,   24735,   25603,   26455,   27291,   28113,   28922,   29716,   30497,   31266,   32023,   32767};/* table used in 2 to the power computation */static const Word32 pow2_table[33] ={   16384,   16743,   17109,   17484,   17867,   18258,   18658,   19066,   19484,   19911,   20347,   20792,   21247,   21713,   22188,   22674,   23170,   23678,   24196,   24726,   25268,   25821,   26386,   26964,   27554,   28158,   28774,   29405,   30048,   30706,   31379,   32066,   32767};/* table of cos(x) */static const Word32 cos_table[65] ={   32767,   32729,   32610,   32413,   32138,   31786,   31357,   30853,   30274,   29622,   28899,   28106,   27246,   26320,   25330,   24279,   23170,   22006,   20788,   19520,   18205,   16846,   15447,   14010,   12540,   11039,   9512,   7962,   6393,   4808,   3212,   1608,   0,   - 1608,   - 3212,   - 4808,   - 6393,   - 7962,   - 9512,   - 11039,   - 12540,   - 14010,   - 15447,   - 16846,   - 18205,   - 19520,   - 20788,   - 22006,   - 23170,   - 24279,   - 25330,   - 26320,   - 27246,   - 28106,   - 28899,   - 29622,   - 30274,   - 30853,   - 31357,   - 31786,   - 32138,   - 32413,   - 32610,   - 32729,   - 32768};/* slope used to compute y = acos(x) */static const Word32 acos_slope[64] ={   - 26887,   - 8812,   - 5323,   - 3813,   - 2979,   - 2444,   - 2081,   - 1811,   - 1608,   - 1450,   - 1322,   - 1219,   - 1132,   - 1059,   - 998,   - 946,   - 901,   - 861,   - 827,   - 797,   - 772,   - 750,   - 730,   - 713,   - 699,   - 687,   - 677,   - 668,   - 662,   - 657,   - 654,   - 652,   - 652,   - 654,   - 657,   - 662,   - 668,   - 677,   - 687,   - 699,   - 713,   - 730,   - 750,   - 772,   - 797,   - 827,   - 861,   - 901,   - 946,   - 998,   - 1059,   - 1132,   - 1219,   - 1322,   - 1450,   - 1608,   - 1811,   - 2081,   - 2444,   - 2979,   - 3813,   - 5323,   - 8812,   - 26887};/* All impulse responses are in Q15 *//* phase dispersion impulse response (MR795) */static const Word32 ph_imp_low_MR795[] ={   26777,   801,   2505,   - 683,   - 1382,   582,   604,   - 1274,   3511,   - 5894,   4534,   - 499,   - 1940,   3011,   - 5058,   5614,   - 1990,   - 1061,   - 1459,   4442,   - 700,   - 5335,   4609,   452,   - 589,   - 3352,   2953,   1267,   - 1212,   - 2590,   1731,   3670,   - 4475,   - 975,   4391,   - 2537,   949,   - 1363,   - 979,   5734};/* phase dispersion impulse response (MR795) */static const Word32 ph_imp_mid_MR795[] ={   30274,   3831,   - 4036,   2972,   - 1048,   - 1002,   2477,   - 3043,   2815,   - 2231,   1753,   - 1611,   1714,   - 1775,   1543,   - 1008,   429,   - 169,   472,   - 1264,   2176,   - 2706,   2523,   - 1621,   344,   826,   - 1529,   1724,   - 1657,   1701,   - 2063,   2644,   - 3060,   2897,   - 1978,   557,   780,   - 1369,   842,   655};/* phase dispersion impulse response (MR475 - MR67) */static const Word32 ph_imp_low[] ={   14690,   11518,   1268,   - 2761,   - 5671,   7514,   - 35,   - 2807,   - 3040,   4823,   2952,   - 8424,   3785,   1455,   2179,   - 8637,   8051,   - 2103,   - 1454,   777,   1108,   - 2385,   2254,   - 363,   - 674,   - 2103,   6046,   - 5681,   1072,   3123,   - 5058,   5312,   - 2329,   - 3728,   6924,   - 3889,   675,   - 1775,   29,   10145};/* phase dispersion impulse response (MR475 - MR67) */static const Word32 ph_imp_mid[] ={   30274,   3831,   - 4036,   2972,   - 1048,   - 1002,   2477,   - 3043,   2815,   - 2231,   1753,   - 1611,   1714,   - 1775,   1543,   - 1008,   429,   - 169,   472,   - 1264,   2176,   - 2706,   2523,   - 1621,   344,   826,   - 1529,   1724,   - 1657,   1701,   - 2063,   2644,   - 3060,   2897,   - 1978,   557,   780,   - 1369,   842,   655};/* initialization table for the MA predictor in DTX */#define PAST_RQ_INIT_SIZE 8/* initalization table for MA predictor in dtx mode */static const Word32 past_rq_init[80] ={   - 258,   - 318,   - 439,   - 634,   - 656,   - 773,   - 711,   - 502,   - 268,   - 193,   - 2,   125,   122,   - 39,   - 9,   105,   129,   283,   372,   575,   - 277,   - 324,   - 197,   - 487,   - 445,   - 362,   - 292,   - 27,   177,   543,   342,   517,   516,   130,   27,   - 104,   - 120,   - 140,   - 74,   - 56,   - 564,   - 943,   - 1520,   - 965,   - 814,   - 526,   - 322,   - 2,   159,   657,   - 312,   - 284,   - 386,   - 597,   - 493,   - 526,   - 418,   - 229,   105,   449,   - 557,   - 870,   - 1075,   - 919,   - 950,   - 752,   - 709,   - 316,   62,   486,   - 314,   - 191,   - 203,   - 330,   - 160,   - 103,   - 51,   131,   338,   515};#define ALPHA     29491#define ONE_ALPHA 3277/* LSF means (not in MR122) */static const Word32 mean_lsf_3[10] ={   1546,   2272,   3778,   5488,   6972,   8382,   10047,   11229,   12766,   13714};#define ALPHA_122     31128#define ONE_ALPHA_122 1639/* LSF means ->normalize frequency domain */static const Word32 mean_lsf_5[10] ={   1384,   2077,   3420,   5108,   6742,   8122,   9863,   11092,   12714,   13701};/* LSF prediction factors (not in MR122) */static const Word32 pred_fac[10] ={   9556,   10769,   12571,   13292,   14381,   11651,   10588,   9767,   8593,   6484};#define DICO1_SIZE_3  256#define DICO2_SIZE_3  512#define DICO3_SIZE_3  512/* 1st LSF quantizer (not in MR122 and MR795) */static const Word32 dico1_lsf_3[] ={   6,   82,   - 131,   154,   - 56,   - 735,   183,   - 65,   - 265,   9,   - 210,   - 361,   113,   718,   1817,   1010,   1214,   1573,   857,   1333,   2276,   827,   1568,   1933,   717,   1989,   2206,   838,   1172,   1823,   721,   1000,   2154,   286,   476,   1509,   - 247,   - 531,   230,   147,   - 82,   569,   26,   - 177,   - 944,   - 27,   - 273,   692,   - 164,   - 264,   - 183,   224,   790,   1039,   899,   946,   601,   485,   771,   1150,   524,   677,   903,   - 140,   375,   778,   410,   676,   429,   301,   530,   1009,   719,   646,   38,   226,   367,   40,   145,   - 45,   - 505,   290,   121,   - 121,   302,   127,   166,   - 124,   - 383,   - 956,   - 358,   - 455,   - 977,   715,   878,   894,   978,   923,   211,   477,   272,   64,   188,   - 78,   17,   - 143,   - 65,   38,   643,   586,   621,   - 134,   - 426,   - 651,   347,   545,   2820,   1188,   2726,   2442,   142,   - 80,   1735,   283,   130,   461,   - 262,   - 399,   - 1145,   - 411,   155,   430,   329,   375,   779,   53,   - 226,   - 139,   - 129,   - 236,   1682,   285,   744,   1327,   738,   697,   1664,   312,   409,   266,   325,   720,   135,   1,   221,   453,   8,   203,   145,   299,   640,   760,   29,   468,   638,   103,   429,   379,   420,   954,   932,   1326,   1210,   1258,   704,   1012,   1152,   - 166,   - 444,   - 266,   - 316,   - 130,   - 376,   191,   1151,   1904,   - 240,   - 543,   - 1260,   - 112,   268,   1207,   70,   1062,   1583,   278,   1360,   1574,   - 258,   - 272,   - 768,   19,   563,   2240,   - 3,   - 265,   135,   - 295,   - 591,   - 388,   140,   354,   - 206,   - 260,   - 504,   - 795,   - 433,   - 718,   - 1319,   109,   331,   962,   - 429,   - 87,   652,   - 296,   426,   1019,   - 239,   775,   851,   489,   1334,   1073,   - 334,   - 332,   25,   543,   1206,   1807,   326,   61,   727,   578,   849,   1405,   - 208,   - 277,   329,   - 152,   64,   669,   - 434,   - 678,   - 727,   - 454,   - 71,   251,   605,   480,   254,   - 482,   11,   996,   - 289,   395,   486,   722,   1049,   1440,   - 30,   - 316,   - 786,   - 106,   - 115,   - 619,   861,   1474,   1412,   1055,   1366,   1184,   812,   1237,   925,   42,   - 251,   - 576,   342,   141,   - 454,   - 168,   - 80,   1359,   - 342,   - 656,   - 1763,   100,   821,   725,   990,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -