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

📄 g729a_ld8a.h

📁 在DSP上实现的G.729优化代码 编译过的 大家快来下载啊
💻 H
字号:
#ifndef _H_G729ALD8A
#define _H_G729ALD8A

#define  G729A_L_TOTAL          240             
#define  G729A_L_WINDOW         240            
#define  G729A_L_NEXT           40                  
#define  G729A_L_FRAME          80                               
#define  G729A_L_SUBFR          40                         
#define  G729A_M                10                 
#define  G729A_MP1              (G729A_M+1)           
#define  G729A_PIT_MIN          20                 
#define  G729A_PIT_MAX          143                 
#define  G729A_L_INTERPOL       (10+1)  
#define  G729A_GAMMA1           24576        

#define  G729A_PRM_SIZE         11     

#define  G729A_SERIAL_SIZE      5
#define  G729A_SHARPMAX         13017   
#define  G729A_SHARPMIN         3277   

#define  G729A_UP_SAMP          3
#define  G729A_L_INTER10        10
#define  G729A_FIR_SIZE_SYN     (G729A_UP_SAMP*G729A_L_INTER10+1)

#define  G729A_DIM_RR           616                      
#define  G729A_NB_POS           8                  
#define  G729A_STEP             5                
#define  G729A_MSIZE            64  

#define  G729A__1_2             (Word16)(16384)
#define  G729A__1_4             (Word16)( 8192)
#define  G729A__1_8             (Word16)( 4096)
#define  G729A__1_16            (Word16)( 2048)

#define  G729A_NC               5     
#define  G729A_MA_NP            4     
#define  G729A_MODE             2      
#define  G729A_NC0_B            7     
#define  G729A_NC1_B            5       
#define  G729A_NC0              (1<<G729A_NC0_B)
#define  G729A_NC1              (1<<G729A_NC1_B)

#define  G729A_L_LIMIT          40   
#define  G729A_M_LIMIT          25681    

#define  G729A_GAP1             10    
#define  G729A_GAP2             5      
#define  G729A_GAP3             321  
#define  G729A_GRID_POINTS      50

#define  G729A_PI04             ((Word16)1029)       
#define  G729A_PI92             ((Word16)23677)     
#define  G729A_CONST10          ((Word16)10*(1<<11))
#define  G729A_CONST12          ((Word16)19661)     

#define  G729A_NCODE1_B         3                
#define  G729A_NCODE2_B         4                
#define  G729A_NCODE1           (1<<G729A_NCODE1_B)     
#define  G729A_NCODE2           (1<<G729A_NCODE2_B)   
#define  G729A_NCAN1            4               
#define  G729A_NCAN2            8               
#define  G729A_INV_COEF         -17103        

#define  G729A_BIT_0            (short)0x007f  
#define  G729A_BIT_1            (short)0x0081     
#define  G729A_SYNC_WORD        (short)0x6b21         
#define  G729A_SIZE_WORD        (short)80                      

#define  G729A_L_H              22    

#define  G729A_GAMMAP           16384   
#define  G729A_INV_GAMMAP       21845   
#define  G729A_GAMMAP_2         10923   

#define  G729A_GAMMA2_PST       18022 
#define  G729A_GAMMA1_PST       22938 

#define  G729A_MU               26214  
#define  G729A_AGC_FAC          29491   
#define  G729A_AGC_FAC1         (Word16)(32767 - G729A_AGC_FAC)            

#define  G729A_GPCLIP           15564       
#define  G729A_GPCLIP2          481        
#define  G729A_GP0999           16383         
#define  G729A_L_THRESH_ERR     983040000L   

Word32 G729AInv_sqrt(Word32 L_x);

void G729ALog2(Word32 L_x, Word16 *exponent, Word16 *fraction);

Word32 G729APow2(Word16 exponent, Word16 fraction);

void G729AInit_Pre_Process(void);
void G729AInit_Post_Process(void);

void G729APre_Process(Word16 signal[], Word16 lg );

void G729APost_Process(Word16 signal[], Word16 lg);

void G729AInit_Coder_ld8a(void);

void G729ACoder_ld8a(Word16 ana[]);

void G729AInit_Decod_ld8a(void);

