blob: f4ac9ad8c09661d6846c7373fe8a6d95eb6175a5 [file] [log] [blame]
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +02001/* GSM 06.20 - GSM HR 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 HR unvoiced (mode=0) frames - subjective importance bit ordering */
27 /* This array encode mapping between GSM 05.03 Table 3a (bits
28 * ordering before channel coding on TCH) and GSM 06.20 Table B.1
29 * (bit ordering on A-bis */
Diego Elio Pettenò23431c72012-06-29 13:01:27 -070030const uint16_t gsm620_unvoiced_bitorder[112] = {
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +020031 3, /* R0:1 */
32 25, /* LPC 3:7 */
33 52, /* GSP 0-1:2 */
34 71, /* GSP 0-2:2 */
35 90, /* GSP 0-3:2 */
36 109, /* GSP 0-4:2 */
37 15, /* LPC 1:0 */
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +020038 19, /* LPC 2:5 */
Sylvain Munauted8170a2013-03-01 16:35:46 +010039 20, /* LPC 2:4 */
40 21, /* LPC 2:3 */
41 22, /* LPC 2:2 */
42 23, /* LPC 2:1 */
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +020043 26, /* LPC 3:6 */
Sylvain Munauted8170a2013-03-01 16:35:46 +010044 27, /* LPC 3:5 */
45 28, /* LPC 3:4 */
46 29, /* LPC 3:3 */
47 30, /* LPC 3:2 */
48 31, /* LPC 3:1 */
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +020049 61, /* Code 1-2:0 */
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +020050 62, /* Code 2-2:6 */
Sylvain Munauted8170a2013-03-01 16:35:46 +010051 63, /* Code 2-2:5 */
52 64, /* Code 2-2:4 */
53 65, /* Code 2-2:3 */
54 66, /* Code 2-2:2 */
55 67, /* Code 2-2:1 */
56 68, /* Code 2-2:0 */
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +020057 74, /* Code 1-3:6 */
Sylvain Munauted8170a2013-03-01 16:35:46 +010058 75, /* Code 1-3:5 */
59 76, /* Code 1-3:4 */
60 77, /* Code 1-3:3 */
61 78, /* Code 1-3:2 */
62 79, /* Code 1-3:1 */
63 80, /* Code 1-3:0 */
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +020064 81, /* Code 2-3:6 */
Sylvain Munauted8170a2013-03-01 16:35:46 +010065 82, /* Code 2-3:5 */
66 83, /* Code 2-3:4 */
67 84, /* Code 2-3:3 */
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +020068 32, /* LPC 3:0 */
69 4, /* R0:0 */
70 33, /* INT-LPC:0 */
71 60, /* Code 1-2:1 */
72 59, /* Code 1-2:2 */
73 58, /* Code 1-2:3 */
74 57, /* Code 1-2:4 */
75 56, /* Code 1-2:5 */
76 55, /* Code 1-2:6 */
77 49, /* Code 2-1:0 */
78 48, /* Code 2-1:1 */
79 47, /* Code 2-1:2 */
80 46, /* Code 2-1:3 */
81 45, /* Code 2-1:4 */
82 44, /* Code 2-1:5 */
83 43, /* Code 2-1:6 */
84 42, /* Code 1-1:0 */
85 41, /* Code 1-1:1 */
86 40, /* Code 1-1:2 */
87 39, /* Code 1-1:3 */
88 38, /* Code 1-1:4 */
89 37, /* Code 1-1:5 */
90 36, /* Code 1-1:6 */
91 111, /* GSP 0-4:0 */
92 92, /* GSP 0-3:0 */
93 73, /* GSP 0-2:0 */
94 54, /* GSP 0-1:0 */
95 24, /* LPC 2:0 */
96 110, /* GSP 0-4:1 */
97 91, /* GSP 0-3:1 */
98 72, /* GSP 0-2:1 */
99 53, /* GSP 0-1:1 */
100 14, /* LPC 1:1 */
101 13, /* LPC 1:2 */
102 12, /* LPC 1:3 */
103 11, /* LPC 1:4 */
104 10, /* LPC 1:5 */
105 108, /* GSP 0-4:3 */
106 89, /* GSP 0-3:3 */
107 70, /* GSP 0-2:3 */
108 51, /* GSP 0-1:3 */
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +0200109 16, /* LPC 2:8 */
Sylvain Munauted8170a2013-03-01 16:35:46 +0100110 17, /* LPC 2:7 */
111 18, /* LPC 2:6 */
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +0200112 107, /* GSP 0-4:4 */
113 88, /* GSP 0-3:4 */
114 69, /* GSP 0-2:4 */
115 50, /* GSP 0-1:4 */
116 9, /* LPC 1:6 */
117 8, /* LPC 1:7 */
118 7, /* LPC 1:8 */
119 6, /* LPC 1:9 */
120 2, /* R0:2 */
121 5, /* LPC 1:10 */
122 1, /* R0:3 */
123 0, /* R0:4 */
124 35, /* Mode:0 */
125 34, /* Mode:1 */
126 106, /* Code 2-4:0 */
127 105, /* Code 2-4:1 */
128 104, /* Code 2-4:2 */
129 103, /* Code 2-4:3 */
130 102, /* Code 2-4:4 */
131 101, /* Code 2-4:5 */
132 100, /* Code 2-4:6 */
133 99, /* Code 1-4:0 */
134 98, /* Code 1-4:1 */
135 97, /* Code 1-4:2 */
136 96, /* Code 1-4:3 */
137 95, /* Code 1-4:4 */
138 94, /* Code 1-4:5 */
139 93, /* Code 1-4:6 */
140 87, /* Code 2-3:0 */
141 86, /* Code 2-3:1 */
142 85, /* Code 2-3:2 */
143};
144
145/* GSM HR voiced (mode=1,2,3) frames - subjective importance bit ordering */
146 /* This array encode mapping between GSM 05.03 Table 3b (bits
147 * ordering before channel coding on TCH) and GSM 06.20 Table B.2
148 * (bit ordering on A-bis */
Diego Elio Pettenò23431c72012-06-29 13:01:27 -0700149const uint16_t gsm620_voiced_bitorder[112] = {
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +0200150 13, /* LPC 1:2 */
151 14, /* LPC 1:1 */
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +0200152 18, /* LPC 2:6 */
Sylvain Munauted8170a2013-03-01 16:35:46 +0100153 19, /* LPC 2:5 */
154 20, /* LPC 2:4 */
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +0200155 53, /* GSP 0-1:4 */
156 71, /* GSP 0-2:4 */
157 89, /* GSP 0-3:4 */
158 107, /* GSP 0-4:4 */
159 54, /* GSP 0-1:3 */
160 72, /* GSP 0-2:3 */
161 90, /* GSP 0-3:3 */
162 108, /* GSP 0-4:3 */
163 55, /* GSP 0-1:2 */
164 73, /* GSP 0-2:2 */
165 91, /* GSP 0-3:2 */
166 109, /* GSP 0-4:2 */
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +0200167 44, /* Code 1:8 */
Sylvain Munauted8170a2013-03-01 16:35:46 +0100168 45, /* Code 1:7 */
169 46, /* Code 1:6 */
170 47, /* Code 1:5 */
171 48, /* Code 1:4 */
172 49, /* Code 1:3 */
173 50, /* Code 1:2 */
174 51, /* Code 1:1 */
175 52, /* Code 1:0 */
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +0200176 62, /* Code 2:8 */
Sylvain Munauted8170a2013-03-01 16:35:46 +0100177 63, /* Code 2:7 */
178 64, /* Code 2:6 */
179 65, /* Code 2:5 */
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +0200180 68, /* Code 2:2 */
Sylvain Munauted8170a2013-03-01 16:35:46 +0100181 69, /* Code 2:1 */
182 70, /* Code 2:0 */
Sylvain Munaut1a4ea5b2010-10-08 15:09:16 +0200183 80, /* Code 3:8 */
184 66, /* Code 2:4 */
185 67, /* Code 2:3 */
186 56, /* GSP 0-1:1 */
187 74, /* GSP 0-2:1 */
188 92, /* GSP 0-3:1 */
189 110, /* GSP 0-4:1 */
190 57, /* GSP 0-1:0 */
191 75, /* GSP 0-2:0 */
192 93, /* GSP 0-3:0 */
193 111, /* GSP 0-4:0 */
194 33, /* INT-LPC:0 */
195 24, /* LPC 2:0 */
196 32, /* LPC 3:0 */
197 97, /* LAG 4:0 */
198 31, /* LPC 3:1 */
199 23, /* LPC 2:1 */
200 96, /* LAG 4:1 */
201 79, /* LAG 3:0 */
202 61, /* LAG 2:0 */
203 43, /* LAG 1:0 */
204 95, /* LAG 4:2 */
205 78, /* LAG 3:1 */
206 60, /* LAG 2:1 */
207 42, /* LAG 1:1 */
208 30, /* LPC 3:2 */
209 29, /* LPC 3:3 */
210 28, /* LPC 3:4 */
211 22, /* LPC 2:2 */
212 27, /* LPC 3:5 */
213 26, /* LPC 3:6 */
214 21, /* LPC 2:3 */
215 4, /* R0:0 */
216 25, /* LPC 3:7 */
217 15, /* LPC 1:0 */
218 94, /* LAG 4:3 */
219 77, /* LAG 3:2 */
220 59, /* LAG 2:2 */
221 41, /* LAG 1:2 */
222 3, /* R0:1 */
223 76, /* LAG 3:3 */
224 58, /* LAG 2:3 */
225 40, /* LAG 1:3 */
226 39, /* LAG 1:4 */
227 17, /* LPC 2:7 */
228 16, /* LPC 2:8 */
229 12, /* LPC 1:3 */
230 11, /* LPC 1:4 */
231 10, /* LPC 1:5 */
232 9, /* LPC 1:6 */
233 2, /* R0:2 */
234 38, /* LAG 1:5 */
235 37, /* LAG 1:6 */
236 36, /* LAG 1:7 */
237 8, /* LPC 1:7 */
238 7, /* LPC 1:8 */
239 6, /* LPC 1:9 */
240 5, /* LPC 1:10 */
241 1, /* R0:3 */
242 0, /* R0:4 */
243 35, /* Mode:0 */
244 34, /* Mode:1 */
245 106, /* Code 4:0 */
246 105, /* Code 4:1 */
247 104, /* Code 4:2 */
248 103, /* Code 4:3 */
249 102, /* Code 4:4 */
250 101, /* Code 4:5 */
251 100, /* Code 4:6 */
252 99, /* Code 4:7 */
253 98, /* Code 4:8 */
254 88, /* Code 3:0 */
255 87, /* Code 3:1 */
256 86, /* Code 3:2 */
257 85, /* Code 3:3 */
258 84, /* Code 3:4 */
259 83, /* Code 3:5 */
260 82, /* Code 3:6 */
261 81, /* Code 3:7 */
262};