Statistics
| Branch: | Revision:

ffmpeg / libavcodec / mpc8huff.h @ 2912e87a

History | View | Annotate | Download (18.2 KB)

1
/*
2
 * Musepack SV8 decoder
3
 * Copyright (c) 2007 Konstantin Shishkov
4
 *
5
 * This file is part of Libav.
6
 *
7
 * Libav 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.
11
 *
12
 * Libav 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.
16
 *
17
 * You should have received a copy of the GNU Lesser General Public
18
 * License along with Libav; if not, write to the Free Software
19
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
 */
21

    
22
#ifndef AVCODEC_MPC8HUFF_H
23
#define AVCODEC_MPC8HUFF_H
24

    
25
#include <stdint.h>
26

    
27
#define MPC8_BANDS_SIZE 33
28
#define MPC8_BANDS_BITS 9
29

    
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,
35
 0x01,
36
};
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,
42
  2,
43
};
44

    
45
#define MPC8_SCFI0_SIZE 4
46
#define MPC8_SCFI0_BITS 3
47

    
48
static const uint8_t mpc8_scfi0_codes[MPC8_SCFI0_SIZE] = {
49
 0x00, 0x01, 0x01, 0x01,
50
};
51
static const int8_t mpc8_scfi0_bits[MPC8_SCFI0_SIZE] = {
52
  3,  3,  1,  2,
53
};
54

    
55
#define MPC8_SCFI1_SIZE 16
56
#define MPC8_SCFI1_BITS 7
57

    
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,
61

    
62
};
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,
66

    
67
};
68

    
69
#define MPC8_DSCF0_SIZE 64
70
#define MPC8_DSCF0_BITS 9
71

    
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,
81
};
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,
91

    
92
};
93

    
94
#define MPC8_DSCF1_SIZE 65
95
#define MPC8_DSCF1_BITS 9
96

    
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,
106
 0x0D,
107
};
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,
117
 12,
118
};
119

    
120
#define MPC8_RES_SIZE 17
121
#define MPC8_RES_BITS 9
122

    
123
static const uint8_t mpc8_res_codes[2][MPC8_RES_SIZE] = {
124
  {
125
    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
126
    0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01,
127
    0x01,
128
  },
129
  {
130
    0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
131
    0x00, 0x01, 0x02, 0x03, 0x01, 0x01, 0x01, 0x01,
132
    0x03,
133
  }
134
};
135
static const int8_t mpc8_res_bits[2][MPC8_RES_SIZE] = {
136
  {
137
     1,  2,  4,  5,  6,  7,  9, 10,
138
    11, 12, 13, 14, 15, 16, 16,  8,
139
     3,
140
  },
141
  {
142
     2,  2,  3,  5,  7,  8, 10, 12,
143
    14, 14, 14, 14, 11,  9,  6,  4,
144
     2,
145
  }
146
};
147

    
148
#define MPC8_Q1_SIZE 19
149
#define MPC8_Q1_BITS 9
150

    
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,
154
 0x01, 0x00, 0x01,
155
};
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,
159
 11, 12, 12,
160
};
161

    
162
#define MPC8_Q9UP_SIZE 256
163
#define MPC8_Q9UP_BITS 9
164

    
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,
198
};
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,
232
};
233

    
234
#define MPC8_Q2_SIZE 125
235
#define MPC8_Q2_BITS 9
236

    
237
static const uint8_t mpc8_q2_codes[2][MPC8_Q2_SIZE] = {
238
{
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,
255
},
256
{
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,
273
}
274
};
275
static const int8_t mpc8_q2_bits[2][MPC8_Q2_SIZE] = {
276
{
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,
292
 13, 11, 10, 11, 12,
293
},
294
{
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,
310
 12, 10,  9, 10, 11,
311
}
312
};
313

    
314
#define MPC8_Q3_SIZE 49
315
#define MPC8_Q3_BITS 9
316
#define MPC8_Q3_OFFSET -48
317

    
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,
325
 0x00,
326
};
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,
334
  9,
335
};
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,
343
   13,
344
};
345

    
346
#define MPC8_Q4_SIZE 81
347
#define MPC8_Q4_BITS 9
348
#define MPC8_Q4_OFFSET -64
349

    
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,
361
 0x00,
362
};
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,
374
 10,
375
};
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,
387
   12,
388
};
389

    
390
#define MPC8_Q5_SIZE 15
391
#define MPC8_Q5_BITS 7
392
#define MPC8_Q5_OFFSET -7
393

    
394
static const uint8_t mpc8_q5_codes[2][MPC8_Q5_SIZE] = {
395
{
396
 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03,
397
 0x04, 0x05, 0x03, 0x03, 0x03, 0x02, 0x03,
398
},
399
{
400
 0x00, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x05,
401
 0x06, 0x07, 0x04, 0x05, 0x03, 0x02, 0x03,
402
}
403
};
404
static const int8_t mpc8_q5_bits[2][MPC8_Q5_SIZE] = {
405
{
406
  7,  7,  6,  5,  4,  3,  3,  2,
407
  3,  3,  4,  5,  6,  7,  7,
408
},
409
{
410
  6,  6,  5,  4,  4,  3,  3,  3,
411
  3,  3,  4,  4,  5,  6,  6,
412
}
413
};
414

    
415
#define MPC8_Q6_SIZE 31
416
#define MPC8_Q6_BITS 9
417
#define MPC8_Q6_OFFSET -15
418

    
419
static const uint8_t mpc8_q6_codes[2][MPC8_Q6_SIZE] = {
420
{
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,
425
},
426
{
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,
431
}
432
};
433
static const int8_t mpc8_q6_bits[2][MPC8_Q6_SIZE] = {
434
{
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,
438
  7,  8,  8,  9,  9,  9,  9,
439
},
440
{
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,
444
  6,  6,  7,  7,  7,  8,  8,
445
}
446
};
447

    
448
#define MPC8_Q7_SIZE 63
449
#define MPC8_Q7_BITS 9
450
#define MPC8_Q7_OFFSET -31
451

    
452
static const uint8_t mpc8_q7_codes[2][MPC8_Q7_SIZE] = {
453
{
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,
462
},
463
{
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,
472
}
473
};
474
static const int8_t mpc8_q7_bits[2][MPC8_Q7_SIZE] = {
475
{
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,
484
},
485
{
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,
493
  8,  8,  8,  8,  8,  9,  9,
494
}
495
};
496

    
497
#define MPC8_Q8_SIZE 127
498
#define MPC8_Q8_BITS 9
499
#define MPC8_Q8_OFFSET -63
500

    
501
static const uint8_t mpc8_q8_codes[2][MPC8_Q8_SIZE] = {
502
{
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,
519
},
520
{
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,
537
}
538
};
539
static const int8_t mpc8_q8_bits[2][MPC8_Q8_SIZE] = {
540
{
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,
557
},
558
{
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,
574
  8,  8,  8,  9,  9,  9,  9,
575
}
576
};
577

    
578
#endif /* AVCODEC_MPC8HUFF_H */