void G729ADecod_ld8a(Word16  parm[], Word16  synth[], Word16  A_t[], Word16  *T2);

void G729AAutocorr(Word16 x[], Word16 m, Word16 r_h[], Word16 r_l[]);

void G729ALag_window(Word16 m, Word16 r_h[], Word16 r_l[]);

void G729ALevinson(Word16 Rh[], Word16 Rl[], Word16 A[], Word16 rc[]);

void G729AAz_lsp(Word16 a[], Word16 lsp[], Word16 old_lsp[]);

void G729ALsp_Az(Word16 lsp[], Word16 a[]);
void G729ALsf_lsp(Word16 lsf[], Word16 lsp[], Word16 m);

void G729ALsp_lsf(Word16 lsp[], Word16 lsf[], Word16 m);

void G729AInt_qlpc(Word16 lsp_old[], Word16 lsp_new[], Word16 Az[]);

void G729AWeight_Az(Word16 a[], Word16 gamma, Word16 m, Word16 ap[]);

void G729AResidu(Word16 a[], Word16 x[], Word16 y[], Word16 lg);

void G729ASyn_filt(Word16 a[], Word16 x[], Word16 y[], Word16 lg, Word16 mem[], Word16 update);

void G729AConvolve(Word16 x[], Word16 h[], Word16 y[], Word16 L);

Word16 G729APitch_ol_fast(Word16 signal[], Word16   pit_max, Word16   L_frame );

Word16 G729APitch_fr3_fast(Word16 exc[], Word16 xn[], Word16 h[], Word16 L_subfr, Word16 t0_min, Word16 t0_max, Word16 i_subfr, Word16 *pit_frac);

Word16 G729AG_pitch(Word16 xn[], Word16 y1[], Word16 g_coeff[], Word16 L_subfr);

Word16 G729AEnc_lag3(Word16 T0, Word16 T0_frac, Word16 *T0_min, Word16 *T0_max, Word16 pit_min, Word16 pit_max, Word16 pit_flag);

void G729ADec_lag3(Word16 index, Word16 pit_min, Word16 pit_max, Word16 i_subfr, Word16 *T0, Word16 *T0_frac);

Word16 G729AInterpol_3(Word16 *x, Word16 frac);

void G729APred_lt_3(Word16   exc[], Word16   T0, Word16   frac, Word16   L_subfr);

Word16 G729AParity_Pitch(Word16 pitch_index);

Word16  G729ACheck_Parity_Pitch( Word16 pitch_index, Word16 parity);

void G729ACor_h_X(Word16 h[], Word16 X[], Word16 D[]);

Word16  G729AACELP_Code_A(Word16 x[], Word16 h[], Word16 T0, Word16 pitch_sharp, Word16 code[], Word16 y[], Word16 *sign);

void G729ADecod_ACELP(Word16 sign, Word16 index, Word16 cod[]);

void G729ALsf_lsp2(Word16 lsf[], Word16 lsp[], Word16 m);

void G729ALsp_lsf2(Word16 lsp[], Word16 lsf[], Word16 m);

void G729AQua_lsp(Word16 lsp[], Word16 lsp_q[], Word16 ana[]);

void G729AGet_wegt(Word16 flsp[], Word16 wegt[]);

void G729ALsp_encw_reset(void);

void G729ALsp_qua_cs(Word16 flsp_in[G729A_M], Word16 lspq_out[G729A_M], Word16 *code);

void G729ALsp_expand_1(Word16 buf[],Word16 gap);

void G729ALsp_expand_2(Word16 buf[], Word16 gap);

void G729ALsp_expand_1_2(Word16 buf[], Word16 gap);

void G729ALsp_get_quant(Word16 lspcb1[][G729A_M], Word16 lspcb2[][G729A_M], Word16 code0, Word16 code1, Word16 code2, Word16 fg[][G729A_M], Word16 freq_prev[][G729A_M], Word16 lspq[], Word16 fg_sum[]);

void G729ALsp_get_tdist(Word16 wegt[], Word16 buf[], Word32 *L_tdist, Word16 rbuf[], Word16 fg_sum[]);

void G729ALsp_last_select(Word32 L_tdist[], Word16 *mode_index);

