~ubuntu-dev/mplayer/ubuntu-feisty

« back to all changes in this revision

Viewing changes to libmpeg2/vlc.h

  • Committer: Reinhard Tartler
  • Date: 2006-07-08 08:45:33 UTC
  • Revision ID: siretart@tauware.de-20060708084533-dbc155bde7122e78
imported mplayer_0.99+1.0pre7try2+cvs20060117

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * vlc.h
 
3
 * Copyright (C) 2000-2003 Michel Lespinasse <walken@zoy.org>
 
4
 * Copyright (C) 1999-2000 Aaron Holtzman <aholtzma@ess.engr.uvic.ca>
 
5
 *
 
6
 * This file is part of mpeg2dec, a free MPEG-2 video stream decoder.
 
7
 * See http://libmpeg2.sourceforge.net/ for updates.
 
8
 *
 
9
 * mpeg2dec is free software; you can redistribute it and/or modify
 
10
 * it under the terms of the GNU General Public License as published by
 
11
 * the Free Software Foundation; either version 2 of the License, or
 
12
 * (at your option) any later version.
 
13
 *
 
14
 * mpeg2dec is distributed in the hope that it will be useful,
 
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
17
 * GNU General Public License for more details.
 
18
 *
 
19
 * You should have received a copy of the GNU General Public License
 
20
 * along with this program; if not, write to the Free Software
 
21
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
22
 */
 
23
 
 
24
#define GETWORD(bit_buf,shift,bit_ptr)                          \
 
25
do {                                                            \
 
26
    bit_buf |= ((bit_ptr[0] << 8) | bit_ptr[1]) << (shift);     \
 
27
    bit_ptr += 2;                                               \
 
28
} while (0)
 
29
 
 
30
static inline void bitstream_init (mpeg2_decoder_t * decoder,
 
31
                                   const uint8_t * start)
 
32
{
 
33
    decoder->bitstream_buf =
 
34
        (start[0] << 24) | (start[1] << 16) | (start[2] << 8) | start[3];
 
35
    decoder->bitstream_ptr = start + 4;
 
36
    decoder->bitstream_bits = -16;
 
37
}
 
38
 
 
39
/* make sure that there are at least 16 valid bits in bit_buf */
 
40
#define NEEDBITS(bit_buf,bits,bit_ptr)          \
 
41
do {                                            \
 
42
    if (unlikely (bits > 0)) {                  \
 
43
        GETWORD (bit_buf, bits, bit_ptr);       \
 
44
        bits -= 16;                             \
 
45
    }                                           \
 
46
} while (0)
 
47
 
 
48
/* remove num valid bits from bit_buf */
 
49
#define DUMPBITS(bit_buf,bits,num)      \
 
50
do {                                    \
 
51
    bit_buf <<= (num);                  \
 
52
    bits += (num);                      \
 
53
} while (0)
 
54
 
 
55
/* take num bits from the high part of bit_buf and zero extend them */
 
56
#define UBITS(bit_buf,num) (((uint32_t)(bit_buf)) >> (32 - (num)))
 
57
 
 
58
/* take num bits from the high part of bit_buf and sign extend them */
 
59
#define SBITS(bit_buf,num) (((int32_t)(bit_buf)) >> (32 - (num)))
 
60
 
 
61
typedef struct {
 
62
    uint8_t modes;
 
63
    uint8_t len;
 
64
} MBtab;
 
65
 
 
66
typedef struct {
 
67
    uint8_t delta;
 
68
    uint8_t len;
 
69
} MVtab;
 
70
 
 
71
typedef struct {
 
72
    int8_t dmv;
 
73
    uint8_t len;
 
74
} DMVtab;
 
75
 
 
76
typedef struct {
 
77
    uint8_t cbp;
 
78
    uint8_t len;
 
79
} CBPtab;
 
80
 
 
81
typedef struct {
 
82
    uint8_t size;
 
83
    uint8_t len;
 
84
} DCtab;
 
