Statistics
| Branch: | Revision:

ffmpeg / libavcodec / h264data.h @ 5b21bdab

History | View | Annotate | Download (55.5 KB)

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