void G729ALsp_pre_select(Word16 rbuf[], Word16 lspcb1[][G729A_M], Word16 *cand);

void G729ALsp_select_1(Word16 rbuf[], Word16 lspcb1[], Word16 wegt[], Word16 lspcb2[][G729A_M], Word16 *index);

void G729ALsp_select_2(Word16 rbuf[], Word16 lspcb1[], Word16 wegt[], Word16 lspcb2[][G729A_M], Word16 *index);

void G729ALsp_stability(Word16 buf[]);

void G729ARelspwed(Word16 lsp[], Word16 wegt[], Word16 lspq[], Word16 lspcb1[][G729A_M], Word16 lspcb2[][G729A_M], Word16 fg[G729A_MODE][G729A_MA_NP][G729A_M], Word16 freq_prev[G729A_MA_NP][G729A_M], Word16 fg_sum[G729A_MODE][G729A_M], Word16 fg_sum_inv[G729A_MODE][G729A_M], Word16 code_ana[]);

void G729AD_lsp(Word16 prm[], Word16 lsp_q[], Word16 erase);

void G729ALsp_decw_reset(void);

void G729ALsp_iqua_cs(Word16 prm[],Word16 lsp_q[],Word16 erase);

void G729ALsp_prev_compose(Word16 lsp_ele[], Word16 lsp[], Word16 fg[][G729A_M], Word16 freq_prev[][G729A_M], Word16 fg_sum[]);

void G729ALsp_prev_extract(Word16 lsp[G729A_M], Word16 lsp_ele[G729A_M], Word16 fg[G729A_MA_NP][G729A_M], Word16 freq_prev[G729A_MA_NP][G729A_M], Word16 fg_sum_inv[G729A_M]);

void G729ALsp_prev_update(Word16 lsp_ele[G729A_M], Word16 freq_prev[G729A_MA_NP][G729A_M]);

Word16 G729AQua_gain(Word16 code[], Word16 g_coeff[], Word16 exp_coeff[], Word16 L_subfr, Word16 *gain_pit, Word16 *gain_cod, Word16 tameflag);

void G729ADec_gain(Word16 index, Word16 code[], Word16 L_subfr, Word16 bfi, Word16 *gain_pit, Word16 *gain_cod);

void G729AGain_predict(Word16 past_qua_en[], Word16 code[], Word16 L_subfr, Word16 *gcode0, Word16 *exp_gcode0);

void G729AGain_update(Word16 past_qua_en[], Word32 L_gbk12);

void G729AGain_update_erasure(Word16 past_qua_en[]);

void G729ACorr_xy2(Word16 xn[], Word16 y1[], Word16 y2[], Word16 g_coeff[], Word16 exp_g_coeff[]);

void G729Abits2prm_ld8k(Word16 bits[], Word16 prm[]);
void G729Aprm2bits_ld8k(Word16   prm[], Word16 bits[]);

void G729AInit_Post_Filter(void);

void G729APost_Filter(Word16 *syn, Word16 *Az_4, Word16 *T);

void G729Apit_pst_filt(Word16 *signal, Word16 *scal_sig, Word16 t0_min, Word16 t0_max, Word16 L_subfr, Word16 *signal_pst);

void G729Apreemphasis(Word16 *signal, Word16 g, Word16 L);

void G729Aagc(Word16 *sig_in,Word16 *sig_out,Word16 l_trm);

void   G729AInit_exc_err(void);
void   G729Aupdate_exc_err(Word16 gain_pit, Word16 t0);
Word16 G729Atest_err(Word16 t0, Word16 t0_frac);

extern void G729ACopy(Word16 x[], Word16 y[], Word16 L);
extern void G729ACopy2(Word16 x[], Word16 y[], Word16 L);
extern void G729ACopy4(Word16 x[], Word16 y[], Word16 L);		  
extern void G729ASet_zero(Word16 x[], Word16 L);
extern void G729ASet_zero2(Word16 x[], Word16 L);
extern void G729ASet_zero4(Word16 x[], Word16 L);
extern Word16 G729ARandom(void);

#endif //_H_G729ALD8A

⌨️ 快捷键说明

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