blob: 35f6011dd14186196253e1ec233225c73c750ee8 [file] [log] [blame]
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +02001/* GSM 06.10 - GSM FR codec */
2
3/*
4 * (C) 2010 Sylvain Munaut <tnt@246tNt.com>
5 *
6 * All Rights Reserved
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License along
19 * with this program; if not, write to the Free Software Foundation, Inc.,
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 *
22 */
23
24#include <stdint.h>
25
26/* GSM FR - subjective importance bit ordering */
27 /* This array encodes GSM 05.03 Table 2.
28 * It's also GSM 06.10 Table A.2.1a
29 *
30 * It converts between serial parameter output by the encoder and the
31 * order needed before channel encoding.
32 */
Diego Elio Pettenò23431c72012-06-29 13:01:27 -070033const uint16_t gsm610_bitorder[260] = {
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +020034 0, /* LARc0:5 */
35 47, /* Xmaxc0:5 */
36 103, /* Xmaxc1:5 */
37 159, /* Xmaxc2:5 */
38 215, /* Xmaxc3:5 */
39 1, /* LARc0:4 */
40 6, /* LARc1:5 */
41 12, /* LARc2:4 */
42 2, /* LARc0:3 */
43 7, /* LARc1:4 */
44 13, /* LARc2:3 */
45 17, /* LARc3:4 */
46 36, /* Nc0:6 */
47 92, /* Nc1:6 */
48 148, /* Nc2:6 */
49 204, /* Nc3:6 */
50 48, /* Xmaxc0:4 */
51 104, /* Xmaxc1:4 */
52 160, /* Xmaxc2:4 */
53 216, /* Xmaxc3:4 */
54 8, /* LARc1:3 */
55 22, /* LARc4:3 */
56 26, /* LARc5:3 */
57 37, /* Nc0:5 */
58 93, /* Nc1:5 */
59 149, /* Nc2:5 */
60 205, /* Nc3:5 */
61 38, /* Nc0:4 */
62 94, /* Nc1:4 */
63 150, /* Nc2:4 */
64 206, /* Nc3:4 */
65 39, /* Nc0:3 */
66 95, /* Nc1:3 */
67 151, /* Nc2:3 */
68 207, /* Nc3:3 */
69 40, /* Nc0:2 */
70 96, /* Nc1:2 */
71 152, /* Nc2:2 */
72 208, /* Nc3:2 */
73 49, /* Xmaxc0:3 */
74 105, /* Xmaxc1:3 */
75 161, /* Xmaxc2:3 */
76 217, /* Xmaxc3:3 */
77 3, /* LARc0:2 */
78 18, /* LARc3:3 */
79 30, /* LARc6:2 */
80 41, /* Nc0:1 */
81 97, /* Nc1:1 */
82 153, /* Nc2:1 */
83 209, /* Nc3:1 */
84 23, /* LARc4:2 */
85 27, /* LARc5:2 */
86 43, /* bc0:1 */
87 99, /* bc1:1 */
88 155, /* bc2:1 */
89 211, /* bc3:1 */
90 42, /* Nc0:0 */
91 98, /* Nc1:0 */
92 154, /* Nc2:0 */
93 210, /* Nc3:0 */
94 45, /* Mc0:1 */
95 101, /* Mc1:1 */
96 157, /* Mc2:1 */
97 213, /* Mc3:1 */
98 4, /* LARc0:1 */
99 9, /* LARc1:2 */
100 14, /* LARc2:2 */
101 33, /* LARc7:2 */
102 19, /* LARc3:2 */
103 24, /* LARc4:1 */
104 31, /* LARc6:1 */
105 44, /* bc0:0 */
106 100, /* bc1:0 */
107 156, /* bc2:0 */
108 212, /* bc3:0 */
109 50, /* Xmaxc0:2 */
110 106, /* Xmaxc1:2 */
111 162, /* Xmaxc2:2 */
112 218, /* Xmaxc3:2 */
113 53, /* xmc0_0:2 */
114 56, /* xmc0_1:2 */
115 59, /* xmc0_2:2 */
116 62, /* xmc0_3:2 */
117 65, /* xmc0_4:2 */
118 68, /* xmc0_5:2 */
119 71, /* xmc0_6:2 */
120 74, /* xmc0_7:2 */
121 77, /* xmc0_8:2 */
122 80, /* xmc0_9:2 */
123 83, /* xmc0_10:2 */
124 86, /* xmc0_11:2 */
125 89, /* xmc0_12:2 */
126 109, /* xmc1_0:2 */
127 112, /* xmc1_1:2 */
128 115, /* xmc1_2:2 */
129 118, /* xmc1_3:2 */
130 121, /* xmc1_4:2 */
131 124, /* xmc1_5:2 */
132 127, /* xmc1_6:2 */
133 130, /* xmc1_7:2 */
134 133, /* xmc1_8:2 */
135 136, /* xmc1_9:2 */
136 139, /* xmc1_10:2 */
137 142, /* xmc1_11:2 */
138 145, /* xmc1_12:2 */
139 165, /* xmc2_0:2 */
140 168, /* xmc2_1:2 */
141 171, /* xmc2_2:2 */
142 174, /* xmc2_3:2 */
143 177, /* xmc2_4:2 */
144 180, /* xmc2_5:2 */
145 183, /* xmc2_6:2 */
146 186, /* xmc2_7:2 */
147 189, /* xmc2_8:2 */
148 192, /* xmc2_9:2 */
149 195, /* xmc2_10:2 */
150 198, /* xmc2_11:2 */
151 201, /* xmc2_12:2 */
152 221, /* xmc3_0:2 */
153 224, /* xmc3_1:2 */
154 227, /* xmc3_2:2 */
155 230, /* xmc3_3:2 */
156 233, /* xmc3_4:2 */
157 236, /* xmc3_5:2 */
158 239, /* xmc3_6:2 */
159 242, /* xmc3_7:2 */
160 245, /* xmc3_8:2 */
161 248, /* xmc3_9:2 */
162 251, /* xmc3_10:2 */
163 254, /* xmc3_11:2 */
164 257, /* xmc3_12:2 */
165 46, /* Mc0:0 */
166 102, /* Mc1:0 */
167 158, /* Mc2:0 */
168 214, /* Mc3:0 */
169 51, /* Xmaxc0:1 */
170 107, /* Xmaxc1:1 */
171 163, /* Xmaxc2:1 */
172 219, /* Xmaxc3:1 */
173 54, /* xmc0_0:1 */
174 57, /* xmc0_1:1 */
175 60, /* xmc0_2:1 */
176 63, /* xmc0_3:1 */
177 66, /* xmc0_4:1 */
178 69, /* xmc0_5:1 */
179 72, /* xmc0_6:1 */
180 75, /* xmc0_7:1 */
181 78, /* xmc0_8:1 */
182 81, /* xmc0_9:1 */
183 84, /* xmc0_10:1 */
184 87, /* xmc0_11:1 */
185 90, /* xmc0_12:1 */
186 110, /* xmc1_0:1 */
187 113, /* xmc1_1:1 */
188 116, /* xmc1_2:1 */
189 119, /* xmc1_3:1 */
190 122, /* xmc1_4:1 */
191 125, /* xmc1_5:1 */
192 128, /* xmc1_6:1 */
193 131, /* xmc1_7:1 */
194 134, /* xmc1_8:1 */
195 137, /* xmc1_9:1 */
196 140, /* xmc1_10:1 */
197 143, /* xmc1_11:1 */
198 146, /* xmc1_12:1 */
199 166, /* xmc2_0:1 */
200 169, /* xmc2_1:1 */
201 172, /* xmc2_2:1 */
202 175, /* xmc2_3:1 */
203 178, /* xmc2_4:1 */
204 181, /* xmc2_5:1 */
205 184, /* xmc2_6:1 */
206 187, /* xmc2_7:1 */
207 190, /* xmc2_8:1 */
208 193, /* xmc2_9:1 */
209 196, /* xmc2_10:1 */
210 199, /* xmc2_11:1 */
211 202, /* xmc2_12:1 */
212 222, /* xmc3_0:1 */
213 225, /* xmc3_1:1 */
214 228, /* xmc3_2:1 */
215 231, /* xmc3_3:1 */
216 234, /* xmc3_4:1 */
217 237, /* xmc3_5:1 */
218 240, /* xmc3_6:1 */
219 243, /* xmc3_7:1 */
220 246, /* xmc3_8:1 */
221 249, /* xmc3_9:1 */
222 252, /* xmc3_10:1 */
223 255, /* xmc3_11:1 */
224 258, /* xmc3_12:1 */
225 5, /* LARc0:0 */
226 10, /* LARc1:1 */
227 15, /* LARc2:1 */
228 28, /* LARc5:1 */
229 32, /* LARc6:0 */
230 34, /* LARc7:1 */
231 35, /* LARc7:0 */
232 16, /* LARc2:0 */
233 20, /* LARc3:1 */
234 21, /* LARc3:0 */
235 25, /* LARc4:0 */
236 52, /* Xmaxc0:0 */
237 108, /* Xmaxc1:0 */
238 164, /* Xmaxc2:0 */
239 220, /* Xmaxc3:0 */
240 55, /* xmc0_0:0 */
241 58, /* xmc0_1:0 */
242 61, /* xmc0_2:0 */
243 64, /* xmc0_3:0 */
244 67, /* xmc0_4:0 */
245 70, /* xmc0_5:0 */
246 73, /* xmc0_6:0 */
247 76, /* xmc0_7:0 */
248 79, /* xmc0_8:0 */
249 82, /* xmc0_9:0 */
250 85, /* xmc0_10:0 */
251 88, /* xmc0_11:0 */
252 91, /* xmc0_12:0 */
253 111, /* xmc1_0:0 */
254 114, /* xmc1_1:0 */
255 117, /* xmc1_2:0 */
256 120, /* xmc1_3:0 */
257 123, /* xmc1_4:0 */
258 126, /* xmc1_5:0 */
259 129, /* xmc1_6:0 */
260 132, /* xmc1_7:0 */
261 135, /* xmc1_8:0 */
262 138, /* xmc1_9:0 */
263 141, /* xmc1_10:0 */
264 144, /* xmc1_11:0 */
265 147, /* xmc1_12:0 */
266 167, /* xmc2_0:0 */
267 170, /* xmc2_1:0 */
268 173, /* xmc2_2:0 */
269 176, /* xmc2_3:0 */
270 179, /* xmc2_4:0 */
271 182, /* xmc2_5:0 */
272 185, /* xmc2_6:0 */
273 188, /* xmc2_7:0 */
274 191, /* xmc2_8:0 */
275 194, /* xmc2_9:0 */
276 197, /* xmc2_10:0 */
277 200, /* xmc2_11:0 */
278 203, /* xmc2_12:0 */
279 223, /* xmc3_0:0 */
280 226, /* xmc3_1:0 */
281 229, /* xmc3_2:0 */
282 232, /* xmc3_3:0 */
283 235, /* xmc3_4:0 */
284 238, /* xmc3_5:0 */
285 241, /* xmc3_6:0 */
286 244, /* xmc3_7:0 */
287 247, /* xmc3_8:0 */
288 250, /* xmc3_9:0 */
289 253, /* xmc3_10:0 */
290 256, /* xmc3_11:0 */
291 259, /* xmc3_12:0 */
292 11, /* LARc1:0 */
293 29, /* LARc5:0 */
294};