85
 
 
86
typedef struct {
 
87
    uint8_t run;
 
88
    uint8_t level;
 
89
    uint8_t len;
 
90
} DCTtab;
 
91
 
 
92
typedef struct {
 
93
    uint8_t mba;
 
94
    uint8_t len;
 
95
} MBAtab;
 
96
 
 
97
 
 
98
#define INTRA MACROBLOCK_INTRA
 
99
#define QUANT MACROBLOCK_QUANT
 
100
 
 
101
static const MBtab MB_I [] = {
 
102
    {INTRA|QUANT, 2}, {INTRA, 1}
 
103
};
 
104
 
 
105
#define MC MACROBLOCK_MOTION_FORWARD
 
106
#define CODED MACROBLOCK_PATTERN
 
107
 
 
108
static const MBtab MB_P [] = {
 
109
    {INTRA|QUANT, 6}, {CODED|QUANT, 5}, {MC|CODED|QUANT, 5}, {INTRA,    5},
 
110
    {MC,          3}, {MC,          3}, {MC,             3}, {MC,       3},
 
111
    {CODED,       2}, {CODED,       2}, {CODED,          2}, {CODED,    2},
 
112
    {CODED,       2}, {CODED,       2}, {CODED,          2}, {CODED,    2},
 
113
    {MC|CODED,    1}, {MC|CODED,    1}, {MC|CODED,       1}, {MC|CODED, 1},
 
114
    {MC|CODED,    1}, {MC|CODED,    1}, {MC|CODED,       1}, {MC|CODED, 1},
 
115
    {MC|CODED,    1}, {MC|CODED,    1}, {MC|CODED,       1}, {MC|CODED, 1},
 
116
    {MC|CODED,    1}, {MC|CODED,    1}, {MC|CODED,       1}, {MC|CODED, 1}
 
117
};
 
118
 
 
119
#define FWD MACROBLOCK_MOTION_FORWARD
 
120
#define BWD MACROBLOCK_MOTION_BACKWARD
 
121
#define INTER MACROBLOCK_MOTION_FORWARD|MACROBLOCK_MOTION_BACKWARD
 
122
 
 
123
static const MBtab MB_B [] = {
 
124
    {0,                 0}, {INTRA|QUANT,       6},
 
125
    {BWD|CODED|QUANT,   6}, {FWD|CODED|QUANT,   6},
 
126
    {INTER|CODED|QUANT, 5}, {INTER|CODED|QUANT, 5},
 
127
                                        {INTRA,       5}, {INTRA,       5},
 
128
    {FWD,         4}, {FWD,         4}, {FWD,         4}, {FWD,         4},
 
129
    {FWD|CODED,   4}, {FWD|CODED,   4}, {FWD|CODED,   4}, {FWD|CODED,   4},
 
130
    {BWD,         3}, {BWD,         3}, {BWD,         3}, {BWD,         3},
 
131
    {BWD,         3}, {BWD,         3}, {BWD,         3}, {BWD,         3},
 
132
    {BWD|CODED,   3}, {BWD|CODED,   3}, {BWD|CODED,   3}, {BWD|CODED,   3},
 
133
    {BWD|CODED,   3}, {BWD|CODED,   3}, {BWD|CODED,   3}, {BWD|CODED,   3},
 
134
    {INTER,       2}, {INTER,       2}, {INTER,       2}, {INTER,       2},
 
135
    {INTER,       2}, {INTER,       2}, {INTER,       2}, {INTER,       2},
 
136
    {INTER,       2}, {INTER,       2}, {INTER,       2}, {INTER,       2},
 
137
    {INTER,       2}, {INTER,       2}, {INTER,       2}, {INTER,       2},
 
138
    {INTER|CODED, 2}, {INTER|CODED, 2}, {INTER|CODED, 2}, {INTER|CODED, 2},
 
139
    {INTER|CODED, 2}, {INTER|CODED, 2}, {INTER|CODED, 2}, {INTER|CODED, 2},
 
140
    {INTER|CODED, 2}, {INTER|CODED, 2}, {INTER|CODED, 2}, {INTER|CODED, 2},
 
141
    {INTER|CODED, 2}, {INTER|CODED, 2}, {INTER|CODED, 2}, {INTER|CODED, 2}
 
142
};
 
