FreeCalypso > hg > gsm-codec-lib
annotate libgsmfrp/internal.h @ 282:9ee8ad3d4d30
frtest: rm gsmfr-hand-test and gsmfr-max-out utils
These hack programs were never properly documented and were written
only as part of a debug chase, in pursuit of a bug that ultimately
turned out to be in our then-hacky patch to osmo-bts-sysmo,
before beginning of proper patches in Osmocom. These hack programs
need to be dropped from the present sw package because they depend
on old libgsm, and we are eliminating that dependency.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 14 Apr 2024 05:44:47 +0000 |
parents | 6ac547f0b903 |
children |
rev | line source |
---|---|
3
3cd5ad24b1d4
libgsmfrp: implement internal state
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
3cd5ad24b1d4
libgsmfrp: implement internal state
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * This header file is internal to libgsmfrp; |
3cd5ad24b1d4
libgsmfrp: implement internal state
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 * here we define our state structure. |
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 |
3cd5ad24b1d4
libgsmfrp: implement internal state
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 enum rx_state { |
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 { |
3cd5ad24b1d4
libgsmfrp: implement internal state
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 enum rx_state rx_state; |
3cd5ad24b1d4
libgsmfrp: implement internal state
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 gsm_frame speech_frame; |
4
286d5f097eb4
libgsmfrp: implement comfort noise generation
Mychaela Falconia <falcon@freecalypso.org>
parents:
3
diff
changeset
|
18 gsm_byte 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, |
286d5f097eb4
libgsmfrp: implement comfort noise generation
Mychaela Falconia <falcon@freecalypso.org>
parents:
3
diff
changeset
|
29 gsm_byte *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, |
f081a6850fb5
libgsmfrp: new refined implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
108
diff
changeset
|
31 gsm_byte *frame); |
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, |
f081a6850fb5
libgsmfrp: new refined implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
108
diff
changeset
|
33 gsm_byte *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); |
248
6ac547f0b903
libgsmfrp: yet another invalid SID logic change, for 1.0.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
242
diff
changeset
|
36 extern uint8_t gsmfr_preproc_xmaxc_mean(const gsm_byte *frame); |