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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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];