143
 
 
144
#undef INTRA
 
145
#undef QUANT
 
146
#undef MC
 
147
#undef CODED
 
148
#undef FWD
 
149
#undef BWD
 
150
#undef INTER
 
151
 
 
152
 
 
153
static const MVtab MV_4 [] = {
 
154
    { 3, 6}, { 2, 4}, { 1, 3}, { 1, 3}, { 0, 2}, { 0, 2}, { 0, 2}, { 0, 2}
 
155
};
 
156
 
 
157
static const MVtab MV_10 [] = {
 
158
    { 0,10}, { 0,10}, { 0,10}, { 0,10}, { 0,10}, { 0,10}, { 0,10}, { 0,10},
 
159
    { 0,10}, { 0,10}, { 0,10}, { 0,10}, {15,10}, {14,10}, {13,10}, {12,10},
 
160
    {11,10}, {10,10}, { 9, 9}, { 9, 9}, { 8, 9}, { 8, 9}, { 7, 9}, { 7, 9},
 
161
    { 6, 7}, { 6, 7}, { 6, 7}, { 6, 7}, { 6, 7}, { 6, 7}, { 6, 7}, { 6, 7},
 
162
    { 5, 7}, { 5, 7}, { 5, 7}, { 5, 7}, { 5, 7}, { 5, 7}, { 5, 7}, { 5, 7},
 
163
    { 4, 7}, { 4, 7}, { 4, 7}, { 4, 7}, { 4, 7}, { 4, 7}, { 4, 7}, { 4, 7}
 
164
};
 
165
 
 
166
 
 
167
static const DMVtab DMV_2 [] = {
 
168
    { 0, 1}, { 0, 1}, { 1, 2}, {-1, 2}
 
169
};
 
170
 
 
171
 
 
172
static const CBPtab CBP_7 [] = {
 
173
    {0x11, 7}, {0x12, 7}, {0x14, 7}, {0x18, 7},
 
174
    {0x21, 7}, {0x22, 7}, {0x24, 7}, {0x28, 7},
 
175
    {0x3f, 6}, {0x3f, 6}, {0x30, 6}, {0x30, 6},
 
176
    {0x09, 6}, {0x09, 6}, {0x06, 6}, {0x06, 6},
 
177
    {0x1f, 5}, {0x1f, 5}, {0x1f, 5}, {0x1f, 5},
 
178
    {0x10, 5}, {0x10, 5}, {0x10, 5}, {0x10, 5},
 
179
    {0x2f, 5}, {0x2f, 5}, {0x2f, 5}, {0x2f, 5},
 
180
    {0x20, 5}, {0x20, 5}, {0x20, 5}, {0x20, 5},
 
181
    {0x07, 5}, {0x07, 5}, {0x07, 5}, {0x07, 5},
 
182
    {0x0b, 5}, {0x0b, 5}, {0x0b, 5}, {0x0b, 5},
 
183
    {0x0d, 5}, {0x0d, 5}, {0x0d, 5}, {0x0d, 5},
 
184
    {0x0e, 5}, {0x0e, 5}, {0x0e, 5}, {0x0e, 5},
 
185
    {0x05, 5}, {0x05, 5}, {0x05, 5}, {0x05, 5},
 
186
    {0x0a, 5}, {0x0a, 5}, {0x0a, 5}, {0x0a, 5},
 
187
    {0x03, 5}, {0x03, 5}, {0x03, 5}, {0x03, 5},
 
188
    {0x0c, 5}, {0x0c, 5}, {0x0c, 5}, {0x0c, 5},
 
189
    {0x01, 4}, {0x01, 4}, {0x01, 4}, {0x01, 4},
 
190
    {0x01, 4}, {0x01, 4}, {0x01, 4}, {0x01, 4},
 
191
    {0x02, 4}, {0x02, 4}, {0x02, 4}, {0x02, 4},
 
192
    {0x02, 4}, {0x02, 4}, {0x02, 4}, {0x02, 4},
 
193
    {0x04, 4}, {0x04, 4}, {0x04, 4}, {0x04, 4},
 
194
    {0x04, 4}, {0x04, 4}, {0x04, 4}, {0x04, 4},
 
195
    {0x08, 4}, {0x08, 4}, {0x08, 4}, {0x08, 4},
 
196
    {0x08, 4}, {0x08, 4}, {0x08, 4}, {0x08, 4},
 
197
    {0x0f, 3}, {0x0f, 3}, {0x0f, 3}, {0x0f, 3},
 
198
    {0x0f, 3}, {0x0f, 3}, {0x0f, 3}, {0x0f, 3},
 
199
    {0x0f, 3}, {0x0f, 3}, {0x0f, 3}, {0x0f, 3},
 
200
    {0x0f, 3}, {0x0f, 3}, {0x0f, 3}, {0x0f, 3}
 
201
};
 
