FreeCalypso > hg > gsm-codec-lib
view libgsmefr/dtx.h @ 282:9ee8ad3d4d30
frtest: rm gsmfr-hand-test and gsmfr-max-out utils
These hack programs were never properly documented and were written
only as part of a debug chase, in pursuit of a bug that ultimately
turned out to be in our then-hacky patch to osmo-bts-sysmo,
before beginning of proper patches in Osmocom. These hack programs
need to be dropped from the present sw package because they depend
on old libgsm, and we are eliminating that dependency.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 14 Apr 2024 05:44:47 +0000 |
parents | a18782a7d270 |
children |
line wrap: on
line source
/*************************************************************************** * * File Name: dtx.h * * Purpose: Contains the prototypes for all the functions of DTX. * Also contains definitions of constants used in DTX functions. * **************************************************************************/ #define PN_INITIAL_SEED 0x70816958L /* Pseudo noise generator seed value */ #define CN_INT_PERIOD 24 /* Comfort noise interpolation period (nbr of frames between successive SID updates in the decoder) */ #define DTX_HANGOVER 7 /* Period when SP=1 although VAD=0. Used for comfort noise averaging */ /* Frame classification constants */ #define VALID_SID_FRAME 1 #define INVALID_SID_FRAME 2 #define GOOD_SPEECH_FRAME 3 #define UNUSABLE_FRAME 4 /* Encoder DTX control flags */ #define TX_SP_FLAG 0x0001 #define TX_VAD_FLAG 0x0002 #define TX_HANGOVER_ACTIVE 0x0004 #define TX_PREV_HANGOVER_ACTIVE 0x0008 #define TX_SID_UPDATE 0x0010 #define TX_USE_OLD_SID 0x0020 /* Decoder DTX control flags */ #define RX_SP_FLAG 0x0001 #define RX_UPD_SID_QUANT_MEM 0x0002 #define RX_FIRST_SID_UPDATE 0x0004 #define RX_CONT_SID_UPDATE 0x0008 #define RX_LOST_SID_FRAME 0x0010 #define RX_INVALID_SID_FRAME 0x0020 #define RX_NO_TRANSMISSION 0x0040 #define RX_DTX_MUTING 0x0080 #define RX_PREV_DTX_MUTING 0x0100 #define RX_CNI_BFI 0x0200 #define RX_FIRST_SP_FLAG 0x0400 void reset_tx_dtx (struct EFR_encoder_state *st); /* Reset tx dtx variables */ void reset_rx_dtx (struct EFR_decoder_state *st); /* Reset rx dtx variables */ void tx_dtx ( struct EFR_encoder_state *st, Word16 VAD_flag ); void rx_dtx ( struct EFR_decoder_state *st, Word16 TAF, Word16 bfi, Word16 SID_flag ); void CN_encoding ( struct EFR_encoder_state *st, Word16 params[], Word16 txdtx_ctrl ); void update_lsf_history ( Word16 lsf1[M], Word16 lsf2[M], Word16 lsf_old[DTX_HANGOVER][M] ); void update_lsf_p_CN ( Word16 lsf_old[DTX_HANGOVER][M], Word16 lsf_p_CN[M] ); void aver_lsf_history ( Word16 lsf_old[DTX_HANGOVER][M], Word16 lsf1[M], Word16 lsf2[M], Word16 lsf_aver[M] ); void update_gain_code_history_tx ( struct EFR_encoder_state *st, Word16 new_gain_code ); void update_gain_code_history_rx ( struct EFR_decoder_state *st, Word16 new_gain_code ); Word16 compute_CN_excitation_gain ( Word16 res2[L_SUBFR] ); Word16 update_gcode0_CN ( Word16 gain_code_old_tx[4 * DTX_HANGOVER] ); Word16 aver_gain_code_history ( Word16 CN_excitation_gain, Word16 gain_code_old[4 * DTX_HANGOVER] ); void build_CN_code ( Word16 cod[], Word32 *seed ); Word16 pseudonoise ( Word32 *shift_reg, Word16 no_bits ); Word16 interpolate_CN_param ( Word16 old_param, Word16 new_param, Word16 rx_dtx_state ); void interpolate_CN_lsf ( Word16 lsf_old_CN[M], Word16 lsf_new_CN[M], Word16 lsf_interp_CN[M], Word16 rx_dtx_state );