FreeCalypso > hg > gsm-codec-lib
view libgsmefr/dtx.h @ 585:3c6bf0d26ee7 default tip
TW-TS-005 reader: fix maximum line length bug
TW-TS-005 section 4.1 states:
The maximum allowed length of each line is 80 characters, not
including the OS-specific newline encoding.
The implementation of this line length limit in the TW-TS-005 hex file
reader function in the present suite was wrong, such that lines of
the full maximum length could not be read. Fix it.
Note that this bug affects comment lines too, not just actual RTP
payloads. Neither Annex A nor Annex B features an RTP payload format
that goes to the maximum of 40 bytes, but if a comment line goes to
the maximum allowed length of 80 characters not including the
terminating newline, the bug will be triggered, necessitating
the present fix.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 25 Feb 2025 07:49:28 +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 );