202
 
 
203
static const CBPtab CBP_9 [] = {
 
204
    {0,    0}, {0x00, 9}, {0x39, 9}, {0x36, 9},
 
205
    {0x37, 9}, {0x3b, 9}, {0x3d, 9}, {0x3e, 9},
 
206
    {0x17, 8}, {0x17, 8}, {0x1b, 8}, {0x1b, 8},
 
207
    {0x1d, 8}, {0x1d, 8}, {0x1e, 8}, {0x1e, 8},
 
208
    {0x27, 8}, {0x27, 8}, {0x2b, 8}, {0x2b, 8},
 
209
    {0x2d, 8}, {0x2d, 8}, {0x2e, 8}, {0x2e, 8},
 
210
    {0x19, 8}, {0x19, 8}, {0x16, 8}, {0x16, 8},
 
211
    {0x29, 8}, {0x29, 8}, {0x26, 8}, {0x26, 8},
 
212
    {0x35, 8}, {0x35, 8}, {0x3a, 8}, {0x3a, 8},
 
213
    {0x33, 8}, {0x33, 8}, {0x3c, 8}, {0x3c, 8},
 
214
    {0x15, 8}, {0x15, 8}, {0x1a, 8}, {0x1a, 8},
 
215
    {0x13, 8}, {0x13, 8}, {0x1c, 8}, {0x1c, 8},
 
216
    {0x25, 8}, {0x25, 8}, {0x2a, 8}, {0x2a, 8},
 
217
    {0x23, 8}, {0x23, 8}, {0x2c, 8}, {0x2c, 8},
 
218
    {0x31, 8}, {0x31, 8}, {0x32, 8}, {0x32, 8},
 
219
    {0x34, 8}, {0x34, 8}, {0x38, 8}, {0x38, 8}
 
220
};
 
221
 
 
222
 
 
223
static const DCtab DC_lum_5 [] = {
 
224
    {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2},
 
225
    {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2},
 
226
    {0, 3}, {0, 3}, {0, 3}, {0, 3}, {3, 3}, {3, 3}, {3, 3}, {3, 3},
 
227
    {4, 3}, {4, 3}, {4, 3}, {4, 3}, {5, 4}, {5, 4}, {6, 5}
 
228
};
 
229
 
 
230
static const DCtab DC_chrom_5 [] = {
 
231
    {0, 2}, {0, 2}, {0, 2}, {0, 2}, {0, 2}, {0, 2}, {0, 2}, {0, 2},
 
232
    {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2},
 
233
    {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2},
 
234
    {3, 3}, {3, 3}, {3, 3}, {3, 3}, {4, 4}, {4, 4}, {5, 5}
 
235
};
 
