enc_dtx.h
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:4k
源码类别:

Symbian

开发平台:

Visual C++

  1. /*
  2.  *===================================================================
  3.  *  3GPP AMR Wideband Floating-point Speech Codec
  4.  *===================================================================
  5.  */
  6. #ifndef ENC_F_DTX_H
  7. #define ENC_F_DTX_H
  8. #include "typedef.h"
  9. #define M               16       /* Order of LP filter                  */
  10. #define DTX_HIST_SIZE   8        /* 8 frames                            */
  11. #define COMPLEN         12       /* Number of sub-bands used by VAD     */
  12. #define F_5TH_CNT       5        /* Number of 5th order filters in VAD  */
  13. #define F_3TH_CNT       6        /* Number of 3th order filters in VAD  */
  14. typedef struct {
  15.    Float32 mem_isf[M * DTX_HIST_SIZE]; /* LSP history                        */
  16.    Float32 mem_distance[28];           /* ISF history distance matrix        */
  17.    Float32 mem_distance_sum[DTX_HIST_SIZE];/* Sum of ISF history distances   */
  18.    Float32 mem_log_en[DTX_HIST_SIZE];  /* logarithmic frame energy history   */
  19.    Word16 mem_hist_ptr;             /* pointer to the cyclic history vectors */
  20.    Word16 mem_log_en_index;         /* Index for logarithmic energy          */
  21.    Word16 mem_cng_seed;             /* Comfort noise excitation seed         */
  22.    Word16 mem_dtx_hangover_count;   /* DTX hangover period                   */
  23.    Word16 mem_dec_ana_elapsed_count;/* counter for elapsed speech frames     */
  24.                                     /* in DTX                                */
  25. } E_DTX_State;
  26. typedef struct {
  27.    Float64 mem_pow_sum;             /* power of previous frame               */
  28.    Float32 mem_bckr_est[COMPLEN];   /* background noise estimate             */
  29.    Float32 mem_ave_level[COMPLEN];  /* averaged input components             */
  30.                                     /* for stationary estimation             */
  31.    Float32 mem_level[COMPLEN];      /* input levels of the previous frame    */
  32.    Float32 mem_sub_level[COMPLEN];  /* input levels calculated at the end of */
  33.                                     /* a frame (lookahead)                   */
  34.    Float32 mem_a_data5[F_5TH_CNT][2];/* memory for the filter bank           */
  35.    Float32 mem_a_data3[F_3TH_CNT];  /* memory for the filter bank            */
  36.    Float32 mem_sp_max;              /* maximum level                         */
  37.    Float32 mem_speech_level;        /* estimated speech level                */
  38.    Word16 mem_burst_count;          /* counts length of a speech burst       */
  39.    Word16 mem_hang_count;           /* hangover counter                      */
  40.    Word16 mem_stat_count;           /* stationary counter                    */
  41.    Word16 mem_vadreg;               /* flags for intermediate VAD decisions  */
  42.    Word16 mem_pitch_tone;           /* flags for pitch and tone detection    */
  43.    Word16 mem_sp_est_cnt;           /* counter for speech level estimation   */
  44.    Word16 mem_sp_max_cnt;           /* counts frames that contains speech    */
  45. } E_DTX_Vad_State;
  46. Word32 E_DTX_init(E_DTX_State **st);
  47. Word32 E_DTX_reset(E_DTX_State *st);
  48. void E_DTX_exit(E_DTX_State **st);
  49. void E_DTX_tx_handler(E_DTX_State *st, Word32 vad_flag, Word16 *usedMode);
  50. void E_DTX_buffer(E_DTX_State *st, Float32 isf_new[], Float32 enr,
  51.                   Word16 codec_mode);
  52. void E_DTX_exe(E_DTX_State *st, Float32 *exc2, Word16 **pt_prms);
  53. Word32 E_DTX_vad_init(E_DTX_Vad_State **st);
  54. Word32 E_DTX_vad_reset(E_DTX_Vad_State *st);
  55. void E_DTX_vad_exit(E_DTX_Vad_State **st);
  56. void E_DTX_pitch_tone_detection(E_DTX_Vad_State *st, Float32 p_gain);
  57. Word16 E_DTX_vad(E_DTX_Vad_State *st, Float32 in_buf[]);
  58. #endif