CST_LBC.H
上传用户:meifeng08
上传日期:2013-06-18
资源大小:5304k
文件大小:6k
源码类别:

语音压缩

开发平台:

C/C++

  1. /*
  2. **
  3. ** File:        "cst_lbc.h"
  4. **
  5. ** Description:  This file contains global definition of the SG15
  6. **    LBC Coder for 6.3/5.3 kbps.
  7. **
  8. */
  9. /*
  10.     ITU-T G.723 Speech Coder   ANSI-C Source Code     Version 5.00
  11.     copyright (c) 1995, AudioCodes, DSP Group, France Telecom,
  12.     Universite de Sherbrooke.  All rights reserved.
  13. */
  14. #define  False 0
  15. #define  True  1
  16. /* Definition of the working mode */
  17. enum  Wmode { Both, Cod, Dec } ;
  18. /* Coder rate */
  19. enum  Crate    { Rate63, Rate53 } ;
  20. /* Coder global constants */
  21. #define  Frame       240
  22. #define  LpcFrame    180
  23. #define  SubFrames   4
  24. #define  SubFrLen    (Frame/SubFrames)
  25. /* LPC constants */
  26. #define  LpcOrder          10
  27. #define  RidgeFact         10
  28. #define  CosineTableSize   512
  29. #define  PreCoef           (Word16) 0xc000            /* -0.25*2 */
  30. #define  LspPrd0           12288
  31. #define  LspPrd1           23552
  32. #define  LspQntBands       3
  33. #define  LspCbSize         256
  34. #define  LspCbBits         8
  35. /* LTP constants */
  36. #define  PitchMin          18
  37. #define  PitchMax          (PitchMin+127)
  38. #define  PwConst           (Word16) 0x2800
  39. #define  PwRange           3
  40. #define  ClPitchOrd        5
  41. #define  Pstep             1
  42. #define NbFilt085          85
  43. #define NbFilt170          170
  44. /* MP-MLQ constants */
  45. #define  Sgrid             2
  46. #define  MaxPulseNum       6
  47. #define  MlqSteps          2
  48. /* acelp constants */
  49. #define SubFrLen2          (SubFrLen +4)
  50. #define DIM_RR             416
  51. #define NB_POS             8
  52. #define STEP               8
  53. #define MSIZE              64
  54. #define threshold          16384  /* 0.5 = 16384 in Q15 */
  55. #define max_time           120
  56. /* Gain constant */
  57. #define  NumOfGainLev      24
  58. /* FER constant */
  59. #define  ErrMaxNum         3
  60. /* CNG constants  */
  61. #define NbAvAcf            3  /* Nb of frames for Acf average               */
  62. #define NbAvGain           3  /* Nb of frames for gain average              */
  63. #define ThreshGain         3  /* Theshold for quantized gains               */
  64. #define FracThresh         7000   /* Itakura dist threshold: frac. part     */
  65. #define NbPulsBlk          11 /* Nb of pulses in 2-subframes blocks         */
  66. #define InvNbPulsBlk       2979 /* 32768/NbPulsBlk                          */
  67. #define NbFilt             50 /* number of filters for CNG exc generation   */
  68. #define LpcOrderP1         (LpcOrder+1)
  69. #define SizAcf             ((NbAvAcf+1)*LpcOrderP1) /* size of array Acf    */
  70. #define SubFrLenD          (2*SubFrLen)
  71. #define Gexc_Max           5000  /* Maximum gain for fixed CNG excitation   */
  72. /* Taming constants */
  73. #define NbFilt085_min      51
  74. #define NbFilt170_min      93
  75. #define SizErr             5
  76. #define Err0               (Word32)4  /* scaling factor */
  77. #define ThreshErr          0x40000000L
  78. #define DEC                (30 - 7)
  79. /*
  80.    Used structures
  81. */
  82. typedef  struct   {
  83.    /* High pass variables */
  84.    Word16   HpfZdl   ;
  85.    Word32   HpfPdl   ;
  86.    /* Sine wave detector */
  87.    Word16   SinDet   ;
  88.    /* Lsp previous vector */
  89.    Word16   PrevLsp[LpcOrder] ;
  90.    /* All pitch operation buffers */
  91.    Word16   PrevWgt[PitchMax] ;
  92.    Word16   PrevErr[PitchMax] ;
  93.    Word16   PrevExc[PitchMax] ;
  94.    /* Required memory for the delay */
  95.    Word16   PrevDat[LpcFrame-SubFrLen] ;
  96.    /* Used delay lines */
  97.    Word16   WghtFirDl[LpcOrder] ;
  98.    Word16   WghtIirDl[LpcOrder] ;
  99.    Word16   RingFirDl[LpcOrder] ;
  100.    Word16   RingIirDl[LpcOrder] ;
  101.    /* Taming procedure errors */
  102.    Word32 Err[SizErr];
  103.    } CODSTATDEF  ;
  104. typedef  struct   {
  105.    Word16   Ecount ;
  106.    Word16   InterGain ;
  107.    Word16   InterIndx ;
  108.    Word16   Rseed ;
  109.    Word16   Park  ;
  110.    Word16   Gain  ;
  111.    /* Lsp previous vector */
  112.    Word16   PrevLsp[LpcOrder] ;
  113.    /* All pitch operation buffers */
  114.    Word16   PrevExc[PitchMax] ;
  115.    /* Used delay lines */
  116.    Word16   SyntIirDl[LpcOrder] ;
  117.    Word16   PostFirDl[LpcOrder] ;
  118.    Word16   PostIirDl[LpcOrder] ;
  119.    } DECSTATDEF  ;
  120.    /* subframe coded parameters */
  121. typedef  struct   {
  122.    Word16   AcLg  ;
  123.    Word16   AcGn  ;
  124.    Word16   Mamp  ;
  125.    Word16   Grid  ;
  126.    Word16   Tran  ;
  127.    Word16   Pamp  ;
  128.    Word32   Ppos  ;
  129.    } SFSDEF ;
  130.    /* frame coded parameters */
  131. typedef  struct   {
  132.    Word16   Crc   ;
  133.    Word32   LspId ;
  134.    Word16   Olp[SubFrames/2] ;
  135.    SFSDEF   Sfs[SubFrames] ;
  136.    } LINEDEF ;
  137.    /* harmonic noise shaping filter parameters */
  138. typedef  struct   {
  139.    Word16   Indx  ;
  140.    Word16   Gain  ;
  141.    } PWDEF  ;
  142.     /* pitch postfilter parameters */
  143. typedef  struct   {
  144.    Word16   Indx  ;
  145.    Word16   Gain  ;
  146.    Word16   ScGn  ;
  147.    } PFDEF  ;
  148.     /* best excitation vector parameters for the high rate */
  149. typedef  struct {
  150.    Word32   MaxErr   ;
  151.    Word16   GridId   ;
  152.    Word16   MampId   ;
  153.    Word16   UseTrn   ;
  154.    Word16   Ploc[MaxPulseNum] ;
  155.    Word16   Pamp[MaxPulseNum] ;
  156.    } BESTDEF ;
  157.     /* VAD static variables */
  158. typedef struct {
  159.     Word16  Hcnt ;
  160.     Word16  Vcnt ;
  161.     Word32  Penr ;
  162.     Word32  Nlev ;
  163.     Word16  Aen ;
  164.     Word16  Polp[4] ;
  165.     Word16  NLpc[LpcOrder] ;
  166. } VADSTATDEF ;
  167. /* CNG features */
  168. /* Coder part */
  169. typedef struct {
  170.     Word16 CurGain;
  171.     Word16 PastFtyp;
  172.     Word16 Acf[SizAcf];
  173.     Word16 ShAcf[NbAvAcf+1];
  174.     Word16 LspSid[LpcOrder] ;
  175.     Word16 SidLpc[LpcOrder] ;
  176.     Word16 RC[LpcOrderP1];
  177.     Word16 ShRC;
  178.     Word16 Ener[NbAvGain];
  179.     Word16 NbEner;
  180.     Word16 IRef;
  181.     Word16 SidGain;
  182.     Word16 RandSeed;
  183. } CODCNGDEF;
  184. /* Decoder part */
  185. typedef struct {
  186.     Word16 CurGain;
  187.     Word16 PastFtyp;
  188.     Word16 LspSid[LpcOrder] ;
  189.     Word16 SidGain;
  190.     Word16 RandSeed;
  191. } DECCNGDEF;