236
 
 
237
static const DCtab DC_long [] = {
 
238
    {6, 5}, {6, 5}, {6, 5}, {6, 5}, {6, 5}, {6, 5}, { 6, 5}, { 6, 5},
 
239
    {6, 5}, {6, 5}, {6, 5}, {6, 5}, {6, 5}, {6, 5}, { 6, 5}, { 6, 5},
 
240
    {7, 6}, {7, 6}, {7, 6}, {7, 6}, {7, 6}, {7, 6}, { 7, 6}, { 7, 6},
 
241
    {8, 7}, {8, 7}, {8, 7}, {8, 7}, {9, 8}, {9, 8}, {10, 9}, {11, 9}
 
242
};
 
243
 
 
244
 
 
245
static const DCTtab DCT_16 [] = {
 
246
    {129, 0, 0}, {129, 0, 0}, {129, 0, 0}, {129, 0, 0},
 
247
    {129, 0, 0}, {129, 0, 0}, {129, 0, 0}, {129, 0, 0},
 
248
    {129, 0, 0}, {129, 0, 0}, {129, 0, 0}, {129, 0, 0},
 
249
    {129, 0, 0}, {129, 0, 0}, {129, 0, 0}, {129, 0, 0},
 
250
    {  2,18, 0}, {  2,17, 0}, {  2,16, 0}, {  2,15, 0},
 
251
    {  7, 3, 0}, { 17, 2, 0}, { 16, 2, 0}, { 15, 2, 0},
 
252
    { 14, 2, 0}, { 13, 2, 0}, { 12, 2, 0}, { 32, 1, 0},
 
253
    { 31, 1, 0}, { 30, 1, 0}, { 29, 1, 0}, { 28, 1, 0}
 
254
};
 
255
 
 
256
static const DCTtab DCT_15 [] = {
 
257
    {  1,40,15}, {  1,39,15}, {  1,38,15}, {  1,37,15},
 
258
    {  1,36,15}, {  1,35,15}, {  1,34,15}, {  1,33,15},
 
259
    {  1,32,15}, {  2,14,15}, {  2,13,15}, {  2,12,15},
 
260
    {  2,11,15}, {  2,10,15}, {  2, 9,15}, {  2, 8,15},
 
261
    {  1,31,14}, {  1,31,14}, {  1,30,14}, {  1,30,14},
 
262
    {  1,29,14}, {  1,29,14}, {  1,28,14}, {  1,28,14},
 
263
    {  1,27,14}, {  1,27,14}, {  1,26,14}, {  1,26,14},
 
264
    {  1,25,14}, {  1,25,14}, {  1,24,14}, {  1,24,14},
 
265
    {  1,23,14}, {  1,23,14}, {  1,22,14}, {  1,22,14},
 
266
    {  1,21,14}, {  1,21,14}, {  1,20,14}, {  1,20,14},
 
267
    {  1,19,14}, {  1,19,14}, {  1,18,14}, {  1,18,14},
 
268
    {  1,17,14}, {  1,17,14}, {  1,16,14}, {  1,16,14}
 
269
};
 
270
 
 
271
static const DCTtab DCT_13 [] = {
 
272
    { 11, 2,13}, { 10, 2,13}, {  6, 3,13}, {  4, 4,13},
 
273
    {  3, 5,13}, {  2, 7,13}, {  2, 6,13}, {  1,15,13},
 
274
    {  1,14,13}, {  1,13,13}, {  1,12,13}, { 27, 1,13},
 
275
    { 26, 1,13}, { 25, 1,13}, { 24, 1,13}, { 23, 1,13},
 
276
    {  1,11,12}, {  1,11,12}, {  9, 2,12}, {  9, 2,12},
 
277
    {  5, 3,12}, {  5, 3,12}, {  1,10,12}, {  1,10,12},
 
278
    {  3, 4,12}, {  3, 4,12}, {  8, 2,12}, {  8, 2,12},
 
279
    { 22, 1,12}, { 22, 1,12}, { 21, 1,12}, { 21, 1,12},
 
280
    {  1, 9,12}, {  1, 9,12}, { 20, 1,12}, { 20, 1,12},
 
281
    { 19, 1,12}, { 19, 1,12}, {  2, 5,12}, {  2, 5,12},
 
282
    {  4, 3,12}, {  4, 3,12}, {  1, 8,12}, {  1, 8,12},
 
283
    {  7, 2,12}, {  7, 2,12}, { 18, 1,12}, { 18, 1,12}
 
284
};
 
