decode custom quant matrices.
[libav.git] / libavcodec / h264data.h
CommitLineData
0da71265
MN
1/*
2 * H26L/H264/AVC/JVT/14496-10/... encoder/decoder
3 * Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at>
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 */
20
21/**
22 * @file h264data.h
23 * @brief
24 * H264 / AVC / MPEG4 part10 codec data table
25 * @author Michael Niedermayer <michaelni@gmx.at>
26 */
27
28#define VERT_PRED 0
29#define HOR_PRED 1
30#define DC_PRED 2
31#define DIAG_DOWN_LEFT_PRED 3
32#define DIAG_DOWN_RIGHT_PRED 4
33#define VERT_RIGHT_PRED 5
34#define HOR_DOWN_PRED 6
35#define VERT_LEFT_PRED 7
36#define HOR_UP_PRED 8
37
38#define LEFT_DC_PRED 9
39#define TOP_DC_PRED 10
40#define DC_128_PRED 11
41
42
43#define DC_PRED8x8 0
44#define HOR_PRED8x8 1
45#define VERT_PRED8x8 2
46#define PLANE_PRED8x8 3
47
48#define LEFT_DC_PRED8x8 4
49#define TOP_DC_PRED8x8 5
50#define DC_128_PRED8x8 6
51
52#define EXTENDED_SAR 255
53
5ff85f1d
MN
54static const AVRational pixel_aspect[14]={
55 {0, 1},
0da71265
MN
56 {1, 1},
57 {12, 11},
58 {10, 11},
59 {16, 11},
60 {40, 33},
61 {24, 11},
62 {20, 11},
63 {32, 11},
64 {80, 33},
65 {18, 11},
66 {15, 11},
67 {64, 33},
68 {160,99},
69};
70
71static const uint8_t golomb_to_pict_type[5]=
72{P_TYPE, B_TYPE, I_TYPE, SP_TYPE, SI_TYPE};
73
74static const uint8_t pict_type_to_golomb[7]=
75{-1, 2, 0, 1, -1, 4, 3};
76
77static const uint8_t chroma_qp[52]={
78 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,
79 12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,
80 28,29,29,30,31,32,32,33,34,34,35,35,36,36,37,37,
81 37,38,38,38,39,39,39,39
82
83};
84
85static const uint8_t golomb_to_intra4x4_cbp[48]={
86 47, 31, 15, 0, 23, 27, 29, 30, 7, 11, 13, 14, 39, 43, 45, 46,
87 16, 3, 5, 10, 12, 19, 21, 26, 28, 35, 37, 42, 44, 1, 2, 4,
88 8, 17, 18, 20, 24, 6, 9, 22, 25, 32, 33, 34, 36, 40, 38, 41
89};
90
91static const uint8_t golomb_to_inter_cbp[48]={
92 0, 16, 1, 2, 4, 8, 32, 3, 5, 10, 12, 15, 47, 7, 11, 13,
93 14, 6, 9, 31, 35, 37, 42, 44, 33, 34, 36, 40, 39, 43, 45, 46,
94 17, 18, 20, 24, 19, 21, 26, 28, 23, 27, 29, 30, 22, 25, 38, 41
95};
96
97static const uint8_t intra4x4_cbp_to_golomb[48]={
98 3, 29, 30, 17, 31, 18, 37, 8, 32, 38, 19, 9, 20, 10, 11, 2,
99 16, 33, 34, 21, 35, 22, 39, 4, 36, 40, 23, 5, 24, 6, 7, 1,
100 41, 42, 43, 25, 44, 26, 46, 12, 45, 47, 27, 13, 28, 14, 15, 0
101};
102
103static const uint8_t inter_cbp_to_golomb[48]={
104 0, 2, 3, 7, 4, 8, 17, 13, 5, 18, 9, 14, 10, 15, 16, 11,
105 1, 32, 33, 36, 34, 37, 44, 40, 35, 45, 38, 41, 39, 42, 43, 19,
106 6, 24, 25, 20, 26, 21, 46, 28, 27, 47, 22, 29, 23, 30, 31, 12
107};
108
109static const uint8_t chroma_dc_coeff_token_len[4*5]={
110 2, 0, 0, 0,
111 6, 1, 0, 0,
112 6, 6, 3, 0,
113 6, 7, 7, 6,
114 6, 8, 8, 7,
115};
116
117static const uint8_t chroma_dc_coeff_token_bits[4*5]={
118 1, 0, 0, 0,
119 7, 1, 0, 0,
120 4, 6, 1, 0,
121 3, 3, 2, 5,
122 2, 3, 2, 0,
123};
124
125static const uint8_t coeff_token_len[4][4*17]={
126{
127 1, 0, 0, 0,
128 6, 2, 0, 0, 8, 6, 3, 0, 9, 8, 7, 5, 10, 9, 8, 6,
129 11,10, 9, 7, 13,11,10, 8, 13,13,11, 9, 13,13,13,10,
130 14,14,13,11, 14,14,14,13, 15,15,14,14, 15,15,15,14,
131 16,15,15,15, 16,16,16,15, 16,16,16,16, 16,16,16,16,
132},
133{
134 2, 0, 0, 0,
135 6, 2, 0, 0, 6, 5, 3, 0, 7, 6, 6, 4, 8, 6, 6, 4,
136 8, 7, 7, 5, 9, 8, 8, 6, 11, 9, 9, 6, 11,11,11, 7,
137 12,11,11, 9, 12,12,12,11, 12,12,12,11, 13,13,13,12,
138 13,13,13,13, 13,14,13,13, 14,14,14,13, 14,14,14,14,
139},
140{
141 4, 0, 0, 0,
142 6, 4, 0, 0, 6, 5, 4, 0, 6, 5, 5, 4, 7, 5, 5, 4,
143 7, 5, 5, 4, 7, 6, 6, 4, 7, 6, 6, 4, 8, 7, 7, 5,
144 8, 8, 7, 6, 9, 8, 8, 7, 9, 9, 8, 8, 9, 9, 9, 8,
145 10, 9, 9, 9, 10,10,10,10, 10,10,10,10, 10,10,10,10,
146},
147{
148 6, 0, 0, 0,
149 6, 6, 0, 0, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6,
150 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
151 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
152 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
153}
154};
155
156static const uint8_t coeff_token_bits[4][4*17]={
157{
158 1, 0, 0, 0,
159 5, 1, 0, 0, 7, 4, 1, 0, 7, 6, 5, 3, 7, 6, 5, 3,
160 7, 6, 5, 4, 15, 6, 5, 4, 11,14, 5, 4, 8,10,13, 4,
161 15,14, 9, 4, 11,10,13,12, 15,14, 9,12, 11,10,13, 8,
162 15, 1, 9,12, 11,14,13, 8, 7,10, 9,12, 4, 6, 5, 8,
163},
164{
165 3, 0, 0, 0,
166 11, 2, 0, 0, 7, 7, 3, 0, 7,10, 9, 5, 7, 6, 5, 4,
167 4, 6, 5, 6, 7, 6, 5, 8, 15, 6, 5, 4, 11,14,13, 4,
168 15,10, 9, 4, 11,14,13,12, 8,10, 9, 8, 15,14,13,12,
169 11,10, 9,12, 7,11, 6, 8, 9, 8,10, 1, 7, 6, 5, 4,
170},
171{
172 15, 0, 0, 0,
173 15,14, 0, 0, 11,15,13, 0, 8,12,14,12, 15,10,11,11,
174 11, 8, 9,10, 9,14,13, 9, 8,10, 9, 8, 15,14,13,13,
175 11,14,10,12, 15,10,13,12, 11,14, 9,12, 8,10,13, 8,
176 13, 7, 9,12, 9,12,11,10, 5, 8, 7, 6, 1, 4, 3, 2,
177},
178{
179 3, 0, 0, 0,
180 0, 1, 0, 0, 4, 5, 6, 0, 8, 9,10,11, 12,13,14,15,
181 16,17,18,19, 20,21,22,23, 24,25,26,27, 28,29,30,31,
182 32,33,34,35, 36,37,38,39, 40,41,42,43, 44,45,46,47,
183 48,49,50,51, 52,53,54,55, 56,57,58,59, 60,61,62,63,
184}
185};
186
187static const uint8_t total_zeros_len[16][16]= {
188 {1,3,3,4,4,5,5,6,6,7,7,8,8,9,9,9},
189 {3,3,3,3,3,4,4,4,4,5,5,6,6,6,6},
190 {4,3,3,3,4,4,3,3,4,5,5,6,5,6},
191 {5,3,4,4,3,3,3,4,3,4,5,5,5},
192 {4,4,4,3,3,3,3,3,4,5,4,5},
193 {6,5,3,3,3,3,3,3,4,3,6},
194 {6,5,3,3,3,2,3,4,3,6},
195 {6,4,5,3,2,2,3,3,6},
196 {6,6,4,2,2,3,2,5},
197 {5,5,3,2,2,2,4},
198 {4,4,3,3,1,3},
199 {4,4,2,1,3},
200 {3,3,1,2},
201 {2,2,1},
202 {1,1},
203};
204
205static const uint8_t total_zeros_bits[16][16]= {
206 {1,3,2,3,2,3,2,3,2,3,2,3,2,3,2,1},
207 {7,6,5,4,3,5,4,3,2,3,2,3,2,1,0},
208 {5,7,6,5,4,3,4,3,2,3,2,1,1,0},
209 {3,7,5,4,6,5,4,3,3,2,2,1,0},
210 {5,4,3,7,6,5,4,3,2,1,1,0},
211 {1,1,7,6,5,4,3,2,1,1,0},
212 {1,1,5,4,3,3,2,1,1,0},
213 {1,1,1,3,3,2,2,1,0},
214 {1,0,1,3,2,1,1,1},
215 {1,0,1,3,2,1,1},
216 {0,1,1,2,1,3},
217 {0,1,1,1,1},
218 {0,1,1,1},
219 {0,1,1},
220 {0,1},
221};
222
223static const uint8_t chroma_dc_total_zeros_len[3][4]= {
224 { 1, 2, 3, 3,},
225 { 1, 2, 2, 0,},
226 { 1, 1, 0, 0,},
227};
228
229static const uint8_t chroma_dc_total_zeros_bits[3][4]= {
230 { 1, 1, 1, 0,},
231 { 1, 1, 0, 0,},
232 { 1, 0, 0, 0,},
233};
234
235static const uint8_t run_len[7][16]={
236 {1,1},
237 {1,2,2},
238 {2,2,2,2},
239 {2,2,2,3,3},
240 {2,2,3,3,3,3},
241 {2,3,3,3,3,3,3},
242 {3,3,3,3,3,3,3,4,5,6,7,8,9,10,11},
243};
244
245static const uint8_t run_bits[7][16]={
246 {1,0},
247 {1,1,0},
248 {3,2,1,0},
249 {3,2,1,1,0},
250 {3,2,3,2,1,0},
251 {3,0,1,3,2,5,4},
252 {7,6,5,4,3,2,1,1,1,1,1,1,1,1,1},
253};
254
255/*
256o-o o-o
257 / / /
258o-o o-o
259 ,---'
260o-o o-o
261 / / /
262o-o o-o
263*/
264
265static const uint8_t scan8[16 + 2*4]={
266 4+1*8, 5+1*8, 4+2*8, 5+2*8,
267 6+1*8, 7+1*8, 6+2*8, 7+2*8,
268 4+3*8, 5+3*8, 4+4*8, 5+4*8,
269 6+3*8, 7+3*8, 6+4*8, 7+4*8,
270 1+1*8, 2+1*8,
271 1+2*8, 2+2*8,
272 1+4*8, 2+4*8,
273 1+5*8, 2+5*8,
274};
275
276static const uint8_t zigzag_scan[16]={
277 0+0*4, 1+0*4, 0+1*4, 0+2*4,
278 1+1*4, 2+0*4, 3+0*4, 2+1*4,
279 1+2*4, 0+3*4, 1+3*4, 2+2*4,
280 3+1*4, 3+2*4, 2+3*4, 3+3*4,
281};
282
283static const uint8_t field_scan[16]={
284 0+0*4, 0+1*4, 1+0*4, 0+2*4,
285 0+3*4, 1+1*4, 1+2*4, 1+3*4,
286 2+0*4, 2+1*4, 2+2*4, 2+3*4,
287 3+0*4, 3+1*4, 3+2*4, 3+3*4,
288};
289
290static const uint8_t luma_dc_zigzag_scan[16]={
291 0*16 + 0*64, 1*16 + 0*64, 2*16 + 0*64, 0*16 + 2*64,
292 3*16 + 0*64, 0*16 + 1*64, 1*16 + 1*64, 2*16 + 1*64,
293 1*16 + 2*64, 2*16 + 2*64, 3*16 + 2*64, 0*16 + 3*64,
294 3*16 + 1*64, 1*16 + 3*64, 2*16 + 3*64, 3*16 + 3*64,
295};
296
297static const uint8_t luma_dc_field_scan[16]={
298 0*16 + 0*64, 2*16 + 0*64, 1*16 + 0*64, 0*16 + 2*64,
299 2*16 + 2*64, 3*16 + 0*64, 1*16 + 2*64, 3*16 + 2*64,
300 0*16 + 1*64, 2*16 + 1*64, 0*16 + 3*64, 2*16 + 3*64,
301 1*16 + 1*64, 3*16 + 1*64, 1*16 + 3*64, 3*16 + 3*64,
302};
303
304static const uint8_t chroma_dc_scan[4]={
305 (0+0*2)*16, (1+0*2)*16,
306 (0+1*2)*16, (1+1*2)*16, //FIXME
307};
308
43efd19a
LM
309static const uint8_t zigzag_scan8x8[64]={
310 0+0*8, 1+0*8, 0+1*8, 0+2*8,
311 1+1*8, 2+0*8, 3+0*8, 2+1*8,
312 1+2*8, 0+3*8, 0+4*8, 1+3*8,
313 2+2*8, 3+1*8, 4+0*8, 5+0*8,
314 4+1*8, 3+2*8, 2+3*8, 1+4*8,
315 0+5*8, 0+6*8, 1+5*8, 2+4*8,
316 3+3*8, 4+2*8, 5+1*8, 6+0*8,
317 7+0*8, 6+1*8, 5+2*8, 4+3*8,
318 3+4*8, 2+5*8, 1+6*8, 0+7*8,
319 1+7*8, 2+6*8, 3+5*8, 4+4*8,
320 5+3*8, 6+2*8, 7+1*8, 7+2*8,
321 6+3*8, 5+4*8, 4+5*8, 3+6*8,
322 2+7*8, 3+7*8, 4+6*8, 5+5*8,
323 6+4*8, 7+3*8, 7+4*8, 6+5*8,
324 5+6*8, 4+7*8, 5+7*8, 6+6*8,
325 7+5*8, 7+6*8, 6+7*8, 7+7*8,
326};
327
328// zigzag_scan8x8_cavlc[i] = zigzag_scan8x8[(i/4) + 16*(i%4)]
329static const uint8_t zigzag_scan8x8_cavlc[64]={
330 0+0*8, 1+1*8, 1+2*8, 2+2*8,
331 4+1*8, 0+5*8, 3+3*8, 7+0*8,
332 3+4*8, 1+7*8, 5+3*8, 6+3*8,
333 2+7*8, 6+4*8, 5+6*8, 7+5*8,
334 1+0*8, 2+0*8, 0+3*8, 3+1*8,
335 3+2*8, 0+6*8, 4+2*8, 6+1*8,
336 2+5*8, 2+6*8, 6+2*8, 5+4*8,
337 3+7*8, 7+3*8, 4+7*8, 7+6*8,
338 0+1*8, 3+0*8, 0+4*8, 4+0*8,
339 2+3*8, 1+5*8, 5+1*8, 5+2*8,
340 1+6*8, 3+5*8, 7+1*8, 4+5*8,
341 4+6*8, 7+4*8, 5+7*8, 6+7*8,
342 0+2*8, 2+1*8, 1+3*8, 5+0*8,
343 1+4*8, 2+4*8, 6+0*8, 4+3*8,
344 0+7*8, 4+4*8, 7+2*8, 3+6*8,
345 5+5*8, 6+5*8, 6+6*8, 7+7*8,
346};
347
8a3b6f92 348#define MB_TYPE_REF0 MB_TYPE_ACPRED //dirty but it fits in 16bit
43efd19a 349#define MB_TYPE_8x8DCT 0x01000000
7bc9090a 350#define IS_REF0(a) ((a)&MB_TYPE_REF0)
43efd19a
LM
351#define IS_8x8DCT(a) ((a)&MB_TYPE_8x8DCT)
352
7bc9090a 353
0da71265
MN
354typedef struct IMbInfo{
355 uint16_t type;
356 uint8_t pred_mode;
357 uint8_t cbp;
358} IMbInfo;
359
360static const IMbInfo i_mb_type_info[26]={
361{MB_TYPE_INTRA4x4 , -1, -1},
362{MB_TYPE_INTRA16x16, 2, 0},
363{MB_TYPE_INTRA16x16, 1, 0},
364{MB_TYPE_INTRA16x16, 0, 0},
365{MB_TYPE_INTRA16x16, 3, 0},
366{MB_TYPE_INTRA16x16, 2, 16},
367{MB_TYPE_INTRA16x16, 1, 16},
368{MB_TYPE_INTRA16x16, 0, 16},
369{MB_TYPE_INTRA16x16, 3, 16},
370{MB_TYPE_INTRA16x16, 2, 32},
371{MB_TYPE_INTRA16x16, 1, 32},
372{MB_TYPE_INTRA16x16, 0, 32},
373{MB_TYPE_INTRA16x16, 3, 32},
374{MB_TYPE_INTRA16x16, 2, 15+0},
375{MB_TYPE_INTRA16x16, 1, 15+0},
376{MB_TYPE_INTRA16x16, 0, 15+0},
377{MB_TYPE_INTRA16x16, 3, 15+0},
378{MB_TYPE_INTRA16x16, 2, 15+16},
379{MB_TYPE_INTRA16x16, 1, 15+16},
380{MB_TYPE_INTRA16x16, 0, 15+16},
381{MB_TYPE_INTRA16x16, 3, 15+16},
382{MB_TYPE_INTRA16x16, 2, 15+32},
383{MB_TYPE_INTRA16x16, 1, 15+32},
384{MB_TYPE_INTRA16x16, 0, 15+32},
385{MB_TYPE_INTRA16x16, 3, 15+32},
386{MB_TYPE_INTRA_PCM , -1, -1},
387};
388
389typedef struct PMbInfo{
390 uint16_t type;
391 uint8_t partition_count;
392} PMbInfo;
393
394static const PMbInfo p_mb_type_info[5]={
395{MB_TYPE_16x16|MB_TYPE_P0L0 , 1},
396{MB_TYPE_16x8 |MB_TYPE_P0L0|MB_TYPE_P1L0, 2},
397{MB_TYPE_8x16 |MB_TYPE_P0L0|MB_TYPE_P1L0, 2},
b75e10d5
LM
398{MB_TYPE_8x8 |MB_TYPE_P0L0|MB_TYPE_P1L0, 4},
399{MB_TYPE_8x8 |MB_TYPE_P0L0|MB_TYPE_P1L0|MB_TYPE_REF0, 4},
0da71265
MN
400};
401
402static const PMbInfo p_sub_mb_type_info[4]={
403{MB_TYPE_16x16|MB_TYPE_P0L0 , 1},
404{MB_TYPE_16x8 |MB_TYPE_P0L0 , 2},
405{MB_TYPE_8x16 |MB_TYPE_P0L0 , 2},
406{MB_TYPE_8x8 |MB_TYPE_P0L0 , 4},
407};
408
409static const PMbInfo b_mb_type_info[23]={
7bc9090a 410{MB_TYPE_DIRECT2 , 1, },
0da71265
MN
411{MB_TYPE_16x16|MB_TYPE_P0L0 , 1, },
412{MB_TYPE_16x16 |MB_TYPE_P0L1 , 1, },
413{MB_TYPE_16x16|MB_TYPE_P0L0|MB_TYPE_P0L1 , 1, },
414{MB_TYPE_16x8 |MB_TYPE_P0L0 |MB_TYPE_P1L0 , 2, },
415{MB_TYPE_8x16 |MB_TYPE_P0L0 |MB_TYPE_P1L0 , 2, },
416{MB_TYPE_16x8 |MB_TYPE_P0L1 |MB_TYPE_P1L1, 2, },
417{MB_TYPE_8x16 |MB_TYPE_P0L1 |MB_TYPE_P1L1, 2, },
418{MB_TYPE_16x8 |MB_TYPE_P0L0 |MB_TYPE_P1L1, 2, },
419{MB_TYPE_8x16 |MB_TYPE_P0L0 |MB_TYPE_P1L1, 2, },
420{MB_TYPE_16x8 |MB_TYPE_P0L1|MB_TYPE_P1L0 , 2, },
421{MB_TYPE_8x16 |MB_TYPE_P0L1|MB_TYPE_P1L0 , 2, },
422{MB_TYPE_16x8 |MB_TYPE_P0L0 |MB_TYPE_P1L0|MB_TYPE_P1L1, 2, },
423{MB_TYPE_8x16 |MB_TYPE_P0L0 |MB_TYPE_P1L0|MB_TYPE_P1L1, 2, },
424{MB_TYPE_16x8 |MB_TYPE_P0L1|MB_TYPE_P1L0|MB_TYPE_P1L1, 2, },
425{MB_TYPE_8x16 |MB_TYPE_P0L1|MB_TYPE_P1L0|MB_TYPE_P1L1, 2, },
426{MB_TYPE_16x8 |MB_TYPE_P0L0|MB_TYPE_P0L1|MB_TYPE_P1L0 , 2, },
427{MB_TYPE_8x16 |MB_TYPE_P0L0|MB_TYPE_P0L1|MB_TYPE_P1L0 , 2, },
428{MB_TYPE_16x8 |MB_TYPE_P0L0|MB_TYPE_P0L1 |MB_TYPE_P1L1, 2, },
429{MB_TYPE_8x16 |MB_TYPE_P0L0|MB_TYPE_P0L1 |MB_TYPE_P1L1, 2, },
430{MB_TYPE_16x8 |MB_TYPE_P0L0|MB_TYPE_P0L1|MB_TYPE_P1L0|MB_TYPE_P1L1, 2, },
431{MB_TYPE_8x16 |MB_TYPE_P0L0|MB_TYPE_P0L1|MB_TYPE_P1L0|MB_TYPE_P1L1, 2, },
b75e10d5 432{MB_TYPE_8x8 |MB_TYPE_P0L0|MB_TYPE_P0L1|MB_TYPE_P1L0|MB_TYPE_P1L1, 4, },
0da71265
MN
433};
434
435static const PMbInfo b_sub_mb_type_info[13]={
7bc9090a 436{MB_TYPE_DIRECT2 , 1, },
0da71265
MN
437{MB_TYPE_16x16|MB_TYPE_P0L0 , 1, },
438{MB_TYPE_16x16 |MB_TYPE_P0L1 , 1, },
439{MB_TYPE_16x16|MB_TYPE_P0L0|MB_TYPE_P0L1 , 1, },
440{MB_TYPE_16x8 |MB_TYPE_P0L0 |MB_TYPE_P1L0 , 2, },
441{MB_TYPE_8x16 |MB_TYPE_P0L0 |MB_TYPE_P1L0 , 2, },
442{MB_TYPE_16x8 |MB_TYPE_P0L1 |MB_TYPE_P1L1, 2, },
443{MB_TYPE_8x16 |MB_TYPE_P0L1 |MB_TYPE_P1L1, 2, },
444{MB_TYPE_16x8 |MB_TYPE_P0L0|MB_TYPE_P0L1|MB_TYPE_P1L0|MB_TYPE_P1L1, 2, },
445{MB_TYPE_8x16 |MB_TYPE_P0L0|MB_TYPE_P0L1|MB_TYPE_P1L0|MB_TYPE_P1L1, 2, },
446{MB_TYPE_8x8 |MB_TYPE_P0L0 |MB_TYPE_P1L0 , 4, },
447{MB_TYPE_8x8 |MB_TYPE_P0L1 |MB_TYPE_P1L1, 4, },
448{MB_TYPE_8x8 |MB_TYPE_P0L0|MB_TYPE_P0L1|MB_TYPE_P1L0|MB_TYPE_P1L1, 4, },
449};
450
451
452static const uint8_t rem6[52]={
4530, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
454};
455
456static const uint8_t div6[52]={
4570, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,
458};
459
239ea04c
LM
460static const uint8_t default_scaling4[2][16]={
461{ 6,13,20,28,
462 13,20,28,32,
463 20,28,32,37,
464 28,32,37,42
465},{
466 10,14,20,24,
467 14,20,24,27,
468 20,24,27,30,
469 24,27,30,34
470}};
471
472static const uint8_t default_scaling8[2][64]={
473{ 6,10,13,16,18,23,25,27,
474 10,11,16,18,23,25,27,29,
475 13,16,18,23,25,27,29,31,
476 16,18,23,25,27,29,31,33,
477 18,23,25,27,29,31,33,36,
478 23,25,27,29,31,33,36,38,
479 25,27,29,31,33,36,38,40,
480 27,29,31,33,36,38,40,42
481},{
482 9,13,15,17,19,21,22,24,
483 13,13,17,19,21,22,24,25,
484 15,17,19,21,22,24,25,27,
485 17,19,21,22,24,25,27,28,
486 19,21,22,24,25,27,28,30,
487 21,22,24,25,27,28,30,32,
488 22,24,25,27,28,30,32,33,
489 24,25,27,28,30,32,33,35
490}};
491
492static const int dequant4_coeff_init[6][3]={
493 {10,13,16},
494 {11,14,18},
495 {13,16,20},
496 {14,18,23},
497 {16,20,25},
498 {18,23,29},
0da71265
MN
499};
500
43efd19a
LM
501static const int dequant8_coeff_init_scan[16] = {
502 0,3,4,3, 3,1,5,1, 4,5,2,5, 3,1,5,1
503};
504static const int dequant8_coeff_init[6][6]={
505 {20,18,32,19,25,24},
506 {22,19,35,21,28,26},
507 {26,23,42,24,33,31},
508 {28,25,45,26,35,33},
509 {32,28,51,30,40,38},
510 {36,32,58,34,46,43},
511};
512
0da71265
MN
513#define QUANT_SHIFT 22
514
515static const int quant_coeff[52][16]={
516 { 419430,258111,419430,258111,258111,167772,258111,167772,419430,258111,419430,258111,258111,167772,258111,167772,},
517 { 381300,239675,381300,239675,239675,149131,239675,149131,381300,239675,381300,239675,239675,149131,239675,149131,},
518 { 322639,209715,322639,209715,209715,134218,209715,134218,322639,209715,322639,209715,209715,134218,209715,134218,},
519 { 299593,186414,299593,186414,186414,116711,186414,116711,299593,186414,299593,186414,186414,116711,186414,116711,},
520 { 262144,167772,262144,167772,167772,107374,167772,107374,262144,167772,262144,167772,167772,107374,167772,107374,},
521 { 233017,145889,233017,145889,145889, 92564,145889, 92564,233017,145889,233017,145889,145889, 92564,145889, 92564,},
522 { 209715,129056,209715,129056,129056, 83886,129056, 83886,209715,129056,209715,129056,129056, 83886,129056, 83886,},
523 { 190650,119837,190650,119837,119837, 74565,119837, 74565,190650,119837,190650,119837,119837, 74565,119837, 74565,},
524 { 161319,104858,161319,104858,104858, 67109,104858, 67109,161319,104858,161319,104858,104858, 67109,104858, 67109,},
525 { 149797, 93207,149797, 93207, 93207, 58356, 93207, 58356,149797, 93207,149797, 93207, 93207, 58356, 93207, 58356,},
526 { 131072, 83886,131072, 83886, 83886, 53687, 83886, 53687,131072, 83886,131072, 83886, 83886, 53687, 83886, 53687,},
527 { 116508, 72944,116508, 72944, 72944, 46282, 72944, 46282,116508, 72944,116508, 72944, 72944, 46282, 72944, 46282,},
528 { 104858, 64528,104858, 64528, 64528, 41943, 64528, 41943,104858, 64528,104858, 64528, 64528, 41943, 64528, 41943,},
529 { 95325, 59919, 95325, 59919, 59919, 37283, 59919, 37283, 95325, 59919, 95325, 59919, 59919, 37283, 59919, 37283,},
530 { 80660, 52429, 80660, 52429, 52429, 33554, 52429, 33554, 80660, 52429, 80660, 52429, 52429, 33554, 52429, 33554,},
531 { 74898, 46603, 74898, 46603, 46603, 29178, 46603, 29178, 74898, 46603, 74898, 46603, 46603, 29178, 46603, 29178,},
532 { 65536, 41943, 65536, 41943, 41943, 26844, 41943, 26844, 65536, 41943, 65536, 41943, 41943, 26844, 41943, 26844,},
533 { 58254, 36472, 58254, 36472, 36472, 23141, 36472, 23141, 58254, 36472, 58254, 36472, 36472, 23141, 36472, 23141,},
534 { 52429, 32264, 52429, 32264, 32264, 20972, 32264, 20972, 52429, 32264, 52429, 32264, 32264, 20972, 32264, 20972,},
535 { 47663, 29959, 47663, 29959, 29959, 18641, 29959, 18641, 47663, 29959, 47663, 29959, 29959, 18641, 29959, 18641,},
536 { 40330, 26214, 40330, 26214, 26214, 16777, 26214, 16777, 40330, 26214, 40330, 26214, 26214, 16777, 26214, 16777,},
537 { 37449, 23302, 37449, 23302, 23302, 14589, 23302, 14589, 37449, 23302, 37449, 23302, 23302, 14589, 23302, 14589,},
538 { 32768, 20972, 32768, 20972, 20972, 13422, 20972, 13422, 32768, 20972, 32768, 20972, 20972, 13422, 20972, 13422,},
539 { 29127, 18236, 29127, 18236, 18236, 11570, 18236, 11570, 29127, 18236, 29127, 18236, 18236, 11570, 18236, 11570,},
540 { 26214, 16132, 26214, 16132, 16132, 10486, 16132, 10486, 26214, 16132, 26214, 16132, 16132, 10486, 16132, 10486,},
541 { 23831, 14980, 23831, 14980, 14980, 9321, 14980, 9321, 23831, 14980, 23831, 14980, 14980, 9321, 14980, 9321,},
542 { 20165, 13107, 20165, 13107, 13107, 8389, 13107, 8389, 20165, 13107, 20165, 13107, 13107, 8389, 13107, 8389,},
543 { 18725, 11651, 18725, 11651, 11651, 7294, 11651, 7294, 18725, 11651, 18725, 11651, 11651, 7294, 11651, 7294,},
544 { 16384, 10486, 16384, 10486, 10486, 6711, 10486, 6711, 16384, 10486, 16384, 10486, 10486, 6711, 10486, 6711,},
545 { 14564, 9118, 14564, 9118, 9118, 5785, 9118, 5785, 14564, 9118, 14564, 9118, 9118, 5785, 9118, 5785,},
546 { 13107, 8066, 13107, 8066, 8066, 5243, 8066, 5243, 13107, 8066, 13107, 8066, 8066, 5243, 8066, 5243,},
547 { 11916, 7490, 11916, 7490, 7490, 4660, 7490, 4660, 11916, 7490, 11916, 7490, 7490, 4660, 7490, 4660,},
548 { 10082, 6554, 10082, 6554, 6554, 4194, 6554, 4194, 10082, 6554, 10082, 6554, 6554, 4194, 6554, 4194,},
549 { 9362, 5825, 9362, 5825, 5825, 3647, 5825, 3647, 9362, 5825, 9362, 5825, 5825, 3647, 5825, 3647,},
550 { 8192, 5243, 8192, 5243, 5243, 3355, 5243, 3355, 8192, 5243, 8192, 5243, 5243, 3355, 5243, 3355,},
551 { 7282, 4559, 7282, 4559, 4559, 2893, 4559, 2893, 7282, 4559, 7282, 4559, 4559, 2893, 4559, 2893,},
552 { 6554, 4033, 6554, 4033, 4033, 2621, 4033, 2621, 6554, 4033, 6554, 4033, 4033, 2621, 4033, 2621,},
553 { 5958, 3745, 5958, 3745, 3745, 2330, 3745, 2330, 5958, 3745, 5958, 3745, 3745, 2330, 3745, 2330,},
554 { 5041, 3277, 5041, 3277, 3277, 2097, 3277, 2097, 5041, 3277, 5041, 3277, 3277, 2097, 3277, 2097,},
555 { 4681, 2913, 4681, 2913, 2913, 1824, 2913, 1824, 4681, 2913, 4681, 2913, 2913, 1824, 2913, 1824,},
556 { 4096, 2621, 4096, 2621, 2621, 1678, 2621, 1678, 4096, 2621, 4096, 2621, 2621, 1678, 2621, 1678,},
557 { 3641, 2280, 3641, 2280, 2280, 1446, 2280, 1446, 3641, 2280, 3641, 2280, 2280, 1446, 2280, 1446,},
558 { 3277, 2016, 3277, 2016, 2016, 1311, 2016, 1311, 3277, 2016, 3277, 2016, 2016, 1311, 2016, 1311,},
559 { 2979, 1872, 2979, 1872, 1872, 1165, 1872, 1165, 2979, 1872, 2979, 1872, 1872, 1165, 1872, 1165,},
560 { 2521, 1638, 2521, 1638, 1638, 1049, 1638, 1049, 2521, 1638, 2521, 1638, 1638, 1049, 1638, 1049,},
561 { 2341, 1456, 2341, 1456, 1456, 912, 1456, 912, 2341, 1456, 2341, 1456, 1456, 912, 1456, 912,},
562 { 2048, 1311, 2048, 1311, 1311, 839, 1311, 839, 2048, 1311, 2048, 1311, 1311, 839, 1311, 839,},
563 { 1820, 1140, 1820, 1140, 1140, 723, 1140, 723, 1820, 1140, 1820, 1140, 1140, 723, 1140, 723,},
564 { 1638, 1008, 1638, 1008, 1008, 655, 1008, 655, 1638, 1008, 1638, 1008, 1008, 655, 1008, 655,},
565 { 1489, 936, 1489, 936, 936, 583, 936, 583, 1489, 936, 1489, 936, 936, 583, 936, 583,},
566 { 1260, 819, 1260, 819, 819, 524, 819, 524, 1260, 819, 1260, 819, 819, 524, 819, 524,},
567 { 1170, 728, 1170, 728, 728, 456, 728, 456, 1170, 728, 1170, 728, 728, 456, 728, 456,},
568};
980a82b7
MN
569
570
571/* Deblocking filter (p153) */
572static const int alpha_table[52] = {
573 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
574 0, 0, 0, 0, 0, 0, 4, 4, 5, 6,
575 7, 8, 9, 10, 12, 13, 15, 17, 20, 22,
576 25, 28, 32, 36, 40, 45, 50, 56, 63, 71,
577 80, 90,101,113,127,144,162,182,203,226,
578 255, 255
579};
580static const int beta_table[52] = {
581 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
582 0, 0, 0, 0, 0, 0, 2, 2, 2, 3,
583 3, 3, 3, 4, 4, 4, 6, 6, 7, 7,
584 8, 8, 9, 9, 10, 10, 11, 11, 12, 12,
585 13, 13, 14, 14, 15, 15, 16, 16, 17, 17,
586 18, 18
587};
588static const int tc0_table[52][3] = {
589 { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 },
590 { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 },
591 { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 1 },
592 { 0, 0, 1 }, { 0, 0, 1 }, { 0, 0, 1 }, { 0, 1, 1 }, { 0, 1, 1 }, { 1, 1, 1 },
593 { 1, 1, 1 }, { 1, 1, 1 }, { 1, 1, 1 }, { 1, 1, 2 }, { 1, 1, 2 }, { 1, 1, 2 },
594 { 1, 1, 2 }, { 1, 2, 3 }, { 1, 2, 3 }, { 2, 2, 3 }, { 2, 2, 4 }, { 2, 3, 4 },
595 { 2, 3, 4 }, { 3, 3, 5 }, { 3, 4, 6 }, { 3, 4, 6 }, { 4, 5, 7 }, { 4, 5, 8 },
596 { 4, 6, 9 }, { 5, 7,10 }, { 6, 8,11 }, { 6, 8,13 }, { 7,10,14 }, { 8,11,16 },
597 { 9,12,18 }, {10,13,20 }, {11,15,23 }, {13,17,25 }
598};
e5017ab8
LA
599
600/* Cabac pre state table */
601
43efd19a 602static const int cabac_context_init_I[460][2] =
e5017ab8
LA
603{
604 /* 0 - 10 */
605 { 20, -15 }, { 2, 54 }, { 3, 74 }, { 20, -15 },
606 { 2, 54 }, { 3, 74 }, { -28,127 }, { -23, 104 },
607 { -6, 53 }, { -1, 54 }, { 7, 51 },
608
609 /* 11 - 23 unsused for I */
610 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
611 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
612 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
613 { 0, 0 },
614
615 /* 24- 39 */
616 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
617 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
618 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
619 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
620
621 /* 40 - 53 */
622 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
623 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
624 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
625 { 0, 0 }, { 0, 0 },
626
627 /* 54 - 59 */
628 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
629 { 0, 0 }, { 0, 0 },
630
631 /* 60 - 69 */
632 { 0, 41 }, { 0, 63 }, { 0, 63 }, { 0, 63 },
633 { -9, 83 }, { 4, 86 }, { 0, 97 }, { -7, 72 },
634 { 13, 41 }, { 3, 62 },
635
636 /* 70 -> 87 */
637 { 0, 11 }, { 1, 55 }, { 0, 69 }, { -17, 127 },
638 { -13, 102 },{ 0, 82 }, { -7, 74 }, { -21, 107 },
639 { -27, 127 },{ -31, 127 },{ -24, 127 }, { -18, 95 },
640 { -27, 127 },{ -21, 114 },{ -30, 127 }, { -17, 123 },
641 { -12, 115 },{ -16, 122 },
642
643 /* 88 -> 104 */
644 { -11, 115 },{ -12, 63 }, { -2, 68 }, { -15, 84 },
645 { -13, 104 },{ -3, 70 }, { -8, 93 }, { -10, 90 },
646 { -30, 127 },{ -1, 74 }, { -6, 97 }, { -7, 91 },
647 { -20, 127 },{ -4, 56 }, { -5, 82 }, { -7, 76 },
648 { -22, 125 },
649
650 /* 105 -> 135 */
651 { -7, 93 }, { -11, 87 }, { -3, 77 }, { -5, 71 },
652 { -4, 63 }, { -4, 68 }, { -12, 84 }, { -7, 62 },
653 { -7, 65 }, { 8, 61 }, { 5, 56 }, { -2, 66 },
654 { 1, 64 }, { 0, 61 }, { -2, 78 }, { 1, 50 },
655 { 7, 52 }, { 10, 35 }, { 0, 44 }, { 11, 38 },
656 { 1, 45 }, { 0, 46 }, { 5, 44 }, { 31, 17 },
657 { 1, 51 }, { 7, 50 }, { 28, 19 }, { 16, 33 },
658 { 14, 62 }, { -13, 108 },{ -15, 100 },
659
660 /* 136 -> 165 */
661 { -13, 101 },{ -13, 91 }, { -12, 94 }, { -10, 88 },
662 { -16, 84 }, { -10, 86 }, { -7, 83 }, { -13, 87 },
663 { -19, 94 }, { 1, 70 }, { 0, 72 }, { -5, 74 },
664 { 18, 59 }, { -8, 102 }, { -15, 100 }, { 0, 95 },
665 { -4, 75 }, { 2, 72 }, { -11, 75 }, { -3, 71 },
666 { 15, 46 }, { -13, 69 }, { 0, 62 }, { 0, 65 },
667 { 21, 37 }, { -15, 72 }, { 9, 57 }, { 16, 54 },
668 { 0, 62 }, { 12, 72 },
669
670 /* 166 -> 196 */
671 { 24, 0 }, { 15, 9 }, { 8, 25 }, { 13, 18 },
672 { 15, 9 }, { 13, 19 }, { 10, 37 }, { 12, 18 },
673 { 6, 29 }, { 20, 33 }, { 15, 30 }, { 4, 45 },
674 { 1, 58 }, { 0, 62 }, { 7, 61 }, { 12, 38 },
675 { 11, 45 }, { 15, 39 }, { 11, 42 }, { 13, 44 },
676 { 16, 45 }, { 12, 41 }, { 10, 49 }, { 30, 34 },
677 { 18, 42 }, { 10, 55 }, { 17, 51 }, { 17, 46 },
678 { 0, 89 }, { 26, -19 }, { 22, -17 },
679
680 /* 197 -> 226 */
681 { 26, -17 }, { 30, -25 }, { 28, -20 }, { 33, -23 },
682 { 37, -27 }, { 33, -23 }, { 40, -28 }, { 38, -17 },
683 { 33, -11 }, { 40, -15 }, { 41, -6 }, { 38, 1 },
684 { 41, 17 }, { 30, -6 }, { 27, 3 }, { 26, 22 },
685 { 37, -16 }, { 35, -4 }, { 38, -8 }, { 38, -3 },
686 { 37, 3 }, { 38, 5 }, { 42, 0 }, { 35, 16 },
687 { 39, 22 }, { 14, 48 }, { 27, 37 }, { 21, 60 },
688 { 12, 68 }, { 2, 97 },
689
690 /* 227 -> 251 */
691 { -3, 71 }, { -6, 42 }, { -5, 50 }, { -3, 54 },
692 { -2, 62 }, { 0, 58 }, { 1, 63 }, { -2, 72 },
693 { -1, 74 }, { -9, 91 }, { -5, 67 }, { -5, 27 },
694 { -3, 39 }, { -2, 44 }, { 0, 46 }, { -16, 64 },
695 { -8, 68 }, { -10, 78 }, { -6, 77 }, { -10, 86 },
696 { -12, 92 }, { -15, 55 }, { -10, 60 }, { -6, 62 },
697 { -4, 65 },
698
699 /* 252 -> 275 */
700 { -12, 73 }, { -8, 76 }, { -7, 80 }, { -9, 88 },
701 { -17, 110 },{ -11, 97 }, { -20, 84 }, { -11, 79 },
702 { -6, 73 }, { -4, 74 }, { -13, 86 }, { -13, 96 },
703 { -11, 97 }, { -19, 117 },{ -8, 78 }, { -5, 33 },
704 { -4, 48 }, { -2, 53 }, { -3, 62 }, { -13, 71 },
705 { -10, 79 }, { -12, 86 }, { -13, 90 }, { -14, 97 },
706
707 /* 276 a bit special (not used, bypass is used instead) */
708 { 0, 0 },
709
710 /* 277 -> 307 */
711 { -6, 93 }, { -6, 84 }, { -8, 79 }, { 0, 66 },
712 { -1, 71 }, { 0, 62 }, { -2, 60 }, { -2, 59 },
713 { -5, 75 }, { -3, 62 }, { -4, 58 }, { -9, 66 },
714 { -1, 79 }, { 0, 71 }, { 3, 68 }, { 10, 44 },
715 { -7, 62 }, { 15, 36 }, { 14, 40 }, { 16, 27 },
716 { 12, 29 }, { 1, 44 }, { 20, 36 }, { 18, 32 },
717 { 5, 42 }, { 1, 48 }, { 10, 62 }, { 17, 46 },
718 { 9, 64 }, { -12, 104 },{ -11, 97 },
719
720 /* 308 -> 337 */
721 { -16, 96 }, { -7, 88 }, { -8, 85 }, { -7, 85 },
722 { -9, 85 }, { -13, 88 }, { 4, 66 }, { -3, 77 },
723 { -3, 76 }, { -6, 76 }, { 10, 58 }, { -1, 76 },
724 { -1, 83 }, { -7, 99 }, { -14, 95 }, { 2, 95 },
725 { 0, 76 }, { -5, 74 }, { 0, 70 }, { -11, 75 },
726 { 1, 68 }, { 0, 65 }, { -14, 73 }, { 3, 62 },
727 { 4, 62 }, { -1, 68 }, { -13, 75 }, { 11, 55 },
728 { 5, 64 }, { 12, 70 },
729
730 /* 338 -> 368 */
731 { 15, 6 }, { 6, 19 }, { 7, 16 }, { 12, 14 },
732 { 18, 13 }, { 13, 11 }, { 13, 15 }, { 15, 16 },
733 { 12, 23 }, { 13, 23 }, { 15, 20 }, { 14, 26 },
734 { 14, 44 }, { 17, 40 }, { 17, 47 }, { 24, 17 },
735 { 21, 21 }, { 25, 22 }, { 31, 27 }, { 22, 29 },
736 { 19, 35 }, { 14, 50 }, { 10, 57 }, { 7, 63 },
737 { -2, 77 }, { -4, 82 }, { -3, 94 }, { 9, 69 },
738 { -12, 109 },{ 36, -35 }, { 36, -34 },
739
740 /* 369 -> 398 */
741 { 32, -26 }, { 37, -30 }, { 44, -32 }, { 34, -18 },
742 { 34, -15 }, { 40, -15 }, { 33, -7 }, { 35, -5 },
743 { 33, 0 }, { 38, 2 }, { 33, 13 }, { 23, 35 },
744 { 13, 58 }, { 29, -3 }, { 26, 0 }, { 22, 30 },
745 { 31, -7 }, { 35, -15 }, { 34, -3 }, { 34, 3 },
746 { 36, -1 }, { 34, 5 }, { 32, 11 }, { 35, 5 },
747 { 34, 12 }, { 39, 11 }, { 30, 29 }, { 34, 26 },
43efd19a
LM
748 { 29, 39 }, { 19, 66 },
749
750 /* 399 -> 435 */
751 { 31, 21 }, { 31, 31 }, { 25, 50 },
752 { -17, 120 }, { -20, 112 }, { -18, 114 }, { -11, 85 },
753 { -15, 92 }, { -14, 89 }, { -26, 71 }, { -15, 81 },
754 { -14, 80 }, { 0, 68 }, { -14, 70 }, { -24, 56 },
755 { -23, 68 }, { -24, 50 }, { -11, 74 }, { 23, -13 },
756 { 26, -13 }, { 40, -15 }, { 49, -14 }, { 44, 3 },
757 { 45, 6 }, { 44, 34 }, { 33, 54 }, { 19, 82 },
758 { -3, 75 }, { -1, 23 }, { 1, 34 }, { 1, 43 },
759 { 0, 54 }, { -2, 55 }, { 0, 61 }, { 1, 64 },
760 { 0, 68 }, { -9, 92 },
761
762 /* 436 -> 459 */
763 { -14, 106 }, { -13, 97 }, { -15, 90 }, { -12, 90 },
764 { -18, 88 }, { -10, 73 }, { -9, 79 }, { -14, 86 },
765 { -10, 73 }, { -10, 70 }, { -10, 69 }, { -5, 66 },
766 { -9, 64 }, { -5, 58 }, { 2, 59 }, { 21, -10 },
767 { 24, -11 }, { 28, -8 }, { 28, -1 }, { 29, 3 },
768 { 29, 9 }, { 35, 20 }, { 29, 36 }, { 14, 67 }
e5017ab8
LA
769};
770
43efd19a 771static const int cabac_context_init_PB[3][460][2] =
e5017ab8
LA
772{
773 /* i_cabac_init_idc == 0 */
774 {
775 /* 0 - 10 */
776 { 20, -15 }, { 2, 54 }, { 3, 74 }, { 20, -15 },
777 { 2, 54 }, { 3, 74 }, { -28, 127 }, { -23, 104 },
778 { -6, 53 }, { -1, 54 }, { 7, 51 },
779
780 /* 11 - 23 */
781 { 23, 33 }, { 23, 2 }, { 21, 0 }, { 1, 9 },
782 { 0, 49 }, { -37, 118 }, { 5, 57 }, { -13, 78 },
783 { -11, 65 }, { 1, 62 }, { 12, 49 }, { -4, 73 },
784 { 17, 50 },
785
786 /* 24 - 39 */
787 { 18, 64 }, { 9, 43 }, { 29, 0 }, { 26, 67 },
788 { 16, 90 }, { 9, 104 }, { -46, 127 }, { -20, 104 },
789 { 1, 67 }, { -13, 78 }, { -11, 65 }, { 1, 62 },
790 { -6, 86 }, { -17, 95 }, { -6, 61 }, { 9, 45 },
791
792 /* 40 - 53 */
793 { -3, 69 }, { -6, 81 }, { -11, 96 }, { 6, 55 },
794 { 7, 67 }, { -5, 86 }, { 2, 88 }, { 0, 58 },
795 { -3, 76 }, { -10, 94 }, { 5, 54 }, { 4, 69 },
796 { -3, 81 }, { 0, 88 },
797
798 /* 54 - 59 */
799 { -7, 67 }, { -5, 74 }, { -4, 74 }, { -5, 80 },
800 { -7, 72 }, { 1, 58 },
801
802 /* 60 - 69 */
803 { 0, 41 }, { 0, 63 }, { 0, 63 }, { 0, 63 },
804 { -9, 83 }, { 4, 86 }, { 0, 97 }, { -7, 72 },
805 { 13, 41 }, { 3, 62 },
806
807 /* 70 - 87 */
808 { 0, 45 }, { -4, 78 }, { -3, 96 }, { -27, 126 },
809 { -28, 98 }, { -25, 101 }, { -23, 67 }, { -28, 82 },
810 { -20, 94 }, { -16, 83 }, { -22, 110 }, { -21, 91 },
811 { -18, 102 }, { -13, 93 }, { -29, 127 }, { -7, 92 },
812 { -5, 89 }, { -7, 96 }, { -13, 108 }, { -3, 46 },
813 { -1, 65 }, { -1, 57 }, { -9, 93 }, { -3, 74 },
814 { -9, 92 }, { -8, 87 }, { -23, 126 }, { 5, 54 },
815 { 6, 60 }, { 6, 59 }, { 6, 69 }, { -1, 48 },
816 { 0, 68 }, { -4, 69 }, { -8, 88 },
817
818 /* 105 -> 165 */
819 { -2, 85 }, { -6, 78 }, { -1, 75 }, { -7, 77 },
820 { 2, 54 }, { 5, 50 }, { -3, 68 }, { 1, 50 },
821 { 6, 42 }, { -4, 81 }, { 1, 63 }, { -4, 70 },
822 { 0, 67 }, { 2, 57 }, { -2, 76 }, { 11, 35 },
823 { 4, 64 }, { 1, 61 }, { 11, 35 }, { 18, 25 },
824 { 12, 24 }, { 13, 29 }, { 13, 36 }, { -10, 93 },
825 { -7, 73 }, { -2, 73 }, { 13, 46 }, { 9, 49 },
826 { -7, 100 }, { 9, 53 }, { 2, 53 }, { 5, 53 },
827 { -2, 61 }, { 0, 56 }, { 0, 56 }, { -13, 63 },
828 { -5, 60 }, { -1, 62 }, { 4, 57 }, { -6, 69 },
829 { 4, 57 }, { 14, 39 }, { 4, 51 }, { 13, 68 },
830 { 3, 64 }, { 1, 61 }, { 9, 63 }, { 7, 50 },
831 { 16, 39 }, { 5, 44 }, { 4, 52 }, { 11, 48 },
832 { -5, 60 }, { -1, 59 }, { 0, 59 }, { 22, 33 },
833 { 5, 44 }, { 14, 43 }, { -1, 78 }, { 0, 60 },
834 { 9, 69 },
835
836 /* 166 - 226 */
837 { 11, 28 }, { 2, 40 }, { 3, 44 }, { 0, 49 },
838 { 0, 46 }, { 2, 44 }, { 2, 51 }, { 0, 47 },
839 { 4, 39 }, { 2, 62 }, { 6, 46 }, { 0, 54 },
840 { 3, 54 }, { 2, 58 }, { 4, 63 }, { 6, 51 },
841 { 6, 57 }, { 7, 53 }, { 6, 52 }, { 6, 55 },
842 { 11, 45 }, { 14, 36 }, { 8, 53 }, { -1, 82 },
843 { 7, 55 }, { -3, 78 }, { 15, 46 }, { 22, 31 },
844 { -1, 84 }, { 25, 7 }, { 30, -7 }, { 28, 3 },
845 { 28, 4 }, { 32, 0 }, { 34, -1 }, { 30, 6 },
846 { 30, 6 }, { 32, 9 }, { 31, 19 }, { 26, 27 },
847 { 26, 30 }, { 37, 20 }, { 28, 34 }, { 17, 70 },
848 { 1, 67 }, { 5, 59 }, { 9, 67 }, { 16, 30 },
849 { 18, 32 }, { 18, 35 }, { 22, 29 }, { 24, 31 },
850 { 23, 38 }, { 18, 43 }, { 20, 41 }, { 11, 63 },
851 { 9, 59 }, { 9, 64 }, { -1, 94 }, { -2, 89 },
852 { -9, 108 },
853
854 /* 227 - 275 */
855 { -6, 76 }, { -2, 44 }, { 0, 45 }, { 0, 52 },
856 { -3, 64 }, { -2, 59 }, { -4, 70 }, { -4, 75 },
857 { -8, 82 }, { -17, 102 }, { -9, 77 }, { 3, 24 },
858 { 0, 42 }, { 0, 48 }, { 0, 55 }, { -6, 59 },
859 { -7, 71 }, { -12, 83 }, { -11, 87 }, { -30, 119 },
860 { 1, 58 }, { -3, 29 }, { -1, 36 }, { 1, 38 },
861 { 2, 43 }, { -6, 55 }, { 0, 58 }, { 0, 64 },
862 { -3, 74 }, { -10, 90 }, { 0, 70 }, { -4, 29 },
863 { 5, 31 }, { 7, 42 }, { 1, 59 }, { -2, 58 },
864 { -3, 72 }, { -3, 81 }, { -11, 97 }, { 0, 58 },
865 { 8, 5 }, { 10, 14 }, { 14, 18 }, { 13, 27 },
866 { 2, 40 }, { 0, 58 }, { -3, 70 }, { -6, 79 },
867 { -8, 85 },
868
869 /* 276 a bit special (not used, bypass is used instead) */
870 { 0, 0 },
871
872 /* 277 - 337 */
873 { -13, 106 }, { -16, 106 }, { -10, 87 }, { -21, 114 },
874 { -18, 110 }, { -14, 98 }, { -22, 110 }, { -21, 106 },
875 { -18, 103 }, { -21, 107 }, { -23, 108 }, { -26, 112 },
876 { -10, 96 }, { -12, 95 }, { -5, 91 }, { -9, 93 },
877 { -22, 94 }, { -5, 86 }, { 9, 67 }, { -4, 80 },
878 { -10, 85 }, { -1, 70 }, { 7, 60 }, { 9, 58 },
879 { 5, 61 }, { 12, 50 }, { 15, 50 }, { 18, 49 },
880 { 17, 54 }, { 10, 41 }, { 7, 46 }, { -1, 51 },
881 { 7, 49 }, { 8, 52 }, { 9, 41 }, { 6, 47 },
882 { 2, 55 }, { 13, 41 }, { 10, 44 }, { 6, 50 },
883 { 5, 53 }, { 13, 49 }, { 4, 63 }, { 6, 64 },
884 { -2, 69 }, { -2, 59 }, { 6, 70 }, { 10, 44 },
885 { 9, 31 }, { 12, 43 }, { 3, 53 }, { 14, 34 },
886 { 10, 38 }, { -3, 52 }, { 13, 40 }, { 17, 32 },
887 { 7, 44 }, { 7, 38 }, { 13, 50 }, { 10, 57 },
888 { 26, 43 },
889
890 /* 338 - 398 */
891 { 14, 11 }, { 11, 14 }, { 9, 11 }, { 18, 11 },
892 { 21, 9 }, { 23, -2 }, { 32, -15 }, { 32, -15 },
893 { 34, -21 }, { 39, -23 }, { 42, -33 }, { 41, -31 },
894 { 46, -28 }, { 38, -12 }, { 21, 29 }, { 45, -24 },
895 { 53, -45 }, { 48, -26 }, { 65, -43 }, { 43, -19 },
896 { 39, -10 }, { 30, 9 }, { 18, 26 }, { 20, 27 },
897 { 0, 57 }, { -14, 82 }, { -5, 75 }, { -19, 97 },
898 { -35, 125 }, { 27, 0 }, { 28, 0 }, { 31, -4 },
899 { 27, 6 }, { 34, 8 }, { 30, 10 }, { 24, 22 },
900 { 33, 19 }, { 22, 32 }, { 26, 31 }, { 21, 41 },
901 { 26, 44 }, { 23, 47 }, { 16, 65 }, { 14, 71 },
902 { 8, 60 }, { 6, 63 }, { 17, 65 }, { 21, 24 },
903 { 23, 20 }, { 26, 23 }, { 27, 32 }, { 28, 23 },
904 { 28, 24 }, { 23, 40 }, { 24, 32 }, { 28, 29 },
905 { 23, 42 }, { 19, 57 }, { 22, 53 }, { 22, 61 },
906 { 11, 86 },
907
43efd19a
LM
908 /* 399 - 435 */
909 { 12, 40 }, { 11, 51 }, { 14, 59 },
910 { -4, 79 }, { -7, 71 }, { -5, 69 }, { -9, 70 },
911 { -8, 66 }, { -10, 68 }, { -19, 73 }, { -12, 69 },
912 { -16, 70 }, { -15, 67 }, { -20, 62 }, { -19, 70 },
913 { -16, 66 }, { -22, 65 }, { -20, 63 }, { 9, -2 },
914 { 26, -9 }, { 33, -9 }, { 39, -7 }, { 41, -2 },
915 { 45, 3 }, { 49, 9 }, { 45, 27 }, { 36, 59 },
916 { -6, 66 }, { -7, 35 }, { -7, 42 }, { -8, 45 },
917 { -5, 48 }, { -12, 56 }, { -6, 60 }, { -5, 62 },
918 { -8, 66 }, { -8, 76 },
919
920 /* 436 - 459 */
921 { -5, 85 }, { -6, 81 }, { -10, 77 }, { -7, 81 },
922 { -17, 80 }, { -18, 73 }, { -4, 74 }, { -10, 83 },
923 { -9, 71 }, { -9, 67 }, { -1, 61 }, { -8, 66 },
924 { -14, 66 }, { 0, 59 }, { 2, 59 }, { 21, -13 },
925 { 33, -14 }, { 39, -7 }, { 46, -2 }, { 51, 2 },
926 { 60, 6 }, { 61, 17 }, { 55, 34 }, { 42, 62 },
e5017ab8
LA
927 },
928
929 /* i_cabac_init_idc == 1 */
930 {
931 /* 0 - 10 */
932 { 20, -15 }, { 2, 54 }, { 3, 74 }, { 20, -15 },
933 { 2, 54 }, { 3, 74 }, { -28, 127 }, { -23, 104 },
934 { -6, 53 }, { -1, 54 }, { 7, 51 },
935
936 /* 11 - 23 */
937 { 22, 25 }, { 34, 0 }, { 16, 0 }, { -2, 9 },
938 { 4, 41 }, { -29, 118 }, { 2, 65 }, { -6, 71 },
939 { -13, 79 }, { 5, 52 }, { 9, 50 }, { -3, 70 },
940 { 10, 54 },
941
942 /* 24 - 39 */
943 { 26, 34 }, { 19, 22 }, { 40, 0 }, { 57, 2 },
944 { 41, 36 }, { 26, 69 }, { -45, 127 }, { -15, 101 },
945 { -4, 76 }, { -6, 71 }, { -13, 79 }, { 5, 52 },
946 { 6, 69 }, { -13, 90 }, { 0, 52 }, { 8, 43 },
947
948 /* 40 - 53 */
949 { -2, 69 },{ -5, 82 },{ -10, 96 },{ 2, 59 },
950 { 2, 75 },{ -3, 87 },{ -3, 100 },{ 1, 56 },
951 { -3, 74 },{ -6, 85 },{ 0, 59 },{ -3, 81 },
952 { -7, 86 },{ -5, 95 },
953
954 /* 54 - 59 */
955 { -1, 66 },{ -1, 77 },{ 1, 70 },{ -2, 86 },
956 { -5, 72 },{ 0, 61 },
957
958 /* 60 - 69 */
959 { 0, 41 }, { 0, 63 }, { 0, 63 }, { 0, 63 },
960 { -9, 83 }, { 4, 86 }, { 0, 97 }, { -7, 72 },
961 { 13, 41 }, { 3, 62 },
962
963 /* 70 - 104 */
964 { 13, 15 }, { 7, 51 }, { 2, 80 }, { -39, 127 },
965 { -18, 91 }, { -17, 96 }, { -26, 81 }, { -35, 98 },
966 { -24, 102 }, { -23, 97 }, { -27, 119 }, { -24, 99 },
967 { -21, 110 }, { -18, 102 }, { -36, 127 }, { 0, 80 },
968 { -5, 89 }, { -7, 94 }, { -4, 92 }, { 0, 39 },
969 { 0, 65 }, { -15, 84 }, { -35, 127 }, { -2, 73 },
970 { -12, 104 }, { -9, 91 }, { -31, 127 }, { 3, 55 },
971 { 7, 56 }, { 7, 55 }, { 8, 61 }, { -3, 53 },
972 { 0, 68 }, { -7, 74 }, { -9, 88 },
973
974 /* 105 -> 165 */
975 { -13, 103 }, { -13, 91 }, { -9, 89 }, { -14, 92 },
976 { -8, 76 }, { -12, 87 }, { -23, 110 }, { -24, 105 },
977 { -10, 78 }, { -20, 112 }, { -17, 99 }, { -78, 127 },
978 { -70, 127 }, { -50, 127 }, { -46, 127 }, { -4, 66 },
979 { -5, 78 }, { -4, 71 }, { -8, 72 }, { 2, 59 },
980 { -1, 55 }, { -7, 70 }, { -6, 75 }, { -8, 89 },
981 { -34, 119 }, { -3, 75 }, { 32, 20 }, { 30, 22 },
982 { -44, 127 }, { 0, 54 }, { -5, 61 }, { 0, 58 },
983 { -1, 60 }, { -3, 61 }, { -8, 67 }, { -25, 84 },
984 { -14, 74 }, { -5, 65 }, { 5, 52 }, { 2, 57 },
985 { 0, 61 }, { -9, 69 }, { -11, 70 }, { 18, 55 },
986 { -4, 71 }, { 0, 58 }, { 7, 61 }, { 9, 41 },
987 { 18, 25 }, { 9, 32 }, { 5, 43 }, { 9, 47 },
988 { 0, 44 }, { 0, 51 }, { 2, 46 }, { 19, 38 },
989 { -4, 66 }, { 15, 38 }, { 12, 42 }, { 9, 34 },
990 { 0, 89 },
991
992 /* 166 - 226 */
993 { 4, 45 }, { 10, 28 }, { 10, 31 }, { 33, -11 },
994 { 52, -43 }, { 18, 15 }, { 28, 0 }, { 35, -22 },
995 { 38, -25 }, { 34, 0 }, { 39, -18 }, { 32, -12 },
996 { 102, -94 }, { 0, 0 }, { 56, -15 }, { 33, -4 },
997 { 29, 10 }, { 37, -5 }, { 51, -29 }, { 39, -9 },
998 { 52, -34 }, { 69, -58 }, { 67, -63 }, { 44, -5 },
999 { 32, 7 }, { 55, -29 }, { 32, 1 }, { 0, 0 },
1000 { 27, 36 }, { 33, -25 }, { 34, -30 }, { 36, -28 },
1001 { 38, -28 }, { 38, -27 }, { 34, -18 }, { 35, -16 },
1002 { 34, -14 }, { 32, -8 }, { 37, -6 }, { 35, 0 },
1003 { 30, 10 }, { 28, 18 }, { 26, 25 }, { 29, 41 },
1004 { 0, 75 }, { 2, 72 }, { 8, 77 }, { 14, 35 },
1005 { 18, 31 }, { 17, 35 }, { 21, 30 }, { 17, 45 },
1006 { 20, 42 }, { 18, 45 }, { 27, 26 }, { 16, 54 },
1007 { 7, 66 }, { 16, 56 }, { 11, 73 }, { 10, 67 },
1008 { -10, 116 },
1009
1010 /* 227 - 275 */
1011 { -23, 112 }, { -15, 71 }, { -7, 61 }, { 0, 53 },
1012 { -5, 66 }, { -11, 77 }, { -9, 80 }, { -9, 84 },
1013 { -10, 87 }, { -34, 127 }, { -21, 101 }, { -3, 39 },
1014 { -5, 53 }, { -7, 61 }, { -11, 75 }, { -15, 77 },
1015 { -17, 91 }, { -25, 107 }, { -25, 111 }, { -28, 122 },
1016 { -11, 76 }, { -10, 44 }, { -10, 52 }, { -10, 57 },
1017 { -9, 58 }, { -16, 72 }, { -7, 69 }, { -4, 69 },
1018 { -5, 74 }, { -9, 86 }, { 2, 66 }, { -9, 34 },
1019 { 1, 32 }, { 11, 31 }, { 5, 52 }, { -2, 55 },
1020 { -2, 67 }, { 0, 73 }, { -8, 89 }, { 3, 52 },
1021 { 7, 4 }, { 10, 8 }, { 17, 8 }, { 16, 19 },
1022 { 3, 37 }, { -1, 61 }, { -5, 73 }, { -1, 70 },
1023 { -4, 78 },
1024
1025 /* 276 a bit special (not used, bypass is used instead) */
1026 { 0, 0 },
1027
1028 /* 277 - 337 */
1029 { -21, 126 }, { -23, 124 }, { -20, 110 }, { -26, 126 },
1030 { -25, 124 }, { -17, 105 }, { -27, 121 }, { -27, 117 },
1031 { -17, 102 }, { -26, 117 }, { -27, 116 }, { -33, 122 },
1032 { -10, 95 }, { -14, 100 }, { -8, 95 }, { -17, 111 },
1033 { -28, 114 }, { -6, 89 }, { -2, 80 }, { -4, 82 },
1034 { -9, 85 }, { -8, 81 }, { -1, 72 }, { 5, 64 },
1035 { 1, 67 }, { 9, 56 }, { 0, 69 }, { 1, 69 },
1036 { 7, 69 }, { -7, 69 }, { -6, 67 }, { -16, 77 },
1037 { -2, 64 }, { 2, 61 }, { -6, 67 }, { -3, 64 },
1038 { 2, 57 }, { -3, 65 }, { -3, 66 }, { 0, 62 },
1039 { 9, 51 }, { -1, 66 }, { -2, 71 }, { -2, 75 },
1040 { -1, 70 }, { -9, 72 }, { 14, 60 }, { 16, 37 },
1041 { 0, 47 }, { 18, 35 }, { 11, 37 }, { 12, 41 },
1042 { 10, 41 }, { 2, 48 }, { 12, 41 }, { 13, 41 },
1043 { 0, 59 }, { 3, 50 }, { 19, 40 }, { 3, 66 },
1044 { 18, 50 },
1045
1046 /* 338 - 398 */
1047 { 19, -6 }, { 18, -6 }, { 14, 0 }, { 26, -12 },
1048 { 31, -16 }, { 33, -25 }, { 33, -22 }, { 37, -28 },
1049 { 39, -30 }, { 42, -30 }, { 47, -42 }, { 45, -36 },
1050 { 49, -34 }, { 41, -17 }, { 32, 9 }, { 69, -71 },
1051 { 63, -63 }, { 66, -64 }, { 77, -74 }, { 54, -39 },
1052 { 52, -35 }, { 41, -10 }, { 36, 0 }, { 40, -1 },
1053 { 30, 14 }, { 28, 26 }, { 23, 37 }, { 12, 55 },
1054 { 11, 65 }, { 37, -33 }, { 39, -36 }, { 40, -37 },
1055 { 38, -30 }, { 46, -33 }, { 42, -30 }, { 40, -24 },
1056 { 49, -29 }, { 38, -12 }, { 40, -10 }, { 38, -3 },
1057 { 46, -5 }, { 31, 20 }, { 29, 30 }, { 25, 44 },
1058 { 12, 48 }, { 11, 49 }, { 26, 45 }, { 22, 22 },
1059 { 23, 22 }, { 27, 21 }, { 33, 20 }, { 26, 28 },
1060 { 30, 24 }, { 27, 34 }, { 18, 42 }, { 25, 39 },
1061 { 18, 50 }, { 12, 70 }, { 21, 54 }, { 14, 71 },
1062 { 11, 83 },
1063
43efd19a 1064 /* 399 - 435 */
1b7576e7 1065 { 25, 32 }, { 21, 49 }, { 21, 54 },
43efd19a 1066 { -5, 85 }, { -6, 81 }, { -10, 77 }, { -7, 81 },
1b7576e7 1067 { -17, 80 }, { -18, 73 }, { -4, 74 }, { -10, 83 },
43efd19a
LM
1068 { -9, 71 }, { -9, 67 }, { -1, 61 }, { -8, 66 },
1069 { -14, 66 }, { 0, 59 }, { 2, 59 }, { 17, -10 },
1070 { 32, -13 }, { 42, -9 }, { 49, -5 }, { 53, 0 },
1071 { 64, 3 }, { 68, 10 }, { 66, 27 }, { 47, 57 },
1072 { -5, 71 }, { 0, 24 }, { -1, 36 }, { -2, 42 },
1b7576e7 1073 { -2, 52 }, { -9, 57 }, { -6, 63 }, { -4, 65 },
43efd19a
LM
1074 { -4, 67 }, { -7, 82 },
1075
1076 /* 436 - 459 */
1077 { -3, 81 }, { -3, 76 }, { -7, 72 }, { -6, 78 },
1078 { -12, 72 }, { -14, 68 }, { -3, 70 }, { -6, 76 },
1079 { -5, 66 }, { -5, 62 }, { 0, 57 }, { -4, 61 },
1080 { -9, 60 }, { 1, 54 }, { 2, 58 }, { 17, -10 },
1081 { 32, -13 }, { 42, -9 }, { 49, -5 }, { 53, 0 },
1082 { 64, 3 }, { 68, 10 }, { 66, 27 }, { 47, 57 },
e5017ab8
LA
1083 },
1084
1085 /* i_cabac_init_idc == 2 */
1086 {
1087 /* 0 - 10 */
1088 { 20, -15 }, { 2, 54 }, { 3, 74 }, { 20, -15 },
1089 { 2, 54 }, { 3, 74 }, { -28, 127 }, { -23, 104 },
1090 { -6, 53 }, { -1, 54 }, { 7, 51 },
1091
1092 /* 11 - 23 */
1093 { 29, 16 }, { 25, 0 }, { 14, 0 }, { -10, 51 },
1094 { -3, 62 }, { -27, 99 }, { 26, 16 }, { -4, 85 },
1095 { -24, 102 }, { 5, 57 }, { 6, 57 }, { -17, 73 },
1096 { 14, 57 },
1097
1098 /* 24 - 39 */
1099 { 20, 40 }, { 20, 10 }, { 29, 0 }, { 54, 0 },
1100 { 37, 42 }, { 12, 97 }, { -32, 127 }, { -22, 117 },
1101 { -2, 74 }, { -4, 85 }, { -24, 102 }, { 5, 57 },
1102 { -6, 93 }, { -14, 88 }, { -6, 44 }, { 4, 55 },
1103
1104 /* 40 - 53 */
1105 { -11, 89 },{ -15, 103 },{ -21, 116 },{ 19, 57 },
1106 { 20, 58 },{ 4, 84 },{ 6, 96 },{ 1, 63 },
1107 { -5, 85 },{ -13, 106 },{ 5, 63 },{ 6, 75 },
1108 { -3, 90 },{ -1, 101 },
1109
1110 /* 54 - 59 */
1111 { 3, 55 },{ -4, 79 },{ -2, 75 },{ -12, 97 },
1112 { -7, 50 },{ 1, 60 },
1113
1114 /* 60 - 69 */
1115 { 0, 41 }, { 0, 63 }, { 0, 63 }, { 0, 63 },
1116 { -9, 83 }, { 4, 86 }, { 0, 97 }, { -7, 72 },
1117 { 13, 41 }, { 3, 62 },
1118
1119 /* 70 - 104 */
1120 { 7, 34 }, { -9, 88 }, { -20, 127 }, { -36, 127 },
1121 { -17, 91 }, { -14, 95 }, { -25, 84 }, { -25, 86 },
1122 { -12, 89 }, { -17, 91 }, { -31, 127 }, { -14, 76 },
1123 { -18, 103 }, { -13, 90 }, { -37, 127 }, { 11, 80 },
1124 { 5, 76 }, { 2, 84 }, { 5, 78 }, { -6, 55 },
1125 { 4, 61 }, { -14, 83 }, { -37, 127 }, { -5, 79 },
1126 { -11, 104 }, { -11, 91 }, { -30, 127 }, { 0, 65 },
1127 { -2, 79 }, { 0, 72 }, { -4, 92 }, { -6, 56 },
1128 { 3, 68 }, { -8, 71 }, { -13, 98 },
1129
1130 /* 105 -> 165 */
1131 { -4, 86 }, { -12, 88 }, { -5, 82 }, { -3, 72 },
1132 { -4, 67 }, { -8, 72 }, { -16, 89 }, { -9, 69 },
1133 { -1, 59 }, { 5, 66 }, { 4, 57 }, { -4, 71 },
1134 { -2, 71 }, { 2, 58 }, { -1, 74 }, { -4, 44 },
1135 { -1, 69 }, { 0, 62 }, { -7, 51 }, { -4, 47 },
1136 { -6, 42 }, { -3, 41 }, { -6, 53 }, { 8, 76 },
1137 { -9, 78 }, { -11, 83 }, { 9, 52 }, { 0, 67 },
1138 { -5, 90 }, { 1, 67 }, { -15, 72 }, { -5, 75 },
1139 { -8, 80 }, { -21, 83 }, { -21, 64 }, { -13, 31 },
1140 { -25, 64 }, { -29, 94 }, { 9, 75 }, { 17, 63 },
1141 { -8, 74 }, { -5, 35 }, { -2, 27 }, { 13, 91 },
1142 { 3, 65 }, { -7, 69 }, { 8, 77 }, { -10, 66 },
1143 { 3, 62 }, { -3, 68 }, { -20, 81 }, { 0, 30 },
1144 { 1, 7 }, { -3, 23 }, { -21, 74 }, { 16, 66 },
1145 { -23, 124 }, { 17, 37 }, { 44, -18 }, { 50, -34 },
1146 { -22, 127 },
1147
1148 /* 166 - 226 */
1149 { 4, 39 }, { 0, 42 }, { 7, 34 }, { 11, 29 },
1150 { 8, 31 }, { 6, 37 }, { 7, 42 }, { 3, 40 },
1151 { 8, 33 }, { 13, 43 }, { 13, 36 }, { 4, 47 },
1152 { 3, 55 }, { 2, 58 }, { 6, 60 }, { 8, 44 },
1153 { 11, 44 }, { 14, 42 }, { 7, 48 }, { 4, 56 },
1154 { 4, 52 }, { 13, 37 }, { 9, 49 }, { 19, 58 },
1155 { 10, 48 }, { 12, 45 }, { 0, 69 }, { 20, 33 },
1156 { 8, 63 }, { 35, -18 }, { 33, -25 }, { 28, -3 },
1157 { 24, 10 }, { 27, 0 }, { 34, -14 }, { 52, -44 },
1158 { 39, -24 }, { 19, 17 }, { 31, 25 }, { 36, 29 },
1159 { 24, 33 }, { 34, 15 }, { 30, 20 }, { 22, 73 },
1160 { 20, 34 }, { 19, 31 }, { 27, 44 }, { 19, 16 },
1161 { 15, 36 }, { 15, 36 }, { 21, 28 }, { 25, 21 },
1162 { 30, 20 }, { 31, 12 }, { 27, 16 }, { 24, 42 },
1163 { 0, 93 }, { 14, 56 }, { 15, 57 }, { 26, 38 },
1164 { -24, 127 },
1165
1166 /* 227 - 275 */
1167 { -24, 115 }, { -22, 82 }, { -9, 62 }, { 0, 53 },
1168 { 0, 59 }, { -14, 85 }, { -13, 89 }, { -13, 94 },
1169 { -11, 92 }, { -29, 127 }, { -21, 100 }, { -14, 57 },
1170 { -12, 67 }, { -11, 71 }, { -10, 77 }, { -21, 85 },
1171 { -16, 88 }, { -23, 104 }, { -15, 98 }, { -37, 127 },
1172 { -10, 82 }, { -8, 48 }, { -8, 61 }, { -8, 66 },
1173 { -7, 70 }, { -14, 75 }, { -10, 79 }, { -9, 83 },
1174 { -12, 92 }, { -18, 108 }, { -4, 79 }, { -22, 69 },
1175 { -16, 75 }, { -2, 58 }, { 1, 58 }, { -13, 78 },
1176 { -9, 83 }, { -4, 81 }, { -13, 99 }, { -13, 81 },
1177 { -6, 38 }, { -13, 62 }, { -6, 58 }, { -2, 59 },
1178 { -16, 73 }, { -10, 76 }, { -13, 86 }, { -9, 83 },
1179 { -10, 87 },
1180
1181 /* 276 a bit special (not used, bypass is used instead) */
1182 { 0, 0 },
1183
1184 /* 277 - 337 */
1185 { -22, 127 }, { -25, 127 }, { -25, 120 }, { -27, 127 },
1186 { -19, 114 }, { -23, 117 }, { -25, 118 }, { -26, 117 },
1187 { -24, 113 }, { -28, 118 }, { -31, 120 }, { -37, 124 },
1188 { -10, 94 }, { -15, 102 }, { -10, 99 }, { -13, 106 },
1189 { -50, 127 }, { -5, 92 }, { 17, 57 }, { -5, 86 },
1190 { -13, 94 }, { -12, 91 }, { -2, 77 }, { 0, 71 },
1191 { -1, 73 }, { 4, 64 }, { -7, 81 }, { 5, 64 },
1192 { 15, 57 }, { 1, 67 }, { 0, 68 }, { -10, 67 },
1193 { 1, 68 }, { 0, 77 }, { 2, 64 }, { 0, 68 },
1194 { -5, 78 }, { 7, 55 }, { 5, 59 }, { 2, 65 },
1195 { 14, 54 }, { 15, 44 }, { 5, 60 }, { 2, 70 },
1196 { -2, 76 }, { -18, 86 }, { 12, 70 }, { 5, 64 },
1197 { -12, 70 }, { 11, 55 }, { 5, 56 }, { 0, 69 },
1198 { 2, 65 }, { -6, 74 }, { 5, 54 }, { 7, 54 },
1199 { -6, 76 }, { -11, 82 }, { -2, 77 }, { -2, 77 },
1200 { 25, 42 },
1201
1202 /* 338 - 398 */
1203 { 17, -13 }, { 16, -9 }, { 17, -12 }, { 27, -21 },
1204 { 37, -30 }, { 41, -40 }, { 42, -41 }, { 48, -47 },
1205 { 39, -32 }, { 46, -40 }, { 52, -51 }, { 46, -41 },
1206 { 52, -39 }, { 43, -19 }, { 32, 11 }, { 61, -55 },
1207 { 56, -46 }, { 62, -50 }, { 81, -67 }, { 45, -20 },
1208 { 35, -2 }, { 28, 15 }, { 34, 1 }, { 39, 1 },
1209 { 30, 17 }, { 20, 38 }, { 18, 45 }, { 15, 54 },
1210 { 0, 79 }, { 36, -16 }, { 37, -14 }, { 37, -17 },
1211 { 32, 1 }, { 34, 15 }, { 29, 15 }, { 24, 25 },
1212 { 34, 22 }, { 31, 16 }, { 35, 18 }, { 31, 28 },
1213 { 33, 41 }, { 36, 28 }, { 27, 47 }, { 21, 62 },
1214 { 18, 31 }, { 19, 26 }, { 36, 24 }, { 24, 23 },
1215 { 27, 16 }, { 24, 30 }, { 31, 29 }, { 22, 41 },
1216 { 22, 42 }, { 16, 60 }, { 15, 52 }, { 14, 60 },
1217 { 3, 78 }, { -16, 123 }, { 21, 53 }, { 22, 56 },
1218 { 25, 61 },
43efd19a
LM
1219
1220 /* 399 - 435 */
1221 { 21, 33 }, { 19, 50 }, { 17, 61 },
1222 { -3, 78 }, { -8, 74 }, { -9, 72 }, { -10, 72 },
1223 { -18, 75 }, { -12, 71 }, { -11, 63 }, { -5, 70 },
1224 { -17, 75 }, { -14, 72 }, { -16, 67 }, { -8, 53 },
1225 { -14, 59 }, { -9, 52 }, { -11, 68 }, { 9, -2 },
1226 { 30, -10 }, { 31, -4 }, { 33, -1 }, { 33, 7 },
1227 { 31, 12 }, { 37, 23 }, { 31, 38 }, { 20, 64 },
1228 { -9, 71 }, { -7, 37 }, { -8, 44 }, { -11, 49 },
1229 { -10, 56 }, { -12, 59 }, { -8, 63 }, { -9, 67 },
1230 { -6, 68 }, { -10, 79 },
1231
1232 /* 436 - 459 */
1233 { -3, 78 }, { -8, 74 }, { -9, 72 }, { -10, 72 },
1234 { -18, 75 }, { -12, 71 }, { -11, 63 }, { -5, 70 },
1235 { -17, 75 }, { -14, 72 }, { -16, 67 }, { -8, 53 },
1236 { -14, 59 }, { -9, 52 }, { -11, 68 }, { 9, -2 },
1237 { 30, -10 }, { 31, -4 }, { 33, -1 }, { 33, 7 },
1238 { 31, 12 }, { 37, 23 }, { 31, 38 }, { 20, 64 },
e5017ab8
LA
1239 }
1240};