FreeCalypso > hg > efr-experiments
diff src/e_homing.c @ 0:56410792419a
src: original EFR source from ETSI
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 03 Apr 2024 05:31:37 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/e_homing.c Wed Apr 03 05:31:37 2024 +0000 @@ -0,0 +1,163 @@ +/************************************************************************** + * + * File Name: e_homing.c + * + * Purpose: + * This file contains the following functions: + * + * encoder_homing_frame_test() checks if a frame of input samples + * matches the Encoder Homing Frame pattern. + * + * encoder_reset() called by reset_enc() to reset all + * the state variables for the encoder. + * + * reset_enc() calls functions to reset the state + * variables for the encoder and VAD, and + * for the transmit DTX and Comfort Noise. + * + **************************************************************************/ + +#include "typedef.h" +#include "cnst.h" +#include "vad.h" +#include "dtx.h" +#include "codec.h" +#include "sig_proc.h" +#include "e_homing.h" + +/*************************************************************************** + * + * FUNCTION NAME: encoder_homing_frame_test + * + * PURPOSE: + * Checks if a frame of input samples matches the Encoder Homing Frame + * pattern, which is 0x0008 for all 160 samples in the frame. + * + * INPUT: + * input_frame[] one frame of speech samples + * + * OUTPUT: + * None + * + * RETURN: + * 0 input frame does not match the Encoder Homing Frame pattern. + * 1 input frame matches the Encoder Homing Frame pattern. + * + **************************************************************************/ + +Word16 encoder_homing_frame_test (Word16 input_frame[]) +{ + Word16 i, j; + + for (i = 0; i < L_FRAME; i++) + { + j = input_frame[i] ^ EHF_MASK; + + if (j) + break; + } + + return !j; +} + +/*************************************************************************** + * + * FUNCTION NAME: encoder_reset + * + * PURPOSE: + * resets all of the state variables for the encoder + * + * INPUT: + * None + * + * OUTPUT: + * None + * + * RETURN: + * None + * + **************************************************************************/ + +void encoder_reset (void) +{ + /* External declarations for encoder variables which need to be reset */ + + /* Variables defined in levinson.c */ + /* ------------------------------- */ + extern Word16 old_A[M + 1]; /* Last A(z) for case of unstable filter */ + + /* Variables defined in q_gains.c */ + /* ------------------------------- */ + /* Memories of gain quantization: */ + extern Word16 past_qua_en[4], pred[4]; + + /* Variables defined in q_plsf_5.c */ + /* ------------------------------- */ + /* Past quantized prediction error */ + extern Word16 past_r2_q[M]; + + Word16 i; + + /* reset all the encoder state variables */ + /* ------------------------------------- */ + + /* Variables in cod_12k2.c: */ + Init_Coder_12k2 (); + + /* Variables in levinson.c: */ + old_A[0] = 4096; /* Last A(z) for case of unstable filter */ + for (i = 1; i < M + 1; i++) + { + old_A[i] = 0; + } + + /* Variables in pre_proc.c: */ + Init_Pre_Process (); + + /* Variables in q_gains.c: */ + for (i = 0; i < 4; i++) + { + past_qua_en[i] = -2381; /* past quantized energies */ + } + + pred[0] = 44; /* MA prediction coeff */ + pred[1] = 37; /* MA prediction coeff */ + pred[2] = 22; /* MA prediction coeff */ + pred[3] = 12; /* MA prediction coeff */ + + /* Variables in q_plsf_5.c: */ + for (i = 0; i < M; i++) + { + past_r2_q[i] = 0; /* Past quantized prediction error */ + } + + return; +} + +/*************************************************************************** + * + * FUNCTION NAME: reset_enc + * + * PURPOSE: + * resets all of the state variables for the encoder and VAD, and for + * the transmit DTX and Comfort Noise. + * + * INPUT: + * None + * + * OUTPUT: + * None + * + * RETURN: + * None + * + **************************************************************************/ + +void reset_enc (void) +{ + encoder_reset (); /* reset all the state variables in the speech encoder*/ + vad_reset (); /* reset all the VAD state variables */ + reset_tx_dtx (); /* reset all the transmit DTX and CN variables */ + + return; +}