1b815c7f3Sopenharmony_ci/*
2b815c7f3Sopenharmony_ci * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
3b815c7f3Sopenharmony_ci * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for
4b815c7f3Sopenharmony_ci * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
5b815c7f3Sopenharmony_ci */
6b815c7f3Sopenharmony_ci
7b815c7f3Sopenharmony_ci#include "gsm610_priv.h"
8b815c7f3Sopenharmony_ci#include "gsm.h"
9b815c7f3Sopenharmony_ci
10b815c7f3Sopenharmony_civoid gsm_encode (gsm s, gsm_signal * source, gsm_byte * c)
11b815c7f3Sopenharmony_ci{
12b815c7f3Sopenharmony_ci	int16_t		LARc [8], Nc [4], Mc [4], bc [4], xmaxc [4], xmc [13 * 4] ;
13b815c7f3Sopenharmony_ci
14b815c7f3Sopenharmony_ci	Gsm_Coder (s, source, LARc, Nc, bc, Mc, xmaxc, xmc) ;
15b815c7f3Sopenharmony_ci
16b815c7f3Sopenharmony_ci
17b815c7f3Sopenharmony_ci	/*	variable	size
18b815c7f3Sopenharmony_ci
19b815c7f3Sopenharmony_ci		GSM_MAGIC	4
20b815c7f3Sopenharmony_ci
21b815c7f3Sopenharmony_ci		LARc [0]		6
22b815c7f3Sopenharmony_ci		LARc [1]		6
23b815c7f3Sopenharmony_ci		LARc [2]		5
24b815c7f3Sopenharmony_ci		LARc [3]		5
25b815c7f3Sopenharmony_ci		LARc [4]		4
26b815c7f3Sopenharmony_ci		LARc [5]		4
27b815c7f3Sopenharmony_ci		LARc [6]		3
28b815c7f3Sopenharmony_ci		LARc [7]		3
29b815c7f3Sopenharmony_ci
30b815c7f3Sopenharmony_ci		Nc [0]		7
31b815c7f3Sopenharmony_ci		bc [0]		2
32b815c7f3Sopenharmony_ci		Mc [0]		2
33b815c7f3Sopenharmony_ci		xmaxc [0]	6
34b815c7f3Sopenharmony_ci		xmc [0]		3
35b815c7f3Sopenharmony_ci		xmc [1]		3
36b815c7f3Sopenharmony_ci		xmc [2]		3
37b815c7f3Sopenharmony_ci		xmc [3]		3
38b815c7f3Sopenharmony_ci		xmc [4]		3
39b815c7f3Sopenharmony_ci		xmc [5]		3
40b815c7f3Sopenharmony_ci		xmc [6]		3
41b815c7f3Sopenharmony_ci		xmc [7]		3
42b815c7f3Sopenharmony_ci		xmc [8]		3
43b815c7f3Sopenharmony_ci		xmc [9]		3
44b815c7f3Sopenharmony_ci		xmc [10]		3
45b815c7f3Sopenharmony_ci		xmc [11]		3
46b815c7f3Sopenharmony_ci		xmc [12]		3
47b815c7f3Sopenharmony_ci
48b815c7f3Sopenharmony_ci		Nc [1]		7
49b815c7f3Sopenharmony_ci		bc [1]		2
50b815c7f3Sopenharmony_ci		Mc [1]		2
51b815c7f3Sopenharmony_ci		xmaxc [1]	6
52b815c7f3Sopenharmony_ci		xmc [13]		3
53b815c7f3Sopenharmony_ci		xmc [14]		3
54b815c7f3Sopenharmony_ci		xmc [15]		3
55b815c7f3Sopenharmony_ci		xmc [16]		3
56b815c7f3Sopenharmony_ci		xmc [17]		3
57b815c7f3Sopenharmony_ci		xmc [18]		3
58b815c7f3Sopenharmony_ci		xmc [19]		3
59b815c7f3Sopenharmony_ci		xmc [20]		3
60b815c7f3Sopenharmony_ci		xmc [21]		3
61b815c7f3Sopenharmony_ci		xmc [22]		3
62b815c7f3Sopenharmony_ci		xmc [23]		3
63b815c7f3Sopenharmony_ci		xmc [24]		3
64b815c7f3Sopenharmony_ci		xmc [25]		3
65b815c7f3Sopenharmony_ci
66b815c7f3Sopenharmony_ci		Nc [2]		7
67b815c7f3Sopenharmony_ci		bc [2]		2
68b815c7f3Sopenharmony_ci		Mc [2]		2
69b815c7f3Sopenharmony_ci		xmaxc [2]	6
70b815c7f3Sopenharmony_ci		xmc [26]		3
71b815c7f3Sopenharmony_ci		xmc [27]		3
72b815c7f3Sopenharmony_ci		xmc [28]		3
73b815c7f3Sopenharmony_ci		xmc [29]		3
74b815c7f3Sopenharmony_ci		xmc [30]		3
75b815c7f3Sopenharmony_ci		xmc [31]		3
76b815c7f3Sopenharmony_ci		xmc [32]		3
77b815c7f3Sopenharmony_ci		xmc [33]		3
78b815c7f3Sopenharmony_ci		xmc [34]		3
79b815c7f3Sopenharmony_ci		xmc [35]		3
80b815c7f3Sopenharmony_ci		xmc [36]		3
81b815c7f3Sopenharmony_ci		xmc [37]		3
82b815c7f3Sopenharmony_ci		xmc [38]		3
83b815c7f3Sopenharmony_ci
84b815c7f3Sopenharmony_ci		Nc [3]		7
85b815c7f3Sopenharmony_ci		bc [3]		2
86b815c7f3Sopenharmony_ci		Mc [3]		2
87b815c7f3Sopenharmony_ci		xmaxc [3]	6
88b815c7f3Sopenharmony_ci		xmc [39]		3
89b815c7f3Sopenharmony_ci		xmc [40]		3
90b815c7f3Sopenharmony_ci		xmc [41]		3
91b815c7f3Sopenharmony_ci		xmc [42]		3
92b815c7f3Sopenharmony_ci		xmc [43]		3
93b815c7f3Sopenharmony_ci		xmc [44]		3
94b815c7f3Sopenharmony_ci		xmc [45]		3
95b815c7f3Sopenharmony_ci		xmc [46]		3
96b815c7f3Sopenharmony_ci		xmc [47]		3
97b815c7f3Sopenharmony_ci		xmc [48]		3
98b815c7f3Sopenharmony_ci		xmc [49]		3
99b815c7f3Sopenharmony_ci		xmc [50]		3
100b815c7f3Sopenharmony_ci		xmc [51]		3
101b815c7f3Sopenharmony_ci	*/
102b815c7f3Sopenharmony_ci
103b815c7f3Sopenharmony_ci#ifdef WAV49
104b815c7f3Sopenharmony_ci
105b815c7f3Sopenharmony_ci	if (s->wav_fmt)
106b815c7f3Sopenharmony_ci	{	s->frame_index = !s->frame_index ;
107b815c7f3Sopenharmony_ci		if (s->frame_index)
108b815c7f3Sopenharmony_ci		{	uint16_t sr ;
109b815c7f3Sopenharmony_ci
110b815c7f3Sopenharmony_ci			sr = 0 ;
111b815c7f3Sopenharmony_ci			sr = sr >> 6 | LARc [0] << 10 ;
112b815c7f3Sopenharmony_ci			sr = sr >> 6 | LARc [1] << 10 ;
113b815c7f3Sopenharmony_ci			*c++ = sr >> 4 ;
114b815c7f3Sopenharmony_ci			sr = sr >> 5 | LARc [2] << 11 ;
115b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
116b815c7f3Sopenharmony_ci			sr = sr >> 5 | LARc [3] << 11 ;
117b815c7f3Sopenharmony_ci			sr = sr >> 4 | LARc [4] << 12 ;
118b815c7f3Sopenharmony_ci			*c++ = sr >> 6 ;
119b815c7f3Sopenharmony_ci			sr = sr >> 4 | LARc [5] << 12 ;
120b815c7f3Sopenharmony_ci			sr = sr >> 3 | LARc [6] << 13 ;
121b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
122b815c7f3Sopenharmony_ci			sr = sr >> 3 | LARc [7] << 13 ;
123b815c7f3Sopenharmony_ci			sr = sr >> 7 | Nc [0] << 9 ;
124b815c7f3Sopenharmony_ci			*c++ = sr >> 5 ;
125b815c7f3Sopenharmony_ci			sr = sr >> 2 | bc [0] << 14 ;
126b815c7f3Sopenharmony_ci			sr = sr >> 2 | Mc [0] << 14 ;
127b815c7f3Sopenharmony_ci			sr = sr >> 6 | xmaxc [0] << 10 ;
128b815c7f3Sopenharmony_ci			*c++ = sr >> 3 ;
129b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [0] << 13 ;
130b815c7f3Sopenharmony_ci			*c++ = sr >> 8 ;
131b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [1] << 13 ;
132b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [2] << 13 ;
133b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [3] << 13 ;
134b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
135b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [4] << 13 ;
136b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [5] << 13 ;
137b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [6] << 13 ;
138b815c7f3Sopenharmony_ci			*c++ = sr >> 6 ;
139b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [7] << 13 ;
140b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [8] << 13 ;
141b815c7f3Sopenharmony_ci			*c++ = sr >> 8 ;
142b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [9] << 13 ;
143b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [10] << 13 ;
144b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [11] << 13 ;
145b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
146b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [12] << 13 ;
147b815c7f3Sopenharmony_ci			sr = sr >> 7 | Nc [1] << 9 ;
148b815c7f3Sopenharmony_ci			*c++ = sr >> 5 ;
149b815c7f3Sopenharmony_ci			sr = sr >> 2 | bc [1] << 14 ;
150b815c7f3Sopenharmony_ci			sr = sr >> 2 | Mc [1] << 14 ;
151b815c7f3Sopenharmony_ci			sr = sr >> 6 | xmaxc [1] << 10 ;
152b815c7f3Sopenharmony_ci			*c++ = sr >> 3 ;
153b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [13] << 13 ;
154b815c7f3Sopenharmony_ci			*c++ = sr >> 8 ;
155b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [14] << 13 ;
156b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [15] << 13 ;
157b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [16] << 13 ;
158b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
159b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [17] << 13 ;
160b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [18] << 13 ;
161b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [19] << 13 ;
162b815c7f3Sopenharmony_ci			*c++ = sr >> 6 ;
163b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [20] << 13 ;
164b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [21] << 13 ;
165b815c7f3Sopenharmony_ci			*c++ = sr >> 8 ;
166b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [22] << 13 ;
167b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [23] << 13 ;
168b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [24] << 13 ;
169b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
170b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [25] << 13 ;
171b815c7f3Sopenharmony_ci			sr = sr >> 7 | Nc [2] << 9 ;
172b815c7f3Sopenharmony_ci			*c++ = sr >> 5 ;
173b815c7f3Sopenharmony_ci			sr = sr >> 2 | bc [2] << 14 ;
174b815c7f3Sopenharmony_ci			sr = sr >> 2 | Mc [2] << 14 ;
175b815c7f3Sopenharmony_ci			sr = sr >> 6 | xmaxc [2] << 10 ;
176b815c7f3Sopenharmony_ci			*c++ = sr >> 3 ;
177b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [26] << 13 ;
178b815c7f3Sopenharmony_ci			*c++ = sr >> 8 ;
179b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [27] << 13 ;
180b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [28] << 13 ;
181b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [29] << 13 ;
182b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
183b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [30] << 13 ;
184b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [31] << 13 ;
185b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [32] << 13 ;
186b815c7f3Sopenharmony_ci			*c++ = sr >> 6 ;
187b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [33] << 13 ;
188b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [34] << 13 ;
189b815c7f3Sopenharmony_ci			*c++ = sr >> 8 ;
190b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [35] << 13 ;
191b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [36] << 13 ;
192b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [37] << 13 ;
193b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
194b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [38] << 13 ;
195b815c7f3Sopenharmony_ci			sr = sr >> 7 | Nc [3] << 9 ;
196b815c7f3Sopenharmony_ci			*c++ = sr >> 5 ;
197b815c7f3Sopenharmony_ci			sr = sr >> 2 | bc [3] << 14 ;
198b815c7f3Sopenharmony_ci			sr = sr >> 2 | Mc [3] << 14 ;
199b815c7f3Sopenharmony_ci			sr = sr >> 6 | xmaxc [3] << 10 ;
200b815c7f3Sopenharmony_ci			*c++ = sr >> 3 ;
201b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [39] << 13 ;
202b815c7f3Sopenharmony_ci			*c++ = sr >> 8 ;
203b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [40] << 13 ;
204b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [41] << 13 ;
205b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [42] << 13 ;
206b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
207b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [43] << 13 ;
208b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [44] << 13 ;
209b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [45] << 13 ;
210b815c7f3Sopenharmony_ci			*c++ = sr >> 6 ;
211b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [46] << 13 ;
212b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [47] << 13 ;
213b815c7f3Sopenharmony_ci			*c++ = sr >> 8 ;
214b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [48] << 13 ;
215b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [49] << 13 ;
216b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [50] << 13 ;
217b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
218b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [51] << 13 ;
219b815c7f3Sopenharmony_ci			sr = sr >> 4 ;
220b815c7f3Sopenharmony_ci			*c = sr >> 8 ;
221b815c7f3Sopenharmony_ci			s->frame_chain = *c ;
222b815c7f3Sopenharmony_ci		}
223b815c7f3Sopenharmony_ci		else {
224b815c7f3Sopenharmony_ci			uint16_t sr ;
225b815c7f3Sopenharmony_ci
226b815c7f3Sopenharmony_ci			sr = 0 ;
227b815c7f3Sopenharmony_ci			sr = sr >> 4 | s->frame_chain << 12 ;
228b815c7f3Sopenharmony_ci			sr = sr >> 6 | LARc [0] << 10 ;
229b815c7f3Sopenharmony_ci			*c++ = sr >> 6 ;
230b815c7f3Sopenharmony_ci			sr = sr >> 6 | LARc [1] << 10 ;
231b815c7f3Sopenharmony_ci			*c++ = sr >> 8 ;
232b815c7f3Sopenharmony_ci			sr = sr >> 5 | LARc [2] << 11 ;
233b815c7f3Sopenharmony_ci			sr = sr >> 5 | LARc [3] << 11 ;
234b815c7f3Sopenharmony_ci			*c++ = sr >> 6 ;
235b815c7f3Sopenharmony_ci			sr = sr >> 4 | LARc [4] << 12 ;
236b815c7f3Sopenharmony_ci			sr = sr >> 4 | LARc [5] << 12 ;
237b815c7f3Sopenharmony_ci			*c++ = sr >> 6 ;
238b815c7f3Sopenharmony_ci			sr = sr >> 3 | LARc [6] << 13 ;
239b815c7f3Sopenharmony_ci			sr = sr >> 3 | LARc [7] << 13 ;
240b815c7f3Sopenharmony_ci			*c++ = sr >> 8 ;
241b815c7f3Sopenharmony_ci			sr = sr >> 7 | Nc [0] << 9 ;
242b815c7f3Sopenharmony_ci			sr = sr >> 2 | bc [0] << 14 ;
243b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
244b815c7f3Sopenharmony_ci			sr = sr >> 2 | Mc [0] << 14 ;
245b815c7f3Sopenharmony_ci			sr = sr >> 6 | xmaxc [0] << 10 ;
246b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
247b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [0] << 13 ;
248b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [1] << 13 ;
249b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [2] << 13 ;
250b815c7f3Sopenharmony_ci			*c++ = sr >> 6 ;
251b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [3] << 13 ;
252b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [4] << 13 ;
253b815c7f3Sopenharmony_ci			*c++ = sr >> 8 ;
254b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [5] << 13 ;
255b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [6] << 13 ;
256b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [7] << 13 ;
257b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
258b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [8] << 13 ;
259b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [9] << 13 ;
260b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [10] << 13 ;
261b815c7f3Sopenharmony_ci			*c++ = sr >> 6 ;
262b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [11] << 13 ;
263b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [12] << 13 ;
264b815c7f3Sopenharmony_ci			*c++ = sr >> 8 ;
265b815c7f3Sopenharmony_ci			sr = sr >> 7 | Nc [1] << 9 ;
266b815c7f3Sopenharmony_ci			sr = sr >> 2 | bc [1] << 14 ;
267b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
268b815c7f3Sopenharmony_ci			sr = sr >> 2 | Mc [1] << 14 ;
269b815c7f3Sopenharmony_ci			sr = sr >> 6 | xmaxc [1] << 10 ;
270b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
271b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [13] << 13 ;
272b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [14] << 13 ;
273b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [15] << 13 ;
274b815c7f3Sopenharmony_ci			*c++ = sr >> 6 ;
275b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [16] << 13 ;
276b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [17] << 13 ;
277b815c7f3Sopenharmony_ci			*c++ = sr >> 8 ;
278b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [18] << 13 ;
279b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [19] << 13 ;
280b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [20] << 13 ;
281b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
282b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [21] << 13 ;
283b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [22] << 13 ;
284b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [23] << 13 ;
285b815c7f3Sopenharmony_ci			*c++ = sr >> 6 ;
286b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [24] << 13 ;
287b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [25] << 13 ;
288b815c7f3Sopenharmony_ci			*c++ = sr >> 8 ;
289b815c7f3Sopenharmony_ci			sr = sr >> 7 | Nc [2] << 9 ;
290b815c7f3Sopenharmony_ci			sr = sr >> 2 | bc [2] << 14 ;
291b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
292b815c7f3Sopenharmony_ci			sr = sr >> 2 | Mc [2] << 14 ;
293b815c7f3Sopenharmony_ci			sr = sr >> 6 | xmaxc [2] << 10 ;
294b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
295b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [26] << 13 ;
296b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [27] << 13 ;
297b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [28] << 13 ;
298b815c7f3Sopenharmony_ci			*c++ = sr >> 6 ;
299b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [29] << 13 ;
300b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [30] << 13 ;
301b815c7f3Sopenharmony_ci			*c++ = sr >> 8 ;
302b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [31] << 13 ;
303b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [32] << 13 ;
304b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [33] << 13 ;
305b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
306b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [34] << 13 ;
307b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [35] << 13 ;
308b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [36] << 13 ;
309b815c7f3Sopenharmony_ci			*c++ = sr >> 6 ;
310b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [37] << 13 ;
311b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [38] << 13 ;
312b815c7f3Sopenharmony_ci			*c++ = sr >> 8 ;
313b815c7f3Sopenharmony_ci			sr = sr >> 7 | Nc [3] << 9 ;
314b815c7f3Sopenharmony_ci			sr = sr >> 2 | bc [3] << 14 ;
315b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
316b815c7f3Sopenharmony_ci			sr = sr >> 2 | Mc [3] << 14 ;
317b815c7f3Sopenharmony_ci			sr = sr >> 6 | xmaxc [3] << 10 ;
318b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
319b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [39] << 13 ;
320b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [40] << 13 ;
321b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [41] << 13 ;
322b815c7f3Sopenharmony_ci			*c++ = sr >> 6 ;
323b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [42] << 13 ;
324b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [43] << 13 ;
325b815c7f3Sopenharmony_ci			*c++ = sr >> 8 ;
326b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [44] << 13 ;
327b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [45] << 13 ;
328b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [46] << 13 ;
329b815c7f3Sopenharmony_ci			*c++ = sr >> 7 ;
330b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [47] << 13 ;
331b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [48] << 13 ;
332b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [49] << 13 ;
333b815c7f3Sopenharmony_ci			*c++ = sr >> 6 ;
334b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [50] << 13 ;
335b815c7f3Sopenharmony_ci			sr = sr >> 3 | xmc [51] << 13 ;
336b815c7f3Sopenharmony_ci			*c++ = sr >> 8 ;
337b815c7f3Sopenharmony_ci		}
338b815c7f3Sopenharmony_ci	}
339b815c7f3Sopenharmony_ci
340b815c7f3Sopenharmony_ci	else
341b815c7f3Sopenharmony_ci
342b815c7f3Sopenharmony_ci#endif	/* WAV49 */
343b815c7f3Sopenharmony_ci	{
344b815c7f3Sopenharmony_ci
345b815c7f3Sopenharmony_ci		*c++ = ((GSM_MAGIC & 0xF) << 4)		/* 1 */
346b815c7f3Sopenharmony_ci				| ((LARc [0] >> 2) & 0xF) ;
347b815c7f3Sopenharmony_ci		*c++ = ((LARc [0] & 0x3) << 6)
348b815c7f3Sopenharmony_ci				| (LARc [1] & 0x3F) ;
349b815c7f3Sopenharmony_ci		*c++ = ((LARc [2] & 0x1F) << 3)
350b815c7f3Sopenharmony_ci				| ((LARc [3] >> 2) & 0x7) ;
351b815c7f3Sopenharmony_ci		*c++ = ((LARc [3] & 0x3) << 6)
352b815c7f3Sopenharmony_ci				| ((LARc [4] & 0xF) << 2)
353b815c7f3Sopenharmony_ci				| ((LARc [5] >> 2) & 0x3) ;
354b815c7f3Sopenharmony_ci		*c++ = ((LARc [5] & 0x3) << 6)
355b815c7f3Sopenharmony_ci				| ((LARc [6] & 0x7) << 3)
356b815c7f3Sopenharmony_ci				| (LARc [7] & 0x7) ;
357b815c7f3Sopenharmony_ci		*c++ = ((Nc [0] & 0x7F) << 1)
358b815c7f3Sopenharmony_ci				| ((bc [0] >> 1) & 0x1) ;
359b815c7f3Sopenharmony_ci		*c++ = ((bc [0] & 0x1) << 7)
360b815c7f3Sopenharmony_ci				| ((Mc [0] & 0x3) << 5)
361b815c7f3Sopenharmony_ci				| ((xmaxc [0] >> 1) & 0x1F) ;
362b815c7f3Sopenharmony_ci		*c++ = ((xmaxc [0] & 0x1) << 7)
363b815c7f3Sopenharmony_ci				| ((xmc [0] & 0x7) << 4)
364b815c7f3Sopenharmony_ci				| ((xmc [1] & 0x7) << 1)
365b815c7f3Sopenharmony_ci				| ((xmc [2] >> 2) & 0x1) ;
366b815c7f3Sopenharmony_ci		*c++ = ((xmc [2] & 0x3) << 6)
367b815c7f3Sopenharmony_ci				| ((xmc [3] & 0x7) << 3)
368b815c7f3Sopenharmony_ci				| (xmc [4] & 0x7) ;
369b815c7f3Sopenharmony_ci		*c++ = ((xmc [5] & 0x7) << 5)			/* 10 */
370b815c7f3Sopenharmony_ci				| ((xmc [6] & 0x7) << 2)
371b815c7f3Sopenharmony_ci				| ((xmc [7] >> 1) & 0x3) ;
372b815c7f3Sopenharmony_ci		*c++ = ((xmc [7] & 0x1) << 7)
373b815c7f3Sopenharmony_ci				| ((xmc [8] & 0x7) << 4)
374b815c7f3Sopenharmony_ci				| ((xmc [9] & 0x7) << 1)
375b815c7f3Sopenharmony_ci				| ((xmc [10] >> 2) & 0x1) ;
376b815c7f3Sopenharmony_ci		*c++ = ((xmc [10] & 0x3) << 6)
377b815c7f3Sopenharmony_ci				| ((xmc [11] & 0x7) << 3)
378b815c7f3Sopenharmony_ci				| (xmc [12] & 0x7) ;
379b815c7f3Sopenharmony_ci		*c++ = ((Nc [1] & 0x7F) << 1)
380b815c7f3Sopenharmony_ci				| ((bc [1] >> 1) & 0x1) ;
381b815c7f3Sopenharmony_ci		*c++ = ((bc [1] & 0x1) << 7)
382b815c7f3Sopenharmony_ci				| ((Mc [1] & 0x3) << 5)
383b815c7f3Sopenharmony_ci				| ((xmaxc [1] >> 1) & 0x1F) ;
384b815c7f3Sopenharmony_ci		*c++ = ((xmaxc [1] & 0x1) << 7)
385b815c7f3Sopenharmony_ci				| ((xmc [13] & 0x7) << 4)
386b815c7f3Sopenharmony_ci				| ((xmc [14] & 0x7) << 1)
387b815c7f3Sopenharmony_ci				| ((xmc [15] >> 2) & 0x1) ;
388b815c7f3Sopenharmony_ci		*c++ = ((xmc [15] & 0x3) << 6)
389b815c7f3Sopenharmony_ci				| ((xmc [16] & 0x7) << 3)
390b815c7f3Sopenharmony_ci				| (xmc [17] & 0x7) ;
391b815c7f3Sopenharmony_ci		*c++ = ((xmc [18] & 0x7) << 5)
392b815c7f3Sopenharmony_ci				| ((xmc [19] & 0x7) << 2)
393b815c7f3Sopenharmony_ci				| ((xmc [20] >> 1) & 0x3) ;
394b815c7f3Sopenharmony_ci		*c++ = ((xmc [20] & 0x1) << 7)
395b815c7f3Sopenharmony_ci				| ((xmc [21] & 0x7) << 4)
396b815c7f3Sopenharmony_ci				| ((xmc [22] & 0x7) << 1)
397b815c7f3Sopenharmony_ci				| ((xmc [23] >> 2) & 0x1) ;
398b815c7f3Sopenharmony_ci		*c++ = ((xmc [23] & 0x3) << 6)
399b815c7f3Sopenharmony_ci				| ((xmc [24] & 0x7) << 3)
400b815c7f3Sopenharmony_ci				| (xmc [25] & 0x7) ;
401b815c7f3Sopenharmony_ci		*c++ = ((Nc [2] & 0x7F) << 1)			/* 20 */
402b815c7f3Sopenharmony_ci				| ((bc [2] >> 1) & 0x1) ;
403b815c7f3Sopenharmony_ci		*c++ = ((bc [2] & 0x1) << 7)
404b815c7f3Sopenharmony_ci				| ((Mc [2] & 0x3) << 5)
405b815c7f3Sopenharmony_ci				| ((xmaxc [2] >> 1) & 0x1F) ;
406b815c7f3Sopenharmony_ci		*c++ = ((xmaxc [2] & 0x1) << 7)
407b815c7f3Sopenharmony_ci				| ((xmc [26] & 0x7) << 4)
408b815c7f3Sopenharmony_ci				| ((xmc [27] & 0x7) << 1)
409b815c7f3Sopenharmony_ci				| ((xmc [28] >> 2) & 0x1) ;
410b815c7f3Sopenharmony_ci		*c++ = ((xmc [28] & 0x3) << 6)
411b815c7f3Sopenharmony_ci				| ((xmc [29] & 0x7) << 3)
412b815c7f3Sopenharmony_ci				| (xmc [30] & 0x7) ;
413b815c7f3Sopenharmony_ci		*c++ = ((xmc [31] & 0x7) << 5)
414b815c7f3Sopenharmony_ci				| ((xmc [32] & 0x7) << 2)
415b815c7f3Sopenharmony_ci				| ((xmc [33] >> 1) & 0x3) ;
416b815c7f3Sopenharmony_ci		*c++ = ((xmc [33] & 0x1) << 7)
417b815c7f3Sopenharmony_ci				| ((xmc [34] & 0x7) << 4)
418b815c7f3Sopenharmony_ci				| ((xmc [35] & 0x7) << 1)
419b815c7f3Sopenharmony_ci				| ((xmc [36] >> 2) & 0x1) ;
420b815c7f3Sopenharmony_ci		*c++ = ((xmc [36] & 0x3) << 6)
421b815c7f3Sopenharmony_ci				| ((xmc [37] & 0x7) << 3)
422b815c7f3Sopenharmony_ci				| (xmc [38] & 0x7) ;
423b815c7f3Sopenharmony_ci		*c++ = ((Nc [3] & 0x7F) << 1)
424b815c7f3Sopenharmony_ci				| ((bc [3] >> 1) & 0x1) ;
425b815c7f3Sopenharmony_ci		*c++ = ((bc [3] & 0x1) << 7)
426b815c7f3Sopenharmony_ci				| ((Mc [3] & 0x3) << 5)
427b815c7f3Sopenharmony_ci				| ((xmaxc [3] >> 1) & 0x1F) ;
428b815c7f3Sopenharmony_ci		*c++ = ((xmaxc [3] & 0x1) << 7)
429b815c7f3Sopenharmony_ci				| ((xmc [39] & 0x7) << 4)
430b815c7f3Sopenharmony_ci				| ((xmc [40] & 0x7) << 1)
431b815c7f3Sopenharmony_ci				| ((xmc [41] >> 2) & 0x1) ;
432b815c7f3Sopenharmony_ci		*c++ = ((xmc [41] & 0x3) << 6)			/* 30 */
433b815c7f3Sopenharmony_ci				| ((xmc [42] & 0x7) << 3)
434b815c7f3Sopenharmony_ci				| (xmc [43] & 0x7) ;
435b815c7f3Sopenharmony_ci		*c++ = ((xmc [44] & 0x7) << 5)
436b815c7f3Sopenharmony_ci				| ((xmc [45] & 0x7) << 2)
437b815c7f3Sopenharmony_ci				| ((xmc [46] >> 1) & 0x3) ;
438b815c7f3Sopenharmony_ci		*c++ = ((xmc [46] & 0x1) << 7)
439b815c7f3Sopenharmony_ci				| ((xmc [47] & 0x7) << 4)
440b815c7f3Sopenharmony_ci				| ((xmc [48] & 0x7) << 1)
441b815c7f3Sopenharmony_ci				| ((xmc [49] >> 2) & 0x1) ;
442b815c7f3Sopenharmony_ci		*c++ = ((xmc [49] & 0x3) << 6)
443b815c7f3Sopenharmony_ci				| ((xmc [50] & 0x7) << 3)
444b815c7f3Sopenharmony_ci				| (xmc [51] & 0x7) ;
445b815c7f3Sopenharmony_ci
446b815c7f3Sopenharmony_ci	}
447b815c7f3Sopenharmony_ci}
448b815c7f3Sopenharmony_ci
449