FreeCalypso > hg > gsm-codec-lib
annotate libgsmefr/dtx_dec.c @ 131:615f144b52c6
gsmefr-dec-parse utility written
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Sun, 11 Dec 2022 04:31:17 +0000 | 
| parents | c1d53064b410 | 
| children | 0303ba213e1c | 
| rev | line source | 
|---|---|
| 119 
c1d53064b410
libgsmefr: split dtx.c into dtx_{common,dec,enc}.c
 Mychaela Falconia <falcon@freecalypso.org> parents: 
67diff
changeset | 1 /* | 
| 
c1d53064b410
libgsmefr: split dtx.c into dtx_{common,dec,enc}.c
 Mychaela Falconia <falcon@freecalypso.org> parents: 
67diff
changeset | 2 * This file is a product of splitting ETSI EFR dtx.c into parts; | 
| 
c1d53064b410
libgsmefr: split dtx.c into dtx_{common,dec,enc}.c
 Mychaela Falconia <falcon@freecalypso.org> parents: 
67diff
changeset | 3 * the present module is the decoder-specific part. | 
| 
c1d53064b410
libgsmefr: split dtx.c into dtx_{common,dec,enc}.c
 Mychaela Falconia <falcon@freecalypso.org> parents: 
67diff
changeset | 4 */ | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 6 #include "gsm_efr.h" | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 #include "typedef.h" | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 8 #include "namespace.h" | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 #include "basic_op.h" | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 #include "cnst.h" | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 #include "sig_proc.h" | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 12 #include "memops.h" | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 13 #include "no_count.h" | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 #include "dtx.h" | 
| 119 
c1d53064b410
libgsmefr: split dtx.c into dtx_{common,dec,enc}.c
 Mychaela Falconia <falcon@freecalypso.org> parents: 