285
 
 
286
static const DCTtab DCT_B14_10 [] = {
 
287
    { 17, 1,10}, {  6, 2,10}, {  1, 7,10}, {  3, 3,10},
 
288
    {  2, 4,10}, { 16, 1,10}, { 15, 1,10}, {  5, 2,10}
 
289
};
 
290
 
 
291
static const DCTtab DCT_B14_8 [] = {
 
292
    { 65, 0, 6}, { 65, 0, 6}, { 65, 0, 6}, { 65, 0, 6},
 
293
    {  3, 2, 7}, {  3, 2, 7}, { 10, 1, 7}, { 10, 1, 7},
 
294
    {  1, 4, 7}, {  1, 4, 7}, {  9, 1, 7}, {  9, 1, 7},
 
295
    {  8, 1, 6}, {  8, 1, 6}, {  8, 1, 6}, {  8, 1, 6},
 
296
    {  7, 1, 6}, {  7, 1, 6}, {  7, 1, 6}, {  7, 1, 6},
 
297
    {  2, 2, 6}, {  2, 2, 6}, {  2, 2, 6}, {  2, 2, 6},
 
298
    {  6, 1, 6}, {  6, 1, 6}, {  6, 1, 6}, {  6, 1, 6},
 
299
    { 14, 1, 8}, {  1, 6, 8}, { 13, 1, 8}, { 12, 1, 8},
 
300
    {  4, 2, 8}, {  2, 3, 8}, {  1, 5, 8}, { 11, 1, 8}
 
301
};
 
302
 
 
303
static const DCTtab DCT_B14AC_5 [] = {
 
304
                 {  1, 3, 5}, {  5, 1, 5}, {  4, 1, 5},
 
305
    {  1, 2, 4}, {  1, 2, 4}, {  3, 1, 4}, {  3, 1, 4},
 
306
    {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3},
 
307
    {129, 0, 2}, {129, 0, 2}, {129, 0, 2}, {129, 0, 2},
 
308
    {129, 0, 2}, {129, 0, 2}, {129, 0, 2}, {129, 0, 2},
 
309
    {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2},
 
310
    {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2}
 
311
};
 
312
 
 
313
static const DCTtab DCT_B14DC_5 [] = {
 
314
                 {  1, 3, 5}, {  5, 1, 5}, {  4, 1, 5},
 
315
    {  1, 2, 4}, {  1, 2, 4}, {  3, 1, 4}, {  3, 1, 4},
 
316
    {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3},
 
317
    {  1, 1, 1}, {  1, 1, 1}, {  1, 1, 1}, {  1, 1, 1},
 
318
    {  1, 1, 1}, {  1, 1, 1}, {  1, 1, 1}, {  1, 1, 1},
 
319
    {  1, 1, 1}, {  1, 1, 1}, {  1, 1, 1}, {  1, 1, 1},
 
320
    {  1, 1, 1}, {  1, 1, 1}, {  1, 1, 1}, {  1, 1, 1}
 
321
};
 
322
 
 
323
static const DCTtab DCT_B15_10 [] = {
 
324
    {  6, 2, 9}, {  6, 2, 9}, { 15, 1, 9}, { 15, 1, 9},
 
325
    {  3, 4,10}, { 17, 1,10}, { 16, 1, 9}, { 16, 1, 9}
 
326
};
 
