3 * Copyright (c) 2007 Konstantin Shishkov
5 * This file is part of FFmpeg.
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22 #ifndef AVCODEC_MPC8HUFF_H
23 #define AVCODEC_MPC8HUFF_H
27 #define MPC8_BANDS_SIZE 33
28 #define MPC8_BANDS_BITS 9
30 static const uint8_t mpc8_bands_codes
[MPC8_BANDS_SIZE
] = {
31 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04,
32 0x05, 0x06, 0x01, 0x02, 0x03, 0x00, 0x04, 0x05,
33 0x06, 0x07, 0x08, 0x01, 0x09, 0x0A, 0x0B, 0x07,
34 0x08, 0x09, 0x06, 0x07, 0x05, 0x05, 0x03, 0x03,
37 static const int8_t mpc8_bands_bits
[MPC8_BANDS_SIZE
] = {
38 1, 3, 5, 6, 7, 8, 8, 9,
39 10, 11, 12, 12, 12, 13, 12, 12,
40 12, 12, 12, 13, 12, 12, 12, 11,
41 11, 11, 10, 10, 9, 8, 6, 5,
45 #define MPC8_SCFI0_SIZE 4
46 #define MPC8_SCFI0_BITS 3
48 static const uint8_t mpc8_scfi0_codes
[MPC8_SCFI0_SIZE
] = {
49 0x00, 0x01, 0x01, 0x01,
51 static const int8_t mpc8_scfi0_bits
[MPC8_SCFI0_SIZE
] = {
55 #define MPC8_SCFI1_SIZE 16
56 #define MPC8_SCFI1_BITS 7
58 static const uint8_t mpc8_scfi1_codes
[MPC8_SCFI1_SIZE
] = {
59 0x01, 0x00, 0x02, 0x03, 0x01, 0x03, 0x04, 0x05,
60 0x04, 0x06, 0x02, 0x02, 0x05, 0x07, 0x03, 0x03,
63 static const int8_t mpc8_scfi1_bits
[MPC8_SCFI1_SIZE
] = {
64 6, 7, 6, 6, 7, 5, 5, 5,
65 6, 5, 2, 3, 6, 5, 3, 2,
69 #define MPC8_DSCF0_SIZE 64
70 #define MPC8_DSCF0_BITS 9
72 static const uint8_t mpc8_dscf0_codes
[MPC8_DSCF0_SIZE
] = {
73 0x03, 0x04, 0x05, 0x04, 0x05, 0x06, 0x05, 0x06,
74 0x07, 0x08, 0x09, 0x07, 0x08, 0x09, 0x0A, 0x07,
75 0x08, 0x09, 0x0A, 0x07, 0x08, 0x09, 0x0A, 0x06,
76 0x07, 0x05, 0x04, 0x05, 0x06, 0x06, 0x07, 0x0A,
77 0x08, 0x05, 0x06, 0x07, 0x09, 0x07, 0x08, 0x09,
78 0x0B, 0x0B, 0x0C, 0x0D, 0x0B, 0x0C, 0x0D, 0x0B,
79 0x0C, 0x0D, 0x07, 0x08, 0x09, 0x06, 0x07, 0x03,
80 0x04, 0x05, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
82 static const int8_t mpc8_dscf0_bits
[MPC8_DSCF0_SIZE
] = {
83 12, 12, 12, 11, 11, 11, 10, 10,
84 10, 10, 10, 9, 9, 9, 9, 8,
85 8, 8, 8, 7, 7, 7, 7, 6,
86 6, 5, 4, 4, 5, 4, 4, 10,
87 4, 3, 3, 3, 4, 5, 6, 6,
88 7, 8, 8, 8, 9, 9, 9, 10,
89 10, 10, 11, 11, 11, 12, 12, 13,
90 13, 13, 14, 14, 14, 14, 14, 14,
94 #define MPC8_DSCF1_SIZE 65
95 #define MPC8_DSCF1_BITS 9
97 static const uint8_t mpc8_dscf1_codes
[MPC8_DSCF1_SIZE
] = {
98 0x00, 0x03, 0x04, 0x04, 0x05, 0x06, 0x05, 0x06,
99 0x07, 0x08, 0x07, 0x08, 0x09, 0x0A, 0x07, 0x08,
100 0x09, 0x0A, 0x07, 0x08, 0x09, 0x06, 0x07, 0x05,
101 0x06, 0x04, 0x03, 0x03, 0x04, 0x03, 0x04, 0x05,
102 0x06, 0x07, 0x05, 0x04, 0x05, 0x05, 0x07, 0x08,
103 0x09, 0x0A, 0x0B, 0x0B, 0x0C, 0x0D, 0x0B, 0x0C,
104 0x0D, 0x09, 0x0A, 0x0B, 0x0C, 0x07, 0x08, 0x09,
105 0x05, 0x06, 0x07, 0x01, 0x02, 0x03, 0x04, 0x05,
108 static const int8_t mpc8_dscf1_bits
[MPC8_DSCF1_SIZE
] = {
109 15, 14, 14, 13, 13, 13, 12, 12,
110 12, 12, 11, 11, 11, 11, 10, 10,
111 10, 10, 9, 9, 9, 8, 8, 7,
112 7, 6, 5, 4, 4, 3, 3, 3,
113 3, 3, 4, 5, 5, 6, 7, 8,
114 8, 9, 9, 10, 10, 10, 11, 11,
115 11, 12, 12, 12, 12, 13, 13, 13,
116 14, 14, 14, 15, 15, 15, 15, 15,
120 #define MPC8_RES_SIZE 17
121 #define MPC8_RES_BITS 9
123 static const uint8_t mpc8_res_codes
[2][MPC8_RES_SIZE
] = {
125 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
126 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01,
130 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
131 0x00, 0x01, 0x02, 0x03, 0x01, 0x01, 0x01, 0x01,
135 static const int8_t mpc8_res_bits
[2][MPC8_RES_SIZE
] = {
137 1, 2, 4, 5, 6, 7, 9, 10,
138 11, 12, 13, 14, 15, 16, 16, 8,
142 2, 2, 3, 5, 7, 8, 10, 12,
143 14, 14, 14, 14, 11, 9, 6, 4,
148 #define MPC8_Q1_SIZE 19
149 #define MPC8_Q1_BITS 9
151 static const uint8_t mpc8_q1_codes
[MPC8_Q1_SIZE
] = {
152 0x01, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
153 0x03, 0x04, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01,
156 static const int8_t mpc8_q1_bits
[MPC8_Q1_SIZE
] = {
157 6, 4, 4, 3, 3, 3, 3, 3,
158 4, 4, 4, 5, 7, 8, 9, 10,
162 #define MPC8_Q9UP_SIZE 256
163 #define MPC8_Q9UP_BITS 9
165 static const uint8_t mpc8_q9up_codes
[MPC8_Q9UP_SIZE
] = {
166 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x06, 0x07,
167 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
168 0x10, 0x11, 0x12, 0x26, 0x27, 0x13, 0x14, 0x15,
169 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D,
170 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
171 0x28, 0x26, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E,
172 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
173 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E,
174 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46,
175 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E,
176 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56,
177 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E,
178 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66,
179 0x67, 0x68, 0x69, 0x6A, 0x56, 0x57, 0x58, 0x59,
180 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61,
181 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x3E,
182 0x3F, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
183 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
184 0x78, 0x79, 0x7A, 0x6B, 0x7B, 0x6C, 0x6D, 0x6E,
185 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76,
186 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E,
187 0x7F, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86,
188 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E,
189 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
190 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E,
191 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6,
192 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0x27, 0x28, 0x29,
193 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31,
194 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
195 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41,
196 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
197 0x4A, 0x4B, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01,
199 static const int8_t mpc8_q9up_bits
[MPC8_Q9UP_SIZE
] = {
200 10, 10, 10, 10, 10, 9, 9, 9,
201 9, 9, 9, 9, 9, 9, 9, 9,
202 9, 9, 9, 8, 8, 9, 9, 9,
203 9, 9, 9, 9, 9, 9, 9, 9,
204 9, 9, 9, 9, 9, 9, 9, 9,
205 8, 9, 8, 8, 8, 8, 8, 8,
206 8, 8, 8, 8, 8, 8, 8, 8,
207 8, 8, 8, 8, 8, 8, 8, 8,
208 8, 8, 8, 8, 8, 8, 8, 8,
209 8, 8, 8, 8, 8, 8, 8, 8,
210 8, 8, 8, 8, 8, 8, 8, 8,
211 8, 8, 8, 8, 8, 8, 8, 8,
212 8, 8, 8, 8, 8, 8, 8, 8,
213 8, 8, 8, 8, 7, 7, 7, 7,
214 7, 7, 7, 7, 7, 7, 7, 7,
215 7, 7, 7, 7, 7, 7, 7, 6,
216 6, 7, 7, 7, 7, 7, 7, 7,
217 7, 7, 7, 7, 7, 7, 7, 7,
218 7, 7, 7, 8, 7, 8, 8, 8,
219 8, 8, 8, 8, 8, 8, 8, 8,
220 8, 8, 8, 8, 8, 8, 8, 8,
221 8, 8, 8, 8, 8, 8, 8, 8,
222 8, 8, 8, 8, 8, 8, 8, 8,
223 8, 8, 8, 8, 8, 8, 8, 8,
224 8, 8, 8, 8, 8, 8, 8, 8,
225 8, 8, 8, 8, 8, 8, 8, 8,
226 8, 8, 8, 8, 8, 9, 9, 9,
227 9, 9, 9, 9, 9, 9, 9, 9,
228 9, 9, 9, 9, 9, 9, 9, 9,
229 9, 9, 9, 9, 9, 9, 9, 9,
230 9, 9, 9, 9, 9, 9, 9, 9,
231 9, 9, 10, 10, 10, 10, 11, 11,
234 #define MPC8_Q2_SIZE 125
235 #define MPC8_Q2_BITS 9
237 static const uint8_t mpc8_q2_codes
[2][MPC8_Q2_SIZE
] = {
239 0x02, 0x03, 0x0F, 0x04, 0x00, 0x05, 0x0C, 0x12,
240 0x0D, 0x06, 0x07, 0x13, 0x15, 0x14, 0x08, 0x09,
241 0x0E, 0x15, 0x0F, 0x0A, 0x03, 0x0B, 0x10, 0x0C,
242 0x01, 0x0D, 0x10, 0x16, 0x11, 0x0E, 0x12, 0x0F,
243 0x10, 0x16, 0x13, 0x17, 0x11, 0x08, 0x12, 0x18,
244 0x14, 0x13, 0x14, 0x17, 0x15, 0x0F, 0x16, 0x19,
245 0x17, 0x10, 0x11, 0x1A, 0x18, 0x1B, 0x12, 0x1C,
246 0x15, 0x09, 0x16, 0x1D, 0x19, 0x0A, 0x07, 0x0B,
247 0x1A, 0x1E, 0x17, 0x0C, 0x18, 0x1F, 0x13, 0x20,
248 0x1B, 0x21, 0x14, 0x11, 0x18, 0x22, 0x19, 0x12,
249 0x1A, 0x19, 0x1A, 0x1B, 0x1B, 0x23, 0x1C, 0x0D,
250 0x1D, 0x24, 0x1C, 0x1C, 0x1E, 0x1F, 0x1D, 0x13,
251 0x1E, 0x25, 0x1F, 0x14, 0x02, 0x15, 0x15, 0x16,
252 0x04, 0x17, 0x20, 0x26, 0x21, 0x18, 0x16, 0x27,
253 0x1D, 0x28, 0x19, 0x1A, 0x22, 0x29, 0x23, 0x1B,
254 0x03, 0x1C, 0x17, 0x1D, 0x05,
257 0x02, 0x03, 0x0F, 0x04, 0x00, 0x05, 0x0C, 0x0D,
258 0x0E, 0x06, 0x07, 0x0F, 0x1E, 0x10, 0x10, 0x08,
259 0x11, 0x12, 0x13, 0x09, 0x03, 0x0A, 0x11, 0x0B,
260 0x01, 0x0C, 0x14, 0x15, 0x16, 0x0D, 0x17, 0x12,
261 0x0E, 0x13, 0x18, 0x19, 0x14, 0x0F, 0x10, 0x1A,
262 0x1B, 0x15, 0x11, 0x16, 0x1C, 0x0E, 0x1D, 0x1E,
263 0x1F, 0x0F, 0x12, 0x20, 0x1F, 0x21, 0x13, 0x22,
264 0x12, 0x13, 0x14, 0x23, 0x20, 0x15, 0x0F, 0x16,
265 0x21, 0x24, 0x17, 0x18, 0x19, 0x25, 0x14, 0x26,
266 0x22, 0x27, 0x15, 0x10, 0x28, 0x29, 0x2A, 0x11,
267 0x2B, 0x17, 0x1A, 0x18, 0x2C, 0x2D, 0x1B, 0x1C,
268 0x19, 0x2E, 0x2F, 0x1A, 0x1D, 0x1B, 0x30, 0x12,
269 0x31, 0x32, 0x33, 0x13, 0x02, 0x14, 0x15, 0x16,
270 0x04, 0x17, 0x34, 0x35, 0x36, 0x18, 0x16, 0x37,
271 0x23, 0x38, 0x19, 0x1A, 0x39, 0x3A, 0x3B, 0x1B,
272 0x03, 0x1C, 0x17, 0x1D, 0x05,
275 static const int8_t mpc8_q2_bits
[2][MPC8_Q2_SIZE
] = {
277 12, 11, 10, 11, 13, 11, 9, 8,
278 9, 11, 11, 8, 7, 8, 11, 11,
279 9, 8, 9, 11, 12, 11, 10, 11,
280 13, 11, 9, 8, 9, 11, 9, 6,
281 6, 7, 9, 8, 6, 4, 6, 8,
282 9, 6, 6, 7, 9, 11, 9, 8,
283 9, 11, 10, 8, 7, 8, 10, 8,
284 6, 4, 6, 8, 7, 4, 3, 4,
285 7, 8, 6, 4, 6, 8, 10, 8,
286 7, 8, 10, 11, 9, 8, 9, 11,
287 9, 6, 6, 6, 9, 8, 6, 4,
288 6, 8, 9, 7, 6, 6, 9, 11,
289 9, 8, 9, 11, 13, 11, 10, 11,
290 12, 11, 9, 8, 9, 11, 10, 8,
291 7, 8, 11, 11, 9, 8, 9, 11,
295 11, 10, 9, 10, 12, 10, 8, 8,
296 8, 10, 10, 8, 7, 8, 9, 10,
297 8, 8, 8, 10, 11, 10, 9, 10,
298 12, 10, 8, 8, 8, 10, 8, 6,
299 5, 6, 8, 8, 6, 5, 5, 8,
300 8, 6, 5, 6, 8, 10, 8, 8,
301 8, 10, 9, 8, 7, 8, 9, 8,
302 5, 5, 5, 8, 7, 5, 4, 5,
303 7, 8, 5, 5, 5, 8, 9, 8,
304 7, 8, 9, 10, 8, 8, 8, 10,
305 8, 6, 5, 6, 8, 8, 5, 5,
306 6, 8, 8, 6, 5, 6, 8, 10,
307 8, 8, 8, 10, 12, 10, 10, 10,
308 11, 10, 8, 8, 8, 10, 9, 8,
309 7, 8, 10, 10, 8, 8, 8, 10,
314 #define MPC8_Q3_SIZE 49
315 #define MPC8_Q3_BITS 9
316 #define MPC8_Q3_OFFSET -48
318 static const uint8_t mpc8_q3_codes
[MPC8_Q3_SIZE
] = {
319 0x07, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x0F,
320 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x13, 0x12, 0x11,
321 0x10, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09,
322 0x11, 0x10, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A,
323 0x09, 0x08, 0x07, 0x06, 0x05, 0x09, 0x08, 0x07,
324 0x06, 0x05, 0x04, 0x03, 0x02, 0x03, 0x02, 0x01,
327 static const int8_t mpc8_q3_bits
[MPC8_Q3_SIZE
] = {
328 3, 4, 4, 4, 4, 4, 4, 5,
329 5, 5, 5, 5, 5, 6, 6, 6,
330 6, 6, 6, 6, 6, 6, 6, 6,
331 7, 7, 7, 7, 7, 7, 7, 7,
332 7, 7, 7, 7, 7, 8, 8, 8,
333 8, 8, 8, 8, 8, 9, 9, 9,
336 static const int8_t mpc8_q3_syms
[MPC8_Q3_SIZE
] = {
337 48, 65, 64, 49, 63, 32, 47, 80,
338 79, 50, 62, 33, 16, 82, 81, 95,
339 94, 66, 78, 34, 46, 17, 31, 30,
340 97, 96, 111, 67, 77, 51, 61, 35,
341 45, 18, 1, 0, 15, 98, 110, 83,
342 93, 19, 29, 2, 14, 99, 109, 3,
346 #define MPC8_Q4_SIZE 81
347 #define MPC8_Q4_BITS 9
348 #define MPC8_Q4_OFFSET -64
350 static const uint8_t mpc8_q4_codes
[MPC8_Q4_SIZE
] = {
351 0x0F, 0x1D, 0x1C, 0x1B, 0x1A, 0x19, 0x18, 0x17,
352 0x16, 0x15, 0x14, 0x13, 0x12, 0x23, 0x22, 0x21,
353 0x20, 0x1F, 0x1E, 0x1D, 0x1C, 0x1B, 0x1A, 0x19,
354 0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11,
355 0x10, 0x0F, 0x0E, 0x0D, 0x19, 0x18, 0x17, 0x16,
356 0x15, 0x14, 0x13, 0x12, 0x11, 0x10, 0x0F, 0x0E,
357 0x0D, 0x0C, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12,
358 0x11, 0x10, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A,
359 0x09, 0x08, 0x07, 0x06, 0x05, 0x09, 0x08, 0x07,
360 0x06, 0x05, 0x04, 0x03, 0x02, 0x03, 0x02, 0x01,
363 static const int8_t mpc8_q4_bits
[MPC8_Q4_SIZE
] = {
364 4, 5, 5, 5, 5, 5, 5, 5,
365 5, 5, 5, 5, 5, 6, 6, 6,
366 6, 6, 6, 6, 6, 6, 6, 6,
367 6, 6, 6, 6, 6, 6, 6, 6,
368 6, 6, 6, 6, 7, 7, 7, 7,
369 7, 7, 7, 7, 7, 7, 7, 7,
370 7, 7, 8, 8, 8, 8, 8, 8,
371 8, 8, 8, 8, 8, 8, 8, 8,
372 8, 8, 8, 8, 8, 9, 9, 9,
373 9, 9, 9, 9, 9, 10, 10, 10,
376 static const int8_t mpc8_q4_syms
[MPC8_Q4_SIZE
] = {
377 64, 96, 81, 80, 95, 66, 65, 79,
378 78, 49, 48, 63, 32, 113, 112, 98,
379 97, 111, 110, 83, 82, 94, 93, 67,
380 77, 51, 50, 62, 61, 34, 33, 47,
381 46, 17, 16, 31, 128, 114, 127, 126,
382 99, 109, 68, 76, 35, 45, 18, 30,
383 0, 15, 130, 129, 143, 142, 115, 125,
384 100, 108, 84, 92, 52, 60, 36, 44,
385 19, 29, 2, 1, 14, 131, 141, 116,
386 124, 20, 28, 3, 13, 132, 140, 4,
390 #define MPC8_Q5_SIZE 15
391 #define MPC8_Q5_BITS 7
392 #define MPC8_Q5_OFFSET -7
394 static const uint8_t mpc8_q5_codes
[2][MPC8_Q5_SIZE
] = {
396 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03,
397 0x04, 0x05, 0x03, 0x03, 0x03, 0x02, 0x03,
400 0x00, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x05,
401 0x06, 0x07, 0x04, 0x05, 0x03, 0x02, 0x03,
404 static const int8_t mpc8_q5_bits
[2][MPC8_Q5_SIZE
] = {
406 7, 7, 6, 5, 4, 3, 3, 2,
410 6, 6, 5, 4, 4, 3, 3, 3,
415 #define MPC8_Q6_SIZE 31
416 #define MPC8_Q6_BITS 9
417 #define MPC8_Q6_OFFSET -15
419 static const uint8_t mpc8_q6_codes
[2][MPC8_Q6_SIZE
] = {
421 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x04, 0x03,
422 0x04, 0x05, 0x05, 0x06, 0x04, 0x05, 0x04, 0x03,
423 0x05, 0x06, 0x07, 0x07, 0x06, 0x07, 0x08, 0x09,
424 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07,
427 0x00, 0x01, 0x02, 0x03, 0x04, 0x04, 0x05, 0x04,
428 0x05, 0x06, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A,
429 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x07, 0x08, 0x09,
430 0x06, 0x07, 0x05, 0x06, 0x07, 0x02, 0x03,
433 static const int8_t mpc8_q6_bits
[2][MPC8_Q6_SIZE
] = {
435 9, 9, 9, 9, 8, 8, 7, 6,
436 6, 6, 5, 5, 4, 4, 3, 2,
437 3, 4, 4, 5, 6, 6, 6, 6,
441 8, 8, 7, 7, 7, 6, 6, 5,
442 5, 5, 4, 4, 4, 4, 4, 4,
443 4, 4, 4, 4, 4, 5, 5, 5,
448 #define MPC8_Q7_SIZE 63
449 #define MPC8_Q7_BITS 9
450 #define MPC8_Q7_OFFSET -31
452 static const uint8_t mpc8_q7_codes
[2][MPC8_Q7_SIZE
] = {
454 0x00, 0x01, 0x02, 0x08, 0x09, 0x03, 0x04, 0x05,
455 0x06, 0x07, 0x0A, 0x0B, 0x0C, 0x0D, 0x0A, 0x0B,
456 0x0C, 0x0D, 0x0E, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E,
457 0x0A, 0x0B, 0x0C, 0x08, 0x09, 0x06, 0x04, 0x03,
458 0x05, 0x07, 0x0A, 0x0B, 0x0D, 0x0E, 0x0F, 0x0F,
459 0x10, 0x11, 0x12, 0x0F, 0x13, 0x10, 0x11, 0x12,
460 0x13, 0x0E, 0x0F, 0x10, 0x11, 0x08, 0x09, 0x0A,
461 0x0B, 0x0C, 0x12, 0x13, 0x0D, 0x0E, 0x0F,
464 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
465 0x08, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x09, 0x0A,
466 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x0C, 0x0D,
467 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15,
468 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D,
469 0x1E, 0x1F, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
470 0x17, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x09, 0x0A,
471 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x02, 0x03,
474 static const int8_t mpc8_q7_bits
[2][MPC8_Q7_SIZE
] = {
476 10, 10, 10, 9, 9, 10, 10, 10,
477 10, 10, 9, 9, 9, 9, 8, 8,
478 8, 8, 8, 7, 7, 7, 7, 7,
479 6, 6, 6, 5, 5, 4, 3, 2,
480 3, 4, 5, 5, 6, 6, 6, 7,
481 7, 7, 7, 8, 7, 8, 8, 8,
482 8, 9, 9, 9, 9, 10, 10, 10,
483 10, 10, 9, 9, 10, 10, 10,
486 9, 9, 8, 8, 8, 8, 8, 8,
487 8, 7, 7, 7, 7, 7, 6, 6,
488 6, 6, 6, 6, 6, 6, 5, 5,
489 5, 5, 5, 5, 5, 5, 5, 5,
490 5, 5, 5, 5, 5, 5, 5, 5,
491 5, 5, 6, 6, 6, 6, 6, 6,
492 6, 7, 7, 7, 7, 7, 8, 8,
497 #define MPC8_Q8_SIZE 127
498 #define MPC8_Q8_BITS 9
499 #define MPC8_Q8_OFFSET -63
501 static const uint8_t mpc8_q8_codes
[2][MPC8_Q8_SIZE
] = {
503 0x03, 0x04, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x1A,
504 0x0F, 0x1B, 0x10, 0x00, 0x01, 0x05, 0x06, 0x07,
505 0x08, 0x09, 0x0A, 0x0B, 0x11, 0x0C, 0x12, 0x13,
506 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1C, 0x1A,
507 0x1B, 0x1C, 0x1D, 0x1E, 0x1D, 0x1E, 0x1F, 0x20,
508 0x21, 0x22, 0x23, 0x24, 0x19, 0x25, 0x1A, 0x1B,
509 0x1C, 0x1D, 0x1E, 0x1F, 0x14, 0x15, 0x16, 0x17,
510 0x0E, 0x0F, 0x10, 0x11, 0x0B, 0x07, 0x04, 0x03,
511 0x05, 0x0C, 0x0D, 0x12, 0x13, 0x14, 0x15, 0x18,
512 0x19, 0x1A, 0x1B, 0x20, 0x21, 0x22, 0x23, 0x24,
513 0x25, 0x26, 0x27, 0x26, 0x27, 0x28, 0x29, 0x2A,
514 0x2B, 0x2C, 0x2D, 0x2E, 0x1F, 0x20, 0x2F, 0x21,
515 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29,
516 0x0D, 0x0E, 0x2A, 0x0F, 0x10, 0x11, 0x12, 0x02,
517 0x13, 0x03, 0x04, 0x05, 0x2B, 0x2C, 0x30, 0x31,
518 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33,
521 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
522 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
523 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x15, 0x16,
524 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E,
525 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26,
526 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E,
527 0x2F, 0x30, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B,
528 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33,
529 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B,
530 0x3C, 0x3D, 0x3E, 0x31, 0x3F, 0x32, 0x33, 0x34,
531 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C,
532 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44,
533 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x16,
534 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E,
535 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26,
536 0x27, 0x28, 0x29, 0x04, 0x05, 0x06, 0x07,
539 static const int8_t mpc8_q8_bits
[2][MPC8_Q8_SIZE
] = {
541 11, 11, 10, 10, 10, 10, 10, 9,
542 10, 9, 10, 12, 12, 11, 11, 11,
543 11, 11, 11, 11, 10, 11, 10, 10,
544 10, 10, 10, 10, 10, 10, 9, 10,
545 10, 10, 10, 10, 9, 9, 9, 9,
546 9, 9, 9, 9, 8, 9, 8, 8,
547 8, 8, 8, 8, 7, 7, 7, 7,
548 6, 6, 6, 6, 5, 4, 3, 2,
549 3, 5, 5, 6, 6, 6, 6, 7,
550 7, 7, 7, 8, 8, 8, 8, 8,
551 8, 8, 8, 9, 9, 9, 9, 9,
552 9, 9, 9, 9, 10, 10, 9, 10,
553 10, 10, 10, 10, 10, 10, 10, 10,
554 11, 11, 10, 11, 11, 11, 11, 12,
555 11, 12, 12, 12, 10, 10, 9, 9,
556 10, 10, 10, 10, 10, 10, 10,
559 9, 9, 9, 9, 8, 8, 8, 8,
560 8, 8, 8, 8, 8, 8, 8, 8,
561 8, 8, 8, 8, 8, 8, 7, 7,
562 7, 7, 7, 7, 7, 7, 7, 7,
563 7, 7, 7, 7, 7, 7, 7, 7,
564 7, 7, 7, 7, 7, 7, 7, 7,
565 7, 7, 6, 6, 6, 6, 6, 6,
566 6, 6, 6, 6, 6, 6, 6, 6,
567 6, 6, 6, 6, 6, 6, 6, 6,
568 6, 6, 6, 7, 6, 7, 7, 7,
569 7, 7, 7, 7, 7, 7, 7, 7,
570 7, 7, 7, 7, 7, 7, 7, 7,
571 7, 7, 7, 7, 7, 7, 7, 8,
572 8, 8, 8, 8, 8, 8, 8, 8,
573 8, 8, 8, 8, 8, 8, 8, 8,
578 #endif /* AVCODEC_MPC8HUFF_H */