FreeCalypso > hg > gsm-codec-lib
annotate libgsmfr2/ed_internal.h @ 478:936a08cc73ce
doc/AMR-library-API: describe the decoder
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 19 May 2024 21:32:31 +0000 |
parents | 8b21a6b7a3bf |
children |
rev | line source |
---|---|
264
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * This header file has been adapted from inc/private.h |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 * in TU-Berlin libgsm source, original notice follows: |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 * |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 * Universitaet Berlin. See the accompanying file "COPYRIGHT" for |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 #define SASR(x, by) ((x) >> (by)) |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 /* |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 * Prototypes from add.c |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 extern word gsm_mult (word a, word b); |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 extern longword gsm_L_mult (word a, word b); |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 extern word gsm_mult_r (word a, word b); |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 extern word gsm_div (word num, word denum); |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 extern word gsm_add ( word a, word b ); |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 extern longword gsm_L_add ( longword a, longword b ); |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 extern word gsm_sub (word a, word b); |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 extern longword gsm_L_sub (longword a, longword b); |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 extern word gsm_abs (word a); |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 extern word gsm_norm ( longword a ); |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 extern longword gsm_L_asl (longword a, int n); |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 extern word gsm_asl (word a, int n); |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 extern longword gsm_L_asr (longword a, int n); |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 extern word gsm_asr (word a, int n); |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 /* |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 * Inlined functions from add.h |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 /* |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 * #define GSM_MULT_R(a, b) (* word a, word b, !(a == b == MIN_WORD) *) \ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 * (0x0FFFF & SASR(((longword)(a) * (longword)(b) + 16384), 15)) |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 #define GSM_MULT_R(a, b) /* word a, word b, !(a == b == MIN_WORD) */ \ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 (SASR( ((longword)(a) * (longword)(b) + 16384), 15 )) |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 # define GSM_MULT(a,b) /* word a, word b, !(a == b == MIN_WORD) */ \ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 (SASR( ((longword)(a) * (longword)(b)), 15 )) |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 # define GSM_L_MULT(a, b) /* word a, word b */ \ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 (((longword)(a) * (longword)(b)) << 1) |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 # define GSM_L_ADD(a, b) \ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 ( (a) < 0 ? ( (b) >= 0 ? (a) + (b) \ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 : (utmp = (ulongword)-((a) + 1) + (ulongword)-((b) + 1)) \ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 >= MAX_LONGWORD ? MIN_LONGWORD : -(longword)utmp-2 ) \ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 : ((b) <= 0 ? (a) + (b) \ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 : (utmp = (ulongword)(a) + (ulongword)(b)) >= MAX_LONGWORD \ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 ? MAX_LONGWORD : utmp)) |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 /* |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 * # define GSM_ADD(a, b) \ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 * ((ltmp = (longword)(a) + (longword)(b)) >= MAX_WORD \ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 * ? MAX_WORD : ltmp <= MIN_WORD ? MIN_WORD : ltmp) |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 /* Nonportable, but faster: */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 #define GSM_ADD(a, b) \ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 ((ulongword)((ltmp = (longword)(a) + (longword)(b)) - MIN_WORD) > \ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 MAX_WORD - MIN_WORD ? (ltmp > 0 ? MAX_WORD : MIN_WORD) : ltmp) |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 # define GSM_SUB(a, b) \ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 ((ltmp = (longword)(a) - (longword)(b)) >= MAX_WORD \ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 ? MAX_WORD : ltmp <= MIN_WORD ? MIN_WORD : ltmp) |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 # define GSM_ABS(a) ((a) < 0 ? ((a) == MIN_WORD ? MAX_WORD : -(a)) : (a)) |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 /* Use these if necessary: |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 # define GSM_MULT_R(a, b) gsm_mult_r(a, b) |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 # define GSM_MULT(a, b) gsm_mult(a, b) |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 # define GSM_L_MULT(a, b) gsm_L_mult(a, b) |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 # define GSM_L_ADD(a, b) gsm_L_add(a, b) |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 # define GSM_ADD(a, b) gsm_add(a, b) |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 # define GSM_SUB(a, b) gsm_sub(a, b) |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 # define GSM_ABS(a) gsm_abs(a) |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 /* |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 * More prototypes from implementations.. |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 void Gsm_Long_Term_Predictor ( /* 4x for 160 samples */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 struct gsmfr_0610_state * S, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 word * d, /* [0..39] residual signal IN */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 word * dp, /* [-120..-1] d' IN */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 word * e, /* [0..40] OUT */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 word * dpp, /* [0..40] OUT */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 word * Nc, /* correlation lag OUT */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 word * bc /* gain factor OUT */); |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 void Gsm_LPC_Analysis ( |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 struct gsmfr_0610_state * S, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 word * s, /* 0..159 signals IN/OUT */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 word * LARc); /* 0..7 LARc's OUT */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 void Gsm_Preprocess ( |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 struct gsmfr_0610_state * S, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 const word * s, word * so); |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 void Gsm_Encoding ( |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 struct gsmfr_0610_state * S, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 word * e, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 word * ep, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 word * xmaxc, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 word * Mc, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 word * xMc); |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 void Gsm_Short_Term_Analysis_Filter ( |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 struct gsmfr_0610_state * S, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 const word * LARc, /* coded log area ratio [0..7] IN */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 word * d /* st res. signal [0..159] IN/OUT */); |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 void Gsm_Decoding ( |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 struct gsmfr_0610_state * S, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 word xmaxcr, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 word Mcr, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 const word * xMcr, /* [0..12] IN */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 word * erp); /* [0..39] OUT */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 void Gsm_Long_Term_Synthesis_Filtering ( |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 struct gsmfr_0610_state* S, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 word Ncr, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 word bcr, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 word * erp, /* [0..39] IN */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 word * drp); /* [-120..-1] IN, [0..40] OUT */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 void Gsm_RPE_Decoding ( |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 struct gsmfr_0610_state *S, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 word xmaxcr, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 word Mcr, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 const word * xMcr, /* [0..12], 3 bits IN */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 word * erp); /* [0..39] OUT */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 void Gsm_RPE_Encoding ( |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 struct gsmfr_0610_state * S, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 word * e, /* -5..-1][0..39][40..44 IN/OUT */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 word * xmaxc, /* OUT */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 word * Mc, /* OUT */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 word * xMc); /* [0..12] OUT */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 void Gsm_Short_Term_Synthesis_Filter ( |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 struct gsmfr_0610_state * S, |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 const word * LARcr, /* log area ratios [0..7] IN */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 word * drp, /* received d [0...39] IN */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 word * s); /* signal s [0..159] OUT */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 void Gsm_Update_of_reconstructed_short_time_residual_signal ( |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 word * dpp, /* [0...39] IN */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 word * ep, /* [0...39] IN */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 word * dp); /* [-120...-1] IN/OUT */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 /* |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 * Tables from table.c |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 */ |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 extern word gsm_A[8], gsm_B[8], gsm_MIC[8], gsm_MAC[8]; |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 extern word gsm_INVA[8]; |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 extern word gsm_DLB[4], gsm_QLB[4]; |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 extern word gsm_H[11]; |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 extern word gsm_NRFAC[8]; |
8b21a6b7a3bf
libgsmfr2: beginning to integrate TU-Berlin code guts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 extern word gsm_FAC[8]; |