annotate libgsmfr2/ed_internal.h @ 585:3c6bf0d26ee7 default tip

TW-TS-005 reader: fix maximum line length bug TW-TS-005 section 4.1 states: The maximum allowed length of each line is 80 characters, not including the OS-specific newline encoding. The implementation of this line length limit in the TW-TS-005 hex file reader function in the present suite was wrong, such that lines of the full maximum length could not be read. Fix it. Note that this bug affects comment lines too, not just actual RTP payloads. Neither Annex A nor Annex B features an RTP payload format that goes to the maximum of 40 bytes, but if a comment line goes to the maximum allowed length of 80 characters not including the terminating newline, the bug will be triggered, necessitating the present fix.
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 25 Feb 2025 07:49:28 +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];