FreeCalypso > hg > gsm-codec-lib
annotate libgsmfr2/pp_internal.h @ 260:f0220c141d2c
libgsmfr2: implement gsmfr_unpack_frame()
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Fri, 12 Apr 2024 23:09:23 +0000 |
| parents | a33edf624061 |
| children | 573afa985df6 |
| rev | line source |
|---|---|
|
3
3cd5ad24b1d4
libgsmfrp: implement internal state
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
|
256
a33edf624061
libgsmfr2: start with API definition and port of libgsmfrp code
Mychaela Falconia <falcon@freecalypso.org>
parents:
248
diff
changeset
|
2 * This header file is internal to libgsmfr2; |
|
a33edf624061
libgsmfr2: start with API definition and port of libgsmfrp code
Mychaela Falconia <falcon@freecalypso.org>
parents:
248
diff
changeset
|
3 * here we define our state structure for the Rx DTX preprocessor component. |
|
3
3cd5ad24b1d4
libgsmfrp: implement internal state
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 */ |
|
3cd5ad24b1d4
libgsmfrp: implement internal state
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 |
|
256
a33edf624061
libgsmfr2: start with API definition and port of libgsmfrp code
Mychaela Falconia <falcon@freecalypso.org>
parents:
248
diff
changeset
|
6 enum rx_dtx_st { |
|
3
3cd5ad24b1d4
libgsmfrp: implement internal state
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 NO_DATA = 0, |
|
3cd5ad24b1d4
libgsmfrp: implement internal state
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 SPEECH, |
|
3cd5ad24b1d4
libgsmfrp: implement internal state
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 SPEECH_MUTING, |
|
3cd5ad24b1d4
libgsmfrp: implement internal state
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 COMFORT_NOISE, |
|
3cd5ad24b1d4
libgsmfrp: implement internal state
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 LOST_SID, |
|
242
f081a6850fb5
libgsmfrp: new refined implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
108
diff
changeset
|
12 CN_MUTING, |
|
3
3cd5ad24b1d4
libgsmfrp: implement internal state
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 }; |
|
3cd5ad24b1d4
libgsmfrp: implement internal state
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 |
|
3cd5ad24b1d4
libgsmfrp: implement internal state
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 struct gsmfr_preproc_state { |
|
256
a33edf624061
libgsmfr2: start with API definition and port of libgsmfrp code
Mychaela Falconia <falcon@freecalypso.org>
parents:
248
diff
changeset
|
16 enum rx_dtx_st rx_state; |
|
a33edf624061
libgsmfr2: start with API definition and port of libgsmfrp code
Mychaela Falconia <falcon@freecalypso.org>
parents:
248
diff
changeset
|
17 uint8_t speech_frame[GSMFR_RTP_FRAME_LEN]; |
|
a33edf624061
libgsmfr2: start with API definition and port of libgsmfrp code
Mychaela Falconia <falcon@freecalypso.org>
parents:
248
diff
changeset
|
18 uint8_t sid_prefix[5]; |
|
242
f081a6850fb5
libgsmfrp: new refined implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
108
diff
changeset
|
19 uint8_t sid_xmaxc; |
|
4
286d5f097eb4
libgsmfrp: implement comfort noise generation
Mychaela Falconia <falcon@freecalypso.org>
parents:
3
diff
changeset
|
20 uint32_t cn_random_lfsr; |
|
286d5f097eb4
libgsmfrp: implement comfort noise generation
Mychaela Falconia <falcon@freecalypso.org>
parents:
3
diff
changeset
|
21 unsigned cn_random_6fold; |
|
3
3cd5ad24b1d4
libgsmfrp: implement internal state
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 }; |
|
4
286d5f097eb4
libgsmfrp: implement comfort noise generation
Mychaela Falconia <falcon@freecalypso.org>
parents:
3
diff
changeset
|
23 |
|
286d5f097eb4
libgsmfrp: implement comfort noise generation
Mychaela Falconia <falcon@freecalypso.org>
parents:
3
diff
changeset
|
24 /* we use the same LFSR PRNG for CN as ETSI EFR implementation */ |
|
286d5f097eb4
libgsmfrp: implement comfort noise generation
Mychaela Falconia <falcon@freecalypso.org>
parents:
3
diff
changeset
|
25 #define PN_INITIAL_SEED 0x70816958L /* Pseudo noise generator seed value */ |
|
286d5f097eb4
libgsmfrp: implement comfort noise generation
Mychaela Falconia <falcon@freecalypso.org>
parents:
3
diff
changeset
|
26 |
|
108
3b64f255689a
libgsmfrp: factor out PRNG into its own module,
Mychaela Falconia <falcon@freecalypso.org>
parents:
4
diff
changeset
|
27 /* internal functions */ |
|
4
286d5f097eb4
libgsmfrp: implement comfort noise generation
Mychaela Falconia <falcon@freecalypso.org>
parents:
3
diff
changeset
|
28 extern void gsmfr_preproc_gen_cn(struct gsmfr_preproc_state *state, |
|
256
a33edf624061
libgsmfr2: start with API definition and port of libgsmfrp code
Mychaela Falconia <falcon@freecalypso.org>
parents:
248
diff
changeset
|
29 uint8_t *frame); |
|
242
f081a6850fb5
libgsmfrp: new refined implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
108
diff
changeset
|
30 extern void gsmfr_preproc_sid2cn(struct gsmfr_preproc_state *state, |
|
256
a33edf624061
libgsmfr2: start with API definition and port of libgsmfrp code
Mychaela Falconia <falcon@freecalypso.org>
parents:
248
diff
changeset
|
31 uint8_t *frame); |
|
242
f081a6850fb5
libgsmfrp: new refined implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
108
diff
changeset
|
32 extern void gsmfr_preproc_invalid_sid(struct gsmfr_preproc_state *state, |
|
256
a33edf624061
libgsmfr2: start with API definition and port of libgsmfrp code
Mychaela Falconia <falcon@freecalypso.org>
parents:
248
diff
changeset
|
33 uint8_t *frame); |
|
108
3b64f255689a
libgsmfrp: factor out PRNG into its own module,
Mychaela Falconia <falcon@freecalypso.org>
parents:
4
diff
changeset
|
34 extern uint16_t gsmfr_preproc_prng(struct gsmfr_preproc_state *state, |
|
3b64f255689a
libgsmfrp: factor out PRNG into its own module,
Mychaela Falconia <falcon@freecalypso.org>
parents:
4
diff
changeset
|
35 uint16_t no_bits); |
|
256
a33edf624061
libgsmfr2: start with API definition and port of libgsmfrp code
Mychaela Falconia <falcon@freecalypso.org>
parents:
248
diff
changeset
|
36 extern uint8_t gsmfr_preproc_xmaxc_mean(const uint8_t *frame); |
