www.pudn.com > VAD_2.rar > mem.h
#ifndef mem_h #define mem_h #include#include #include #include "cnst.h" #include "consts.h" #include "cnst_tcx_stereo.h" #include "util_stereo_x.h" #include "nclass.h" #include "wb_vad.h" // CR3GP typedef struct { short mode; /* AMR_WB core mode: 0..8 */ short extension; /* 0=AMRWB, 1=mono, 2=stereo20%, 3=stereo25% */ short st_mode; /* stereo mode 0..13 (not used, for ericsson cmd line?) */ short fscale; /* frequency scaling */ short use_case_mode; /* use case (for AMRWB+ only) */ short allow_dtx; /* dtx (for AMRWB only) */ short FileFormat; /* File format */ short mode_index; short fscale_index; short bc; /* Backward compatible file format*/ } EncoderConfig; typedef struct { short mode; /* AMR_WB core mode: 0..8 */ short extension; /* 0=AMRWB, 1=mono, 2=stereo20%, 3=stereo25% */ short st_mode; /* stereo mode 0..13 (not used, for ericsson cmd line?) */ short fscale; long fs; int mono_dec_stereo; int limiter_on; short FileFormat; short fer_sim; /* frame errasures simulation */ } DecoderConfig; /*---------------------------------------------------------------* * Encoder Static RAM * *---------------------------------------------------------------*/ typedef struct { /* cod_main.c */ float mem_decim[L_MEM_DECIM_SPLIT]; /* speech decimated filter memory */ int decim_frac; float mem_sig_in[4]; /* hp50 filter memory */ float mem_preemph; /* speech preemph filter memory */ float mem_decim_hf[2*L_FILT24k]; /* HF speech decimated filter memory */ float old_speech_hf[L_OLD_SPEECH_ST];/* HF old speech vector at 12.8kHz */ /* cod_hf.c */ float past_q_isf_hf[MHF]; /* HF past quantized isf */ float ispold_hf[MHF]; /* HF old isp (immittance spectral pairs) */ float ispold_q_hf[MHF]; /* HF quantized old isp */ float old_gain; /* HF old gain (match amplitude at 6.4kHz) */ float mem_hf1[MHF]; /* HF memory for gain calculcation */ float mem_hf2[MHF]; /* HF memory for gain calculcation */ float mem_hf3[MHF]; /* HF memory for gain calculcation */ float old_exc[PIT_MAX_MAX]; /* Table pointers */ const float *mean_isf_hf; const float *dico1_isf_hf; } Coder_StState; typedef struct { /* memory for both channels */ Coder_StState left; Coder_StState right; /* memory for the stereo */ float old_chan[L_OLD_SPEECH_ST]; float old_chan_2k[L_OLD_SPEECH_2k]; float old_chan_hi[L_OLD_SPEECH_hi]; float old_speech_2k[L_OLD_SPEECH_2k]; float old_speech_hi[L_OLD_SPEECH_hi]; float old_speech_pe[L_OLD_SPEECH_ST]; // NMBC float old_wh[HI_FILT_ORDER]; float old_wh_q[HI_FILT_ORDER]; float old_gm_gain[2]; float old_exc_mono[HI_FILT_ORDER]; float filt_energy_threshold; float w_window[L_SUBFR]; const PMSVQ *filt_hi_pmsvq; const PMSVQ *gain_hi_pmsvq; // E_STEREO_TCX int mem_stereo_ovlp_size; float mem_stereo_ovlp[L_OVLP_2k]; /* cod_main.c */ NCLASSDATA *stClass; VadVars *vadSt; short vad_hist; float old_speech[L_OLD_SPEECH_ST]; /* old speech vector at 12.8kHz */ float old_synth[M]; /* synthesis memory */ /* cod_lf.c */ float past_isfq[M]; /* past isf quantizer */ float old_wovlp[128]; /* last tcx overlap synthesis */ float old_d_wsp[PIT_MAX_MAX/OPL_DECIM]; /* Weighted speech vector */ float old_exc[PIT_MAX_MAX+L_INTERPOL]; /* old excitation vector */ float old_mem_wsyn; /* weighted synthesis memory */ float old_mem_w0; /* weighted speech memory */ float old_mem_xnq; /* quantized target memory */ int old_ovlp_size; /* last tcx overlap size */ float isfold[M]; /* old isf (frequency domain) */ float ispold[M]; /* old isp (immittance spectral pairs) */ float ispold_q[M]; /* quantized old isp */ float mem_wsp; /* wsp vector memory */ float mem_lp_decim2[3]; /* wsp decimation filter memory */ /* memory of open-loop LTP */ float ada_w; float ol_gain; short ol_wght_flg; long int old_ol_lag[5]; int old_T0_med; float hp_old_wsp[L_FRAME_PLUS/OPL_DECIM+(PIT_MAX_MAX/OPL_DECIM)]; float hp_ol_ltp_mem[/* HP_ORDER*2 */ 3*2+1]; // Mem_OL mem_ol; /* LP analysis window */ float window[L_WINDOW_HIGH_RATE]; // Memory of past gain for WB+ -> WB switching short SwitchFlagPlusToWB; float mem_gain_code[4]; short prev_mod; } Coder_State_Plus; /*---------------------------------------------------------------* * Decoder Static RAM * *---------------------------------------------------------------*/ typedef struct { /* dec_main.c */ float mem_oversamp[L_MEM_JOIN_OVER]; /* memory for core oversampling */ int over_frac; float mem_oversamp_hf[2*L_FILT]; /* memory for HF oversampling */ /* dec_hf.c */ float past_q_isf_hf[MHF]; /* HF past quantized isf */ float past_q_isf_hf_other[MHF]; /* HF past quantized isf for the other channel when mono decoding stereo */ float past_q_gain_hf; /* HF past quantized gain */ float past_q_gain_hf_other; /* HF past quantized gain for the other channel when mono decoding stereo */ float old_gain; /* HF old gain (match amplitude at 6.4kHz) */ float ispold_hf[MHF]; /* HF old isp (immittance spectral pairs) */ float threshold; /* HF memory for smooth ener */ float mem_syn_hf[MHF]; /* HF synthesis memory */ float mem_d_tcx[D_NC+(D_STEREO_TCX*32/5)]; // NMBC float mem_d_nonc[D_NC]; float mem_synth_hi[M]; float mem_sig_out[4]; /* hp50 filter memory for synthesis */ float old_synth_hf[D_BPF +L_SUBFR+ L_BSP + 2*D_NC + L_FDEL + 32*D_STEREO_TCX/5]; /* HF memory for synchronisation */ float lp_amp; /* HF memory for soft exc */ /* Table pointers */ const float *mean_isf_hf; const float *dico1_isf_hf; } Decoder_StState; /* Memory structure for parametric stereo decoding states. */ typedef struct { /* memory for both channels */ Decoder_StState left; Decoder_StState right; /* memory for parametric stereo */ float mem_left_2k[2*L_FDEL_2k]; float mem_right_2k[2*L_FDEL_2k]; float mem_left_hi[L_FDEL]; float mem_right_hi[L_FDEL]; // alternative float my_old_synth_2k[L_FDEL_2k + D_STEREO_TCX + 2*(D_NC*5)/32]; float my_old_synth_hi[2*L_FDEL]; float my_old_synth[2*L_FDEL+20]; // NMBC float old_AqLF[5*(M+1)]; float old_wh[HI_FILT_ORDER]; float old_wh2[HI_FILT_ORDER]; float old_exc_mono[HI_FILT_ORDER]; float old_gain_left[4]; float old_gain_right[4]; float old_wh_q[HI_FILT_ORDER]; float old_gm_gain[2]; float w_window[L_SUBFR]; const PMSVQ *filt_hi_pmsvq; const PMSVQ *gain_hi_pmsvq; // E_STEREO_TCX int mem_stereo_ovlp_size; float mem_stereo_ovlp[L_OVLP_2k]; int last_stereo_mode; float side_rms; float h[ECU_WIEN_ORD+1]; float mem_balance; //E_TCX_FILL float old_xri[L_TCX]; /* memory for lower band (mono) */ /* dec_main.c */ int last_mode; /* last mode in previous 80ms frame */ float mem_sig_out[4]; /* hp50 filter memory for synthesis */ float mem_deemph; /* speech deemph filter memory */ /* dec_lf.c */ int prev_lpc_lost; /* previous lpc is lost when = 1 */ float old_synth[M]; /* synthesis memory */ float old_exc[PIT_MAX_MAX+L_INTERPOL]; /* old excitation vector (>20ms) */ float isfold[M]; /* old isf (frequency domain) */ float ispold[M]; /* old isp (immittance spectral pairs) */ float past_isfq[M]; /* past isf quantizer */ float wovlp[128]; /* last weighted synthesis for overlap */ int ovlp_size; /* overlap size */ float isf_buf[L_MEANBUF*(M+1)]; /* old isf (for frame recovery) */ int old_T0; /* old pitch value (for frame recovery) */ int old_T0_frac; /* old pitch value (for frame recovery) */ short seed_ace; /* seed memory (for random function) */ float mem_wsyn; /* TCX synthesis memory */ short seed_tcx; /* seed memory (for random function) */ float wsyn_rms; /* rms value of weighted synthesis */ float past_gpit; /* past gain of pitch (for frame recovery) */ float past_gcode; /* past gain of code (for frame recovery) */ int pitch_tcx; /* for bfi on tcx20 */ float gc_threshold; /* bass_pf.c */ float old_synth_pf[PIT_MAX_MAX+(2*L_SUBFR)]; /* bass post-filter: old synthesis */ float old_noise_pf[2*L_FILT]; /* bass post-filter: noise memory */ int old_T_pf[2]; /* bass post-filter: old pitch */ float old_gain_pf[2]; /* bass post-filter: old pitch gain */ /* Table pointers */ float *mean_isf_hf; float *dico1_isf_hf; // For WB <-> WB+ switching float mem_gain_code[4]; float mem_lpc_hf[MHF+1]; float mem_gain_hf; short ramp_state; } Decoder_State_Plus; #endif /* mem_h */