2
|
1 /*
|
|
2 * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
|
|
3 * Universitaet Berlin. See the accompanying file "COPYRIGHT" for
|
|
4 * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
|
|
5 */
|
|
6
|
|
7 /*$Header: /home/kbs/jutta/src/gsm/gsm-1.0/inc/RCS/gsm.h,v 1.5 1994/01/25 22:20:48 jutta Exp $*/
|
|
8
|
|
9 #ifndef GSM_H
|
|
10 #define GSM_H
|
|
11
|
|
12 #ifndef NeedFunctionPrototypes
|
|
13 #if defined(__cplusplus) || defined(__STDC__) || defined(VMS)
|
|
14 # define NeedFunctionPrototypes 1
|
|
15 #endif
|
|
16 #endif
|
|
17
|
|
18 /* The above 5 lines used to be several #if ... it was changed to avoid
|
|
19 * silly warnings and sintax errors of some compilers and to automate
|
|
20 * symbol definition for VMS!
|
|
21 * #ifdef __cplusplus
|
|
22 * # define NeedFunctionPrototypes 1
|
|
23 * #endif
|
|
24 *
|
|
25 * #if __STDC__
|
|
26 * # define NeedFunctionPrototypes 1
|
|
27 * #endif
|
|
28 */
|
|
29
|
|
30 #ifdef _NO_PROTO
|
|
31 # undef NeedFunctionPrototypes
|
|
32 #endif
|
|
33
|
|
34 #ifdef GSM_P
|
|
35 #undef GSM_P /* somewhere else may have defined this... */
|
|
36 #endif
|
|
37
|
|
38 #ifdef NeedFunctionPrototypes
|
|
39 # define GSM_P( protos ) protos
|
|
40 #else
|
|
41 # define GSM_P( protos ) ( /* protos */ )
|
|
42 #endif
|
|
43
|
|
44 #ifdef NeedFunctionPrototypes
|
|
45 # include <stdio.h> /* for FILE * */
|
|
46 #endif
|
|
47
|
|
48 /*
|
|
49 * Interface
|
|
50 */
|
|
51
|
|
52 typedef struct gsm_state *gsm;
|
|
53 typedef short gsm_signal; /* signed 16 bit */
|
|
54 typedef unsigned char gsm_byte;
|
|
55 typedef gsm_byte gsm_frame[33]; /* 33 * 8 bits */
|
|
56
|
|
57 #define GSM_MAGIC 0xD /* 13 kbit/s RPE-LTP */
|
|
58
|
|
59 #define GSM_PATCHLEVEL 3
|
|
60 #define GSM_MINOR 0
|
|
61 #define GSM_MAJOR 1
|
|
62
|
|
63 #define GSM_OPT_VERBOSE 1
|
|
64 #define GSM_OPT_FAST 2
|
|
65
|
|
66
|
|
67 /*
|
|
68 * Prototypes generated automatically by cproto ...
|
|
69 */
|
|
70
|
|
71 /* Prototypes for functions defined in file add.c */
|
|
72 extern word gsm_add GSM_P((word a, word b));
|
|
73 word gsm_sub GSM_P((word a, word b));
|
|
74 word gsm_mult GSM_P((word a, word b));
|
|
75 word gsm_mult_r GSM_P((word a, word b));
|
|
76 word gsm_abs GSM_P((word a));
|
|
77 longword gsm_L_mult GSM_P((word a, word b));
|
|
78 longword gsm_L_add GSM_P((longword a, longword b));
|
|
79 longword gsm_L_sub GSM_P((longword a, longword b));
|
|
80 word gsm_norm GSM_P((longword a));
|
|
81 longword gsm_L_asl GSM_P((longword a, int n));
|
|
82 word gsm_asl GSM_P((word a, int n));
|
|
83 longword gsm_L_asr GSM_P((longword a, int n));
|
|
84 word gsm_asr GSM_P((word a, int n));
|
|
85 word gsm_div GSM_P((word num, word denum));
|
|
86
|
|
87 /* Prototypes for functions defined in file code.c */
|
|
88 void Gsm_Coder GSM_P((struct gsm_state * S, word * s, word * LARc,
|
|
89 word * Nc, word * bc, word * Mc, word * xmaxc, word * xMc));
|
|
90
|
|
91 /* Prototypes for functions defined in file decode.c */
|
|
92 void Gsm_Decoder GSM_P((struct gsm_state * S, word * LARcr, word * Ncr,
|
|
93 word * bcr, word * Mcr, word * xmaxcr, word * xMcr, word * s));
|
|
94
|
|
95 /* Prototypes for functions defined in file long_term.c */
|
|
96 void Gsm_Long_Term_Predictor GSM_P((struct gsm_state * S, word * d,
|
|
97 word * dp, word * e, word * dpp, word * Nc, word * bc));
|
|
98 void Gsm_Long_Term_Synthesis_Filtering GSM_P((struct gsm_state * S,
|
|
99 word Ncr, word bcr, register word * erp, register word * drp));
|
|
100
|
|
101 /* Prototypes for functions defined in file lpc.c */
|
|
102 void Gsm_LPC_Analysis GSM_P((struct gsm_state * S, word * s,
|
|
103 word * LARc));
|
|
104
|
|
105 /* Prototypes for functions defined in file preprocess.c */
|
|
106 void Gsm_Preprocess GSM_P((struct gsm_state * S, word * s, word * so));
|
|
107
|
|
108 /* Prototypes for functions defined in file rpe.c */
|
|
109 void Gsm_RPE_Encoding GSM_P((struct gsm_state * S, word * e,
|
|
110 word * xmaxc, word * Mc, word * xMc));
|
|
111 void Gsm_RPE_Decoding GSM_P((struct gsm_state * S, word xmaxcr,
|
|
112 word Mcr, word * xMcr, word * erp));
|
|
113
|
|
114 /* Prototypes for functions defined in file gsm_destroy.c */
|
|
115 void gsm_destroy GSM_P((gsm S));
|
|
116
|
|
117 /* Prototypes for functions defined in file gsm_decode.c */
|
|
118 int gsm_decode GSM_P((gsm s, gsm_byte * c, gsm_signal * target));
|
|
119
|
|
120 /* Prototypes for functions defined in file gsm_encode.c */
|
|
121 void gsm_encode GSM_P((gsm s, gsm_signal * source, gsm_byte * c));
|
|
122
|
|
123 /* Prototypes for functions defined in file gsm_explode.c */
|
|
124 int gsm_explode GSM_P((gsm s, gsm_byte * c, gsm_signal * target));
|
|
125
|
|
126 /* Prototypes for functions defined in file gsm_implode.c */
|
|
127 void gsm_implode GSM_P((gsm s, gsm_signal * source, gsm_byte * c));
|
|
128
|
|
129 /* Prototypes for functions defined in file gsm_create.c */
|
|
130 gsm gsm_create GSM_P((void));
|
|
131
|
|
132 /* Prototypes for functions defined in file gsm_print.c */
|
|
133 int gsm_print GSM_P((FILE * f, gsm s, gsm_byte * c));
|
|
134
|
|
135 /* Prototypes for functions defined in file gsm_option.c */
|
|
136 int gsm_option GSM_P((gsm r, int opt, int *val));
|
|
137
|
|
138 /* Prototypes for functions defined in file short_term.c */
|
|
139 void Gsm_Short_Term_Analysis_Filter GSM_P((struct gsm_state * S,
|
|
140 word * LARc, word * s));
|
|
141 void Gsm_Short_Term_Synthesis_Filter GSM_P((struct gsm_state * S,
|
|
142 word * LARcr, word * wt, word * s));
|
|
143
|
|
144 /* These prototypes only when debugging is enabled! */
|
|
145 #ifndef NDEBUG
|
|
146 void gsm_debug_words GSM_P((char *name, int from, int to, word * ptr));
|
|
147 void gsm_debug_longwords GSM_P((char *name, int from, int to,
|
|
148 longword * ptr));
|
|
149 void gsm_debug_longword GSM_P((char *name, longword value));
|
|
150 void gsm_debug_word GSM_P((char *name, word value));
|
|
151 #endif
|
|
152
|
|
153 #undef GSM_P
|
|
154
|
|
155 #endif /* GSM_H */
|