327
 
 
328
static const DCTtab DCT_B15_8 [] = {
 
329
    { 65, 0, 6}, { 65, 0, 6}, { 65, 0, 6}, { 65, 0, 6},
 
330
    {  8, 1, 7}, {  8, 1, 7}, {  9, 1, 7}, {  9, 1, 7},
 
331
    {  7, 1, 7}, {  7, 1, 7}, {  3, 2, 7}, {  3, 2, 7},
 
332
    {  1, 7, 6}, {  1, 7, 6}, {  1, 7, 6}, {  1, 7, 6},
 
333
    {  1, 6, 6}, {  1, 6, 6}, {  1, 6, 6}, {  1, 6, 6},
 
334
    {  5, 1, 6}, {  5, 1, 6}, {  5, 1, 6}, {  5, 1, 6},
 
335
    {  6, 1, 6}, {  6, 1, 6}, {  6, 1, 6}, {  6, 1, 6},
 
336
    {  2, 5, 8}, { 12, 1, 8}, {  1,11, 8}, {  1,10, 8},
 
337
    { 14, 1, 8}, { 13, 1, 8}, {  4, 2, 8}, {  2, 4, 8},
 
338
    {  3, 1, 5}, {  3, 1, 5}, {  3, 1, 5}, {  3, 1, 5},
 
339
    {  3, 1, 5}, {  3, 1, 5}, {  3, 1, 5}, {  3, 1, 5},
 
340
    {  2, 2, 5}, {  2, 2, 5}, {  2, 2, 5}, {  2, 2, 5},
 
341
    {  2, 2, 5}, {  2, 2, 5}, {  2, 2, 5}, {  2, 2, 5},
 
342
    {  4, 1, 5}, {  4, 1, 5}, {  4, 1, 5}, {  4, 1, 5},
 
343
    {  4, 1, 5}, {  4, 1, 5}, {  4, 1, 5}, {  4, 1, 5},
 
344
    {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3},
 
345
    {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3},
 
346
    {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3},
 
347
    {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3},
 
348
    {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3},
 
349
    {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3},
 
350
    {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3},
 
351
    {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3}, {  2, 1, 3},
 
352
    {129, 0, 4}, {129, 0, 4}, {129, 0, 4}, {129, 0, 4},
 
353
    {129, 0, 4}, {129, 0, 4}, {129, 0, 4}, {129, 0, 4},
 
354
    {129, 0, 4}, {129, 0, 4}, {129, 0, 4}, {129, 0, 4},
 
355
    {129, 0, 4}, {129, 0, 4}, {129, 0, 4}, {129, 0, 4},
 
356
    {  1, 3, 4}, {  1, 3, 4}, {  1, 3, 4}, {  1, 3, 4},
 
357
    {  1, 3, 4}, {  1, 3, 4}, {  1, 3, 4}, {  1, 3, 4},
 
358
    {  1, 3, 4}, {  1, 3, 4}, {  1, 3, 4}, {  1, 3, 4},
 
359
    {  1, 3, 4}, {  1, 3, 4}, {  1, 3, 4}, {  1, 3, 4},
 
360
    {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2},
 
361
    {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2},
 
362
    {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2},
 
363
    {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2},
 
364
    {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2},
 
365
    {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2},
 
366
    {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2},
 
367
    {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2},
 
368
    {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2},
 
369
    {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2},
 
370
    {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2},
 
371
    {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2},
 
372
    {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2},
 
373
    {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2},
 
374
    {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2},
 
375
    {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2}, {  1, 1, 2},
 
376
    {  1, 2, 3}, {  1, 2, 3}, {  1, 2, 3}, {  1, 2, 3},
 
377
    {  1, 2, 3}, {  1, 2, 3}, {  1, 2, 3}, {  1, 2, 3},
 
378
    {  1, 2, 3}, {  1, 2, 3}, {  1, 2, 3}, {  1, 2, 3},
 
379
    {  1, 2, 3}, {  1, 2, 3}, {  1, 2, 3}, {  1, 2, 3},
 
380
    {  1, 2, 3}, {  1, 2, 3}, {  1, 2, 3}, {  1, 2, 3},
 
381
    {  1, 2, 3}, {  1, 2, 3}, {  1, 2, 3}, {  1, 2, 3},
 
382
    {  1, 2, 3}, {  1, 2, 3}, {  1, 2, 3}, {  1, 2, 3},
 
383
    {  1, 2, 3}, {  1, 2, 3}, {  1, 2, 3}, {  1, 2, 3},
 
384
    {  1, 4, 5}, {  1, 4, 5}, {  1, 4, 5}, {  1, 4, 5},
 
385
    {  1, 4, 5}, {  1, 4, 5}, {  1, 4, 5}, {  1, 4, 5},
 
386
    {  1, 5, 5}, {  1, 5, 5}, {  1, 5, 5}, {  1, 5, 5},
 
387
    {  1, 5, 5}, {  1, 5, 5}, {  1, 5, 5}, {  1, 5, 5},
 
388
    { 10, 1, 7}, { 10, 1, 7}, {  2, 3, 7}, {  2, 3, 7},
 
389
    { 11, 1, 7}, { 11, 1, 7}, {  1, 8, 7}, {  1, 8, 7},
 
390
    {  1, 9, 7}, {  1, 9, 7}, {  1,12, 8}, {  1,13, 8},
 
391
    {  3, 3, 8}, {  5, 2, 8}, {  1,14, 8}, {  1,15, 8}
 
392
};
 