67diff
changeset | 15 #include "dtx_defs.h" | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 16 #include "dec_state.h" | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 /************************************************************************* | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 * FUNCTION NAME: reset_rx_dtx | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 * PURPOSE: Resets the static variables of the RX DTX handler to their | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 * initial values | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 24 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 25 *************************************************************************/ | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 26 | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 27 void reset_rx_dtx (struct EFR_decoder_state *st) | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 { | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 Word16 i; | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 30 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 31 /* suppose infinitely long speech period before start */ | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 32 | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 33 st->rxdtx_aver_period = DTX_HANGOVER; | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 34 st->rxdtx_N_elapsed = 0x7fff; | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 35 st->rxdtx_ctrl = RX_SP_FLAG; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 36 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 37 for (i = 0; i < DTX_HANGOVER; i++) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 38 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 39 st->lsf_old_rx[i][0] = 1384; | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 40 st->lsf_old_rx[i][1] = 2077; | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 41 st->lsf_old_rx[i][2] = 3420; | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 42 st->lsf_old_rx[i][3] = 5108; | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 43 st->lsf_old_rx[i][4] = 6742; | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 44 st->lsf_old_rx[i][5] = 8122; | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 45 st->lsf_old_rx[i][6] = 9863; | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 46 st->lsf_old_rx[i][7] = 11092; | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 47 st->lsf_old_rx[i][8] = 12714; | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 48 st->lsf_old_rx[i][9] = 13701; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 49 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 50 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 51 for (i = 0; i < 4 * DTX_HANGOVER; i++) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 52 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 53 st->gain_code_old_rx[i] = 0; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 54 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 55 | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 56 st->L_pn_seed_rx = PN_INITIAL_SEED; | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 57 st->rx_dtx_state = CN_INT_PERIOD - 1; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 58 | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 59 st->prev_SID_frames_lost = 0; | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 60 st->buf_p_rx = 0; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 61 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 62 return; | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 63 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 64 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 65 /************************************************************************* | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 66 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 67 * FUNCTION NAME: rx_dtx | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 68 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 69 * PURPOSE: DTX handler of the speech decoder. Determines when to update | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 70 * the reference comfort noise parameters (LSF and gain) at the | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 71 * end of the speech burst. Also classifies the incoming frames | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 72 * according to SID flag and BFI flag | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 73 * and determines when the transmission is active during comfort | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 74 * noise insertion. This function also initializes the pseudo | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 75 * noise generator shift register. | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 76 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 77 * Operation of the RX DTX handler is based on measuring the | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 78 * lengths of speech bursts and the lengths of the pauses between | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 79 * speech bursts to determine when there exists a hangover period | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 80 * at the end of a speech burst. The idea is to keep in sync with | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 81 * the TX DTX handler to be able to update the reference comfort | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 82 * noise parameters at the same time instances. | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 83 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 84 * INPUTS: *rxdtx_ctrl Old decoder DTX control word | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 85 * TAF Time alignment flag | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 86 * bfi Bad frame indicator flag | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 87 * SID_flag Silence descriptor flag | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 88 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 89 * OUTPUTS: *rxdtx_ctrl Updated decoder DTX control word | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 90 * rx_dtx_state Updated state of comfort noise interpolation | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 91 * period (global variable) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 92 * L_pn_seed_rx Initialized pseudo noise generator shift | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 93 * register (global variable) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 94 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 95 * RETURN VALUE: none | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 96 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 97 *************************************************************************/ | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 98 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 99 void rx_dtx ( | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 100 struct EFR_decoder_state *st, | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 101 Word16 TAF, | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 102 Word16 bfi, | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 103 Word16 SID_flag | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 104 ) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 105 { | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 106 Word16 frame_type; | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 107 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 108 /* Frame classification according to bfi-flag and ternary-valued | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 109 SID flag. The frames between SID updates (not actually trans- | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 110 mitted) are also classified here; they will be discarded later | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 111 and provided with "NO TRANSMISSION"-flag */ | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 112 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 113 if ((sub (SID_flag, 2) == 0) && (bfi == 0)) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 114 { | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 115 frame_type = VALID_SID_FRAME; move16 (); | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 116 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 117 else if ((SID_flag == 0) && (bfi == 0)) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 118 { | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 119 frame_type = GOOD_SPEECH_FRAME; move16 (); | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 120 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 121 else if ((SID_flag == 0) && (bfi != 0)) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 122 { | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 123 frame_type = UNUSABLE_FRAME; move16 (); | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 124 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 125 else | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 126 { | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 127 frame_type = INVALID_SID_FRAME; move16 (); | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 128 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 129 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 130 /* Update of decoder state */ | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 131 /* Previous frame was classified as a speech frame */ | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 132 if ((st->rxdtx_ctrl & RX_SP_FLAG) != 0) | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 133 { | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 134 if (sub (frame_type, VALID_SID_FRAME) == 0) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 135 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 136 st->rxdtx_ctrl = RX_FIRST_SID_UPDATE; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 137 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 138 else if (sub (frame_type, INVALID_SID_FRAME) == 0) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 139 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 140 st->rxdtx_ctrl = RX_FIRST_SID_UPDATE | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 141 | RX_INVALID_SID_FRAME; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 142 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 143 else if (sub (frame_type, UNUSABLE_FRAME) == 0) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 144 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 145 st->rxdtx_ctrl = RX_SP_FLAG; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 146 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 147 else if (sub (frame_type, GOOD_SPEECH_FRAME) == 0) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 148 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 149 st->rxdtx_ctrl = RX_SP_FLAG; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 150 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 151 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 152 else | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 153 { | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 154 if (sub (frame_type, VALID_SID_FRAME) == 0) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 155 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 156 st->rxdtx_ctrl = RX_CONT_SID_UPDATE; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 157 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 158 else if (sub (frame_type, INVALID_SID_FRAME) == 0) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 159 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 160 st->rxdtx_ctrl = RX_CONT_SID_UPDATE | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 161 | RX_INVALID_SID_FRAME; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 162 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 163 else if (sub (frame_type, UNUSABLE_FRAME) == 0) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 164 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 165 st->rxdtx_ctrl = RX_CNI_BFI; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 166 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 167 else if (sub (frame_type, GOOD_SPEECH_FRAME) == 0) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 168 { | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 169 /* If the previous frame (during CNI period) was muted, | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 170 raise the RX_PREV_DTX_MUTING flag */ | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 171 if ((st->rxdtx_ctrl & RX_DTX_MUTING) != 0) | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 172 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 173 st->rxdtx_ctrl = RX_SP_FLAG | RX_FIRST_SP_FLAG | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 174 | RX_PREV_DTX_MUTING; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 175 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 176 else | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 177 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 178 st->rxdtx_ctrl = RX_SP_FLAG | RX_FIRST_SP_FLAG; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 179 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 180 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 181 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 182 | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 183 if ((st->rxdtx_ctrl & RX_SP_FLAG) != 0) | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 184 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 185 st->prev_SID_frames_lost = 0; | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 186 st->rx_dtx_state = CN_INT_PERIOD - 1; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 187 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 188 else | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 189 { | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 190 /* First SID frame */ | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 191 if ((st->rxdtx_ctrl & RX_FIRST_SID_UPDATE) != 0) | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 192 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 193 st->prev_SID_frames_lost = 0; | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 194 st->rx_dtx_state = CN_INT_PERIOD - 1; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 195 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 196 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 197 /* SID frame detected, but not the first SID */ | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 198 if ((st->rxdtx_ctrl & RX_CONT_SID_UPDATE) != 0) | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 199 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 200 st->prev_SID_frames_lost = 0; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 201 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 202 if (sub (frame_type, VALID_SID_FRAME) == 0) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 203 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 204 st->rx_dtx_state = 0; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 205 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 206 else if (sub (frame_type, INVALID_SID_FRAME) == 0) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 207 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 208 if (sub(st->rx_dtx_state, (CN_INT_PERIOD - 1)) < 0) | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 209 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 210 st->rx_dtx_state = add(st->rx_dtx_state, 1); | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 211 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 212 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 213 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 214 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 215 /* Bad frame received in CNI mode */ | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 216 if ((st->rxdtx_ctrl & RX_CNI_BFI) != 0) | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 217 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 218 if (sub (st->rx_dtx_state, (CN_INT_PERIOD - 1)) < 0) | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 219 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 220 st->rx_dtx_state = add (st->rx_dtx_state, 1); | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 221 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 222 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 223 /* If an unusable frame is received during CNI period | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 224 when TAF == 1, the frame is classified as a lost | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 225 SID frame */ | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 226 if (sub (TAF, 1) == 0) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 227 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 228 st->rxdtx_ctrl = st->rxdtx_ctrl | RX_LOST_SID_FRAME; | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 229 st->prev_SID_frames_lost = add (st->prev_SID_frames_lost, 1); | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 230 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 231 else /* No transmission occurred */ | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 232 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 233 st->rxdtx_ctrl = st->rxdtx_ctrl | RX_NO_TRANSMISSION; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 234 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 235 | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 236 if (sub (st->prev_SID_frames_lost, 1) > 0) | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 237 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 238 st->rxdtx_ctrl = st->rxdtx_ctrl | RX_DTX_MUTING; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 239 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 240 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 241 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 242 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 243 /* N_elapsed (frames since last SID update) is incremented. If SID | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 244 is updated N_elapsed is cleared later in this function */ | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 245 | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 246 st->rxdtx_N_elapsed = add (st->rxdtx_N_elapsed, 1); | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 247 | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 248 if ((st->rxdtx_ctrl & RX_SP_FLAG) != 0) | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 249 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 250 st->rxdtx_aver_period = DTX_HANGOVER; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 251 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 252 else | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 253 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 254 if (sub (st->rxdtx_N_elapsed, DTX_ELAPSED_THRESHOLD) > 0) | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 255 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 256 st->rxdtx_ctrl |= RX_UPD_SID_QUANT_MEM; | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 257 st->rxdtx_N_elapsed = 0; | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 258 st->rxdtx_aver_period = 0; | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 259 st->L_pn_seed_rx = PN_INITIAL_SEED; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 260 } | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 261 else if (st->rxdtx_aver_period == 0) | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 262 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 263 st->rxdtx_N_elapsed = 0; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 264 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 265 else | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 266 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 267 st->rxdtx_aver_period = sub (st->rxdtx_aver_period, 1); | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 268 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 269 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 270 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 271 return; | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 272 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 273 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 274 /************************************************************************* | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 275 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 276 * FUNCTION NAME: update_gain_code_history_rx | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 277 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 278 * PURPOSE: Update the fixed codebook gain parameter history of the | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 279 * decoder. The fixed codebook gain parameters kept in the buffer | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 280 * are used later for computing the reference fixed codebook | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 281 * gain parameter value. | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 282 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 283 * INPUTS: new_gain_code New fixed codebook gain value | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 284 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 285 * gain_code_old_tx[0..4*DTX_HANGOVER-1] | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 286 * Old fixed codebook gain history of decoder | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 287 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 288 * OUTPUTS: gain_code_old_tx[0..4*DTX_HANGOVER-1] | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 289 * Updated fixed codebk gain history of decoder | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 290 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 291 * RETURN VALUE: none | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 292 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 293 *************************************************************************/ | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 294 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 295 void update_gain_code_history_rx ( | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 296 struct EFR_decoder_state *st, | 
| 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 297 Word16 new_gain_code | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 298 ) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 299 { | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 300 /* Circular buffer */ | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 301 st->gain_code_old_rx[st->buf_p_rx] = new_gain_code; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 302 | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 303 if (sub (st->buf_p_rx, (4 * DTX_HANGOVER - 1)) == 0) | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 304 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 305 st->buf_p_rx = 0; | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 306 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 307 else | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 308 { | 
| 67 
58b64224d4ac
libgsmefr: dtx.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 309 st->buf_p_rx = add (st->buf_p_rx, 1); | 
| 66 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 310 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 311 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 312 return; | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 313 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 314 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 315 /************************************************************************* | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 316 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 317 * FUNCTION NAME: interpolate_CN_param | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 318 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 319 * PURPOSE: Interpolate a comfort noise parameter value over the comfort | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 320 * noise update period. | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 321 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 322 * INPUTS: old_param The older parameter of the interpolation | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 323 * (the endpoint the interpolation is started | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 324 * from) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 325 * new_param The newer parameter of the interpolation | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 326 * (the endpoint the interpolation is ended to) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 327 * rx_dtx_state State of the comfort noise insertion period | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 328 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 329 * OUTPUTS: none | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 330 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 331 * RETURN VALUE: Interpolated CN parameter value | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 332 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 333 *************************************************************************/ | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 334 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 335 Word16 interpolate_CN_param ( | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 336 Word16 old_param, | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 337 Word16 new_param, | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 338 Word16 rx_dtx_state | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 339 ) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 340 { | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 341 static const Word16 interp_factor[CN_INT_PERIOD] = | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 342 { | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 343 0x0555, 0x0aaa, 0x1000, 0x1555, 0x1aaa, 0x2000, | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 344 0x2555, 0x2aaa, 0x3000, 0x3555, 0x3aaa, 0x4000, | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 345 0x4555, 0x4aaa, 0x5000, 0x5555, 0x5aaa, 0x6000, | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 346 0x6555, 0x6aaa, 0x7000, 0x7555, 0x7aaa, 0x7fff}; | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 347 Word16 temp; | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 348 Word32 L_temp; | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 349 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 350 L_temp = L_mult (interp_factor[rx_dtx_state], new_param); | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 351 temp = sub (0x7fff, interp_factor[rx_dtx_state]); | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 352 temp = add (temp, 1); | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 353 L_temp = L_mac (L_temp, temp, old_param); | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 354 temp = round (L_temp); | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 355 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 356 return temp; | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 357 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 358 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 359 /************************************************************************* | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 360 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 361 * FUNCTION NAME: interpolate_CN_lsf | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 362 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 363 * PURPOSE: Interpolate comfort noise LSF parameter vector over the comfort | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 364 * noise update period. | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 365 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 366 * INPUTS: lsf_old_CN[0..9] | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 367 * The older LSF parameter vector of the | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 368 * interpolation (the endpoint the interpolation | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 369 * is started from) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 370 * lsf_new_CN[0..9] | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 371 * The newer LSF parameter vector of the | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 372 * interpolation (the endpoint the interpolation | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 373 * is ended to) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 374 * rx_dtx_state State of the comfort noise insertion period | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 375 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 376 * OUTPUTS: lsf_interp_CN[0..9] | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 377 * Interpolated LSF parameter vector | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 378 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 379 * RETURN VALUE: none | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 380 * | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 381 *************************************************************************/ | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 382 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 383 void interpolate_CN_lsf ( | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 384 Word16 lsf_old_CN[M], | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 385 Word16 lsf_new_CN[M], | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 386 Word16 lsf_interp_CN[M], | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 387 Word16 rx_dtx_state | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 388 ) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 389 { | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 390 Word16 i; | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 391 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 392 for (i = 0; i < M; i++) | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 393 { | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 394 lsf_interp_CN[i] = interpolate_CN_param (lsf_old_CN[i], | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 395 lsf_new_CN[i], | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 396 rx_dtx_state); move16 (); | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 397 } | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 398 | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 399 return; | 
| 
824ff833bda9
libgsmefr/dtx.c: initial import from ETSI code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 400 } | 
