Merged revisions 157859 via svnmerge from
[asterisk/asterisk.git] / codecs / lpc10 / lpcenc.c
1 /*
2
3 $Log$
4 Revision 1.15  2004/06/26 03:50:14  markster
5 Merge source cleanups (bug #1911)
6
7 Revision 1.14  2003/02/12 13:59:15  matteo
8 mer feb 12 14:56:57 CET 2003
9
10 Revision 1.1.1.1  2003/02/12 13:59:15  matteo
11 mer feb 12 14:56:57 CET 2003
12
13 Revision 1.2  2000/01/05 08:20:39  markster
14 Some OSS fixes and a few lpc changes to make it actually work
15
16  * Revision 1.2  1996/08/20  20:31:21  jaf
17  * Removed all static local variables that were SAVE'd in the Fortran
18  * code, and put them in struct lpc10_encoder_state that is passed as an
19  * argument.
20  *
21  * Removed init function, since all initialization is now done in
22  * init_lpc10_encoder_state().
23  *
24  * Changed name of function from lpcenc_ to lpc10_encode, simply to make
25  * all lpc10 functions have more consistent naming with each other.
26  *
27  * Revision 1.1  1996/08/19  22:31:44  jaf
28  * Initial revision
29  *
30
31 */
32
33 /*  -- translated by f2c (version 19951025).
34    You must link the resulting object file with the libraries:
35         -lf2c -lm   (in that order)
36 */
37
38 #include "f2c.h"
39
40 #ifdef P_R_O_T_O_T_Y_P_E_S
41 extern int lpcenc_(real *speech, integer *bits);
42 extern int initlpcenc_(void);
43 /*:ref: prepro_ 14 2 6 4 */
44 /*:ref: analys_ 14 5 6 4 4 6 6 */
45 /*:ref: encode_ 14 7 4 4 6 6 4 4 4 */
46 /*:ref: chanwr_ 14 5 4 4 4 4 4 */
47 /*:ref: initprepro_ 14 0 */
48 /*:ref: initanalys_ 14 0 */
49 #endif
50
51 /* Table of constant values */
52
53 static integer c__180 = 180;
54 static integer c__10 = 10;
55
56 /* ***************************************************************** */
57
58 /* $Log$
59  * Revision 1.15  2004/06/26 03:50:14  markster
60  * Merge source cleanups (bug #1911)
61  *
62  * Revision 1.14  2003/02/12 13:59:15  matteo
63  * mer feb 12 14:56:57 CET 2003
64  *
65  * Revision 1.1.1.1  2003/02/12 13:59:15  matteo
66  * mer feb 12 14:56:57 CET 2003
67  *
68  * Revision 1.2  2000/01/05 08:20:39  markster
69  * Some OSS fixes and a few lpc changes to make it actually work
70  *
71  * Revision 1.2  1996/08/20  20:31:21  jaf
72  * Removed all static local variables that were SAVE'd in the Fortran
73  * code, and put them in struct lpc10_encoder_state that is passed as an
74  * argument.
75  *
76  * Removed init function, since all initialization is now done in
77  * init_lpc10_encoder_state().
78  *
79  * Changed name of function from lpcenc_ to lpc10_encode, simply to make
80  * all lpc10 functions have more consistent naming with each other.
81  *
82  * Revision 1.1  1996/08/19  22:31:44  jaf
83  * Initial revision
84  * */
85 /* Revision 1.2  1996/03/28  00:01:22  jaf */
86 /* Commented out some trace statements. */
87
88 /* Revision 1.1  1996/03/28  00:00:27  jaf */
89 /* Initial revision */
90
91
92 /* ***************************************************************** */
93
94 /* Encode one frame of 180 speech samples to 54 bits. */
95
96 /* Input: */
97 /*  SPEECH - Speech encoded as real values in the range [-1,+1]. */
98 /*           Indices 1 through 180 read, and modified (by PREPRO). */
99 /* Output: */
100 /*  BITS   - 54 encoded bits, stored 1 per array element. */
101 /*           Indices 1 through 54 written. */
102
103 /* This subroutine maintains local state from one call to the next.  If */
104 /* you want to switch to using a new audio stream for this filter, or */
105 /* reinitialize its state for any other reason, call the ENTRY */
106 /* INITLPCENC. */
107
108 /* Subroutine */ int lpc10_encode(real *speech, integer *bits,
109                                   struct lpc10_encoder_state *st)
110 {
111     integer irms, voice[2], pitch, ipitv;
112     real rc[10];
113     extern /* Subroutine */ int encode_(integer *, integer *, real *, real *, 
114             integer *, integer *, integer *), chanwr_(integer *, integer *, 
115             integer *, integer *, integer *, struct lpc10_encoder_state *),
116             analys_(real *, integer *, 
117             integer *, real *, real *, struct lpc10_encoder_state *),
118             prepro_(real *, integer *, struct lpc10_encoder_state *);
119     integer irc[10];
120     real rms;
121
122 /*       Arguments */
123 /* $Log$
124  * Revision 1.15  2004/06/26 03:50:14  markster
125  * Merge source cleanups (bug #1911)
126  *
127  * Revision 1.14  2003/02/12 13:59:15  matteo
128  * mer feb 12 14:56:57 CET 2003
129  * 
130  * Revision 1.1.1.1  2003/02/12 13:59:15  matteo
131  * mer feb 12 14:56:57 CET 2003
132  *
133  * Revision 1.2  2000/01/05 08:20:39  markster
134  * Some OSS fixes and a few lpc changes to make it actually work
135  *
136  * Revision 1.2  1996/08/20  20:31:21  jaf
137  * Removed all static local variables that were SAVE'd in the Fortran
138  * code, and put them in struct lpc10_encoder_state that is passed as an
139  * argument.
140  *
141  * Removed init function, since all initialization is now done in
142  * init_lpc10_encoder_state().
143  *
144  * Changed name of function from lpcenc_ to lpc10_encode, simply to make
145  * all lpc10 functions have more consistent naming with each other.
146  *
147  * Revision 1.1  1996/08/19  22:31:44  jaf
148  * Initial revision
149  * */
150 /* Revision 1.3  1996/03/29  22:03:47  jaf */
151 /* Removed definitions for any constants that were no longer used. */
152
153 /* Revision 1.2  1996/03/26  19:34:33  jaf */
154 /* Added comments indicating which constants are not needed in an */
155 /* application that uses the LPC-10 coder. */
156
157 /* Revision 1.1  1996/02/07  14:43:51  jaf */
158 /* Initial revision */
159
160 /*   LPC Configuration parameters: */
161 /* Frame size, Prediction order, Pitch period */
162 /*       Local variables that need not be saved */
163 /*       Uncoded speech parameters */
164 /*       Coded speech parameters */
165 /*       Local state */
166 /*       None */
167     /* Parameter adjustments */
168     if (speech) {
169         --speech;
170         }
171     if (bits) {
172         --bits;
173         }
174
175     /* Function Body */
176     prepro_(&speech[1], &c__180, st);
177     analys_(&speech[1], voice, &pitch, &rms, rc, st);
178     encode_(voice, &pitch, &rms, rc, &ipitv, &irms, irc);
179     chanwr_(&c__10, &ipitv, &irms, irc, &bits[1], st);
180     return 0;
181 } /* lpcenc_ */