393
 
 
394
 
 
395
static const MBAtab MBA_5 [] = {
 
396
                    {6, 5}, {5, 5}, {4, 4}, {4, 4}, {3, 4}, {3, 4},
 
397
    {2, 3}, {2, 3}, {2, 3}, {2, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
 
398
    {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1},
 
399
    {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}
 
400
};
 
401
 
 
402
static const MBAtab MBA_11 [] = {
 
403
    {32, 11}, {31, 11}, {30, 11}, {29, 11},
 
404
    {28, 11}, {27, 11}, {26, 11}, {25, 11},
 
405
    {24, 11}, {23, 11}, {22, 11}, {21, 11},
 
406
    {20, 10}, {20, 10}, {19, 10}, {19, 10},
 
407
    {18, 10}, {18, 10}, {17, 10}, {17, 10},
 
408
    {16, 10}, {16, 10}, {15, 10}, {15, 10},
 
409
    {14,  8}, {14,  8}, {14,  8}, {14,  8},
 
410
    {14,  8}, {14,  8}, {14,  8}, {14,  8},
 
411
    {13,  8}, {13,  8}, {13,  8}, {13,  8},
 
412
    {13,  8}, {13,  8}, {13,  8}, {13,  8},
 
413
    {12,  8}, {12,  8}, {12,  8}, {12,  8},
 
414
    {12,  8}, {12,  8}, {12,  8}, {12,  8},
 
415
    {11,  8}, {11,  8}, {11,  8}, {11,  8},
 
416
    {11,  8}, {11,  8}, {11,  8}, {11,  8},
 
417
    {10,  8}, {10,  8}, {10,  8}, {10,  8},
 
418
    {10,  8}, {10,  8}, {10,  8}, {10,  8},
 
419
    { 9,  8}, { 9,  8}, { 9,  8}, { 9,  8},
 
420
    { 9,  8}, { 9,  8}, { 9,  8}, { 9,  8},
 
421
    { 8,  7}, { 8,  7}, { 8,  7}, { 8,  7},
 
422
    { 8,  7}, { 8,  7}, { 8,  7}, { 8,  7},
 
423
    { 8,  7}, { 8,  7}, { 8,  7}, { 8,  7},
 
424
    { 8,  7}, { 8,  7}, { 8,  7}, { 8,  7},
 
425
    { 7,  7}, { 7,  7}, { 7,  7}, { 7,  7},
 
426
    { 7,  7}, { 7,  7}, { 7,  7}, { 7,  7},
 
427
    { 7,  7}, { 7,  7}, { 7,  7}, { 7,  7},
 
428
    { 7,  7}, { 7,  7}, { 7,  7}, { 7,  7}
 
429
};