FreeCalypso > hg > gsm-codec-lib
annotate libgsmhr1/sp_enc.c @ 630:f85ef5c4d044
libgsmhr1: provide sizes of state structures
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Thu, 12 Mar 2026 06:19:12 +0000 |
| parents | c15ae3f06ee9 |
| children |
| rev | line source |
|---|---|
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /*************************************************************************** |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 * File Name: sp_enc.c |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 * |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 * Purpose: Contains speech encoder function. Calls are made to the |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 * frame-based encoding functions (see sp_frm.c), and the subframe- |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 * based encoding function (see sp_sfrm.c) |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 * |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 * Functions in this file (only 1) |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 * speechEncoder() |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 * |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 **************************************************************************/ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 /*_________________________________________________________________________ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 | | |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 | Include Files | |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 |_________________________________________________________________________| |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
19 #include <stdint.h> |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
20 #include "typedefs.h" |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
21 #include "tw_gsmhr.h" |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
22 #include "namespace.h" |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 #include "mathhalf.h" |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 #include "mathdp31.h" |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 #include "sp_rom.h" |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
26 #include "dec_func.h" |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
27 #include "dtx_rxfe.h" |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
28 #include "enc_state.h" |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 #include "sp_frm.h" |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 #include "sp_sfrm.h" |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
31 #include "enc_out_order.h" |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 #include "vad.h" |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 /*_________________________________________________________________________ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 | | |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 | Local Defines | |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 |_________________________________________________________________________| |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 #define CG_INT_MACS 6 /* Number of Multiply-Accumulates in */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 /* one interpolation */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 #define ASCALE 0x0800 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 #define LMAX 142 /* largest lag (integer sense) */ |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
44 #define LSMAX (LMAX + CG_INT_MACS/2) /* Lag Search Array Length */ |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 #define NUM_CLOSED 3 /* Maximum number of lags searched */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 /* in closed loop. */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 #define LPCSTARTINDEX 25 /* Where the LPC analysis window |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 * starts */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 #define INBUFFSZ LPCSTARTINDEX + A_LEN /* Input buffer size */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 #define NUMSTARTUPSMP INBUFFSZ - F_LEN /* Number of samples needed */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 /* at start up */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 #define NUMSTARTUPSMP_P1 INBUFFSZ - F_LEN + 1 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 #define HPFSHIFT 1 /* no right shifts high pass shifts |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 * speech */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
57 static void preen_clear_3lsb(const int16_t *in, Shortword *out) |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
58 { |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
59 int i; |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
61 for (i = 0; i < F_LEN; i++) |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
62 out[i] = in[i] & 0xFFF8; |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
63 } |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
65 static int check_for_ehf(const Shortword *frame) |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
66 { |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
67 int i; |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
69 for (i = 0; i < F_LEN; i++) { |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
70 if (frame[i] != 0x0008) |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
71 return 0; |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
72 } |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
73 return 1; |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
74 } |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 /*************************************************************************** |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 * |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 * FUNCTION NAME: speechEncoder |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 * |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 * PURPOSE: |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 * |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 * Performs GSM half-rate speech encoding on frame basis (160 samples). |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 * |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 * INPUTS: |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 * |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 * pswSpeechIn[0:159] - input speech samples, 160 new samples per frame |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 * |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 * OUTPUTS: |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 * |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 * pswFrmCodes[0:19] - output parameters, 18 speech parameters plus |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 * VAD and SP flags |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 * |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 * RETURN VALUE: |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 * |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 * None |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 * |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 * IMPLEMENTATION: |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 * |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 * n/a |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 * |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 * REFERENCES: Sub-clause 4.1 of GSM Recomendation 06.20 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 * |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 * KEYWORDS: speechcoder, analysis |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 * |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 *************************************************************************/ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
107 void gsmhr_encode_frame(struct gsmhr_encoder_state *st, const int16_t *pcm_in, |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
108 int16_t *param_out) |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 { |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
110 /* preened speech input, formerly input to speechEncoder() */ |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
111 Shortword pswSpeechIn[F_LEN]; |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
112 int reset_flag; |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
114 /* former static variables, converted to automatic */ |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 /* 1st point in analysis window */ |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
117 Shortword *pswLpcStart = &st->pswSpeech[LPCSTARTINDEX]; |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 /* 1st point of new frame other than 1st */ |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
120 Shortword *pswNewSpeech = &st->pswSpeech[NUMSTARTUPSMP]; |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 /* sample 0 of weighted speech */ |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
123 Shortword *pswWgtSpeech = &st->pswWgtSpeechSpace[LSMAX]; |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
125 struct NormSw *psnsWSfrmEng = &st->psnsWSfrmEngSpace[N_SUB]; |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 /*_________________________________________________________________________ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 | | |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 | Automatic Variables | |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 |_________________________________________________________________________| |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 int iVoicing, /* bitAlloc */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 iR0, /* bitAlloc and aflat */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 piVq[3], /* bitAlloc */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 iSi, /* bitAlloc */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 piLagCode[N_SUB], /* bitAlloc */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 piVSCode1[N_SUB], /* bitAlloc */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 piVSCode2[N_SUB], /* bitAlloc */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 piGsp0Code[N_SUB]; /* bitAlloc */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 short int siUVCode, |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 siSi, |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 i, |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 j; |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 Shortword swR0, |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 pswLagCode[N_SUB], |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 pswVSCode1[N_SUB], |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 pswVSCode2[N_SUB], |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 pswGsp0Code[N_SUB], |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 *pswLagListPtr, |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 pswFrmKs[NP], |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 pswFrmAs[NP], |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 pswFrmSNWCoefs[NP], |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 pswLagList[N_SUB * NUM_CLOSED], |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 pswNumLagList[N_SUB], |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 pswPitchBuf[N_SUB], |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 pswHNWCoefBuf[N_SUB], |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 ppswSNWCoefAs[N_SUB][NP], |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 ppswSynthAs[N_SUB][NP]; |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 Shortword swSP, |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 pswVadLags[4], /* VAD Parameters */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 swVadFlag; /* flag indicating voice activity |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 * detector state. 1 = speech or |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 * speech/signal present */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 struct NormSw |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 psnsSqrtRs[N_SUB]; |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
171 int giSfrmCnt; |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
172 short siPrevLagCode; |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
173 |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 /*_________________________________________________________________________ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 | | |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 | Executable Code | |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 |_________________________________________________________________________| |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
180 preen_clear_3lsb(pcm_in, pswSpeechIn); |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
181 reset_flag = check_for_ehf(pswSpeechIn); |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
182 |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 /* Speech frame processing */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 /* High pass filter the speech */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 /* ---------------------------- */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 filt4_2nd(psrHPFCoefs, pswSpeechIn, |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
188 st->pswHPFXState, st->pswHPFYState, F_LEN, HPFSHIFT); |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 /* copy high passed filtered speech into encoder's speech buff */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 /*-------------------------------------------------------------*/ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 for (i = 0; i < F_LEN; i++) |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 pswNewSpeech[i] = pswSpeechIn[i]; |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 /* Calculate and quantize LPC coefficients */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 /* --------------------------------------- */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
200 aflat(st, pswLpcStart, &iR0, pswFrmKs, piVq, |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
201 st->swPtch, &swVadFlag, &swSP); |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 /* Lookup frame energy r0 */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 /* ---------------------- */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207 swR0 = psrR0DecTbl[iR0 * 2]; /* lookupR0 */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209 /* Generate the direct form coefs */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210 /* ------------------------------ */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212 if (!rcToADp(ASCALE, pswFrmKs, pswFrmAs)) |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213 { |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215 getNWCoefs(pswFrmAs, pswFrmSNWCoefs); |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
216 } |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217 else |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
218 { |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
219 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
220 for (i = 0; i < NP; i++) |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
221 { |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
222 pswFrmKs[i] = st->pswOldFrmKs[i]; |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
223 pswFrmAs[i] = st->pswOldFrmAs[i]; |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
224 pswFrmSNWCoefs[i] = st->pswOldFrmSNWCoefs[i]; |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 } |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
226 } |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228 /* Interpolate, or otherwise get sfrm reflection coefs */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
229 /* --------------------------------------------------- */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
230 |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
231 getSfrmLpcTx(st, st->swOldR0, swR0, |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
232 st->pswOldFrmKs, st->pswOldFrmAs, |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
233 st->pswOldFrmSNWCoefs, |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234 pswFrmKs, pswFrmAs, |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235 pswFrmSNWCoefs, |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
236 st->pswSpeech, |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237 &siSi, |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
238 psnsSqrtRs, |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
239 ppswSynthAs, ppswSNWCoefAs); |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
241 /* loose once bitAlloc done */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
242 iSi = siSi; |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
243 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
244 /* Weight the entire speech frame */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
245 /* ------------------------------ */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
246 |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
247 weightSpeechFrame(st, st->pswSpeech, ppswSynthAs[0], ppswSNWCoefAs[0], |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
248 st->pswWgtSpeechSpace); |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
249 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
250 /* Perform open-loop lag search, get harmonic-noise-weighting parameters */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
251 /* --------------------------------------------------------------------- */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
252 |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
253 openLoopLagSearch(&st->pswWgtSpeechSpace[LSMAX], |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
254 st->swOldR0Index, |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
255 (Shortword) iR0, |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
256 &siUVCode, |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
257 pswLagList, |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
258 pswNumLagList, |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
259 pswPitchBuf, |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
260 pswHNWCoefBuf, |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
261 &psnsWSfrmEng[0], |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
262 pswVadLags, |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
263 swSP); |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
264 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265 iVoicing = siUVCode; |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
267 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
268 /* Using open loop LTP data to calculate swPtch */ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
269 /* parameter */ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
270 /* -------------------------------------------- */ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
271 |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
272 periodicity_update(&st->vad, pswVadLags, &st->swPtch); /* DTX mode */ |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
273 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
274 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
275 /* Subframe processing loop */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
276 /* ------------------------ */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
277 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
278 pswLagListPtr = pswLagList; |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
279 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
280 for (giSfrmCnt = 0; giSfrmCnt < N_SUB; giSfrmCnt++) |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
281 { |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
282 |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
283 /* DTX mode */ |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
284 if (swSP == 0) |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
285 { |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
286 pswVSCode1[giSfrmCnt] = st->pswCNVSCode1[giSfrmCnt]; |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
287 pswVSCode2[giSfrmCnt] = st->pswCNVSCode2[giSfrmCnt]; |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
288 pswGsp0Code[giSfrmCnt] = st->pswCNGsp0Code[giSfrmCnt]; |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
289 } |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
290 |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
291 sfrmAnalysis(st, &pswWgtSpeech[giSfrmCnt * S_LEN], |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
292 siUVCode, |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
293 psnsSqrtRs[giSfrmCnt], |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
294 ppswSNWCoefAs[giSfrmCnt], |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
295 pswLagListPtr, |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
296 pswNumLagList[giSfrmCnt], |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
297 pswPitchBuf[giSfrmCnt], |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
298 pswHNWCoefBuf[giSfrmCnt], |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
299 &pswLagCode[giSfrmCnt], &pswVSCode1[giSfrmCnt], |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
300 &pswVSCode2[giSfrmCnt], &pswGsp0Code[giSfrmCnt], |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
301 swSP, giSfrmCnt, &siPrevLagCode); |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
302 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
303 pswLagListPtr = &pswLagListPtr[pswNumLagList[giSfrmCnt]]; |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
304 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
305 } |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
306 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
307 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
308 /* copy comfort noise parameters, */ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
309 /* update GS history */ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
310 /* ------------------------------ */ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
311 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
312 if (swSP == 0) /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
313 { /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
314 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
315 /* copy comfort noise frame parameter */ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
316 /* ---------------------------------- */ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
317 |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
318 iR0 = st->swCNR0; /* quantized R0 index */ /* DTX mode */ |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
319 for (i=0; i < 3; i++) /* DTX mode */ |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
320 piVq[i] = st->pswCNLpc[i]; /* DTX mode */ |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
321 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
322 } /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
323 else /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
324 { /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
325 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
326 /* if swSP != 0, then update the GS history */ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
327 /* -----------------------------------------*/ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
328 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
329 for (i=0; i < N_SUB; i++){ /* DTX mode */ |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
330 st->pL_GsHist[st->swTxGsHistPtr] = /* DTX mode */ |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
331 ppLr_gsTable[siUVCode][pswGsp0Code[i]]; /* DTX mode */ |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
332 st->swTxGsHistPtr++; /* DTX mode */ |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
333 if (st->swTxGsHistPtr > ((OVERHANG-1)*N_SUB)-1) /* DTX mode */ |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
334 st->swTxGsHistPtr=0; /* DTX mode */ |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
335 } /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
336 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
337 } /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
338 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
339 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
340 /* End of frame processing, update frame based parameters */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
341 /* ------------------------------------------------------ */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
342 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
343 for (i = 0; i < N_SUB; i++) |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
344 { |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
345 piLagCode[i] = pswLagCode[i]; |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
346 piVSCode1[i] = pswVSCode1[i]; |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
347 piVSCode2[i] = pswVSCode2[i]; |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
348 piGsp0Code[i] = pswGsp0Code[i]; |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
349 } |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
350 |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
351 st->swOldR0Index = (Shortword) iR0; |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
352 st->swOldR0 = swR0; |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
353 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
354 for (i = 0; i < NP; i++) |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
355 { |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
356 st->pswOldFrmKs[i] = pswFrmKs[i]; |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
357 st->pswOldFrmAs[i] = pswFrmAs[i]; |
|
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
358 st->pswOldFrmSNWCoefs[i] = pswFrmSNWCoefs[i]; |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
359 } |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
360 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
361 /* Insert SID Codeword */ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
362 /* ------------------- */ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
363 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
364 if (swSP == 0) /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
365 { /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
366 iVoicing = 0x0003; /* 2 bits */ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
367 iSi = 0x0001; /* 1 bit */ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
368 for (i=0; i < N_SUB; i++) /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
369 { /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
370 piVSCode1[i] = 0x01ff; /* 9 bits */ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
371 piGsp0Code[i] = 0x001f; /* 5 bits */ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
372 } |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
373 piLagCode[0] = 0x00ff; /* 8 bits */ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
374 piLagCode[1] = 0x000f; /* 4 bits */ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
375 piLagCode[2] = 0x000f; /* 4 bits */ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
376 piLagCode[3] = 0x000f; /* 4 bits */ /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
377 } /* DTX mode */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
378 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
379 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
380 /* Generate encoded parameter array */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
381 /* -------------------------------- */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
382 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
383 fillBitAlloc(iVoicing, iR0, piVq, iSi, piLagCode, |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
384 piVSCode1, piVSCode2, |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
385 piGsp0Code, swVadFlag, swSP, param_out); |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
386 |
|
626
c15ae3f06ee9
libgsmhr1: implement encoder homing logic
Mychaela Falconia <falcon@freecalypso.org>
parents:
625
diff
changeset
|
387 /* homing logic, originally resided outside of speechEncoder() */ |
|
c15ae3f06ee9
libgsmhr1: implement encoder homing logic
Mychaela Falconia <falcon@freecalypso.org>
parents:
625
diff
changeset
|
388 if (reset_flag) |
|
c15ae3f06ee9
libgsmhr1: implement encoder homing logic
Mychaela Falconia <falcon@freecalypso.org>
parents:
625
diff
changeset
|
389 { |
|
c15ae3f06ee9
libgsmhr1: implement encoder homing logic
Mychaela Falconia <falcon@freecalypso.org>
parents:
625
diff
changeset
|
390 gsmhr_encoder_reset(st, st->dtx_mode); |
|
c15ae3f06ee9
libgsmhr1: implement encoder homing logic
Mychaela Falconia <falcon@freecalypso.org>
parents:
625
diff
changeset
|
391 return; |
|
c15ae3f06ee9
libgsmhr1: implement encoder homing logic
Mychaela Falconia <falcon@freecalypso.org>
parents:
625
diff
changeset
|
392 } |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
393 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
394 /* delay the input speech by 1 frame */ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
395 /*-----------------------------------*/ |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
396 |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
397 for (i = 0, j = F_LEN; j < INBUFFSZ; i++, j++) |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
398 { |
|
625
d46c2e4c4392
libgsmhr1: integrate sp_enc.c, encoder main function
Mychaela Falconia <falcon@freecalypso.org>
parents:
623
diff
changeset
|
399 st->pswSpeech[i] = st->pswSpeech[j]; |
|
623
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
400 } |
|
6366902640fd
libgsmhr1/sp_enc.c: import original
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
401 } |
