Disable B-frames decoding until they produce correct picture
[libav.git] / libavcodec / h263data.h
CommitLineData
983e3246
MN
1/**
2 * @file h263data.h
3 * H.263 tables.
4 */
5
de6d9b64
FB
6
7/* intra MCBPC, mb_type = (intra), then (intraq) */
7af75e6c
MN
8const uint8_t intra_MCBPC_code[9] = { 1, 1, 2, 3, 1, 1, 2, 3, 1 };
9const uint8_t intra_MCBPC_bits[9] = { 1, 3, 3, 3, 4, 6, 6, 6, 9 };
de6d9b64
FB
10
11/* inter MCBPC, mb_type = (inter), (intra), (interq), (intraq), (inter4v) */
96815ce9 12/* Changed the tables for interq and inter4v+q, following the standard ** Juanjo ** */
115329f1
DB
13const uint8_t inter_MCBPC_code[28] = {
14 1, 3, 2, 5,
15 3, 4, 3, 3,
4949028f
J
16 3, 7, 6, 5,
17 4, 4, 3, 2,
18 2, 5, 4, 5,
7af75e6c 19 1, 0, 0, 0, /* Stuffing */
96815ce9 20 2, 12, 14, 15,
4949028f 21};
115329f1 22const uint8_t inter_MCBPC_bits[28] = {
7af75e6c
MN
23 1, 4, 4, 6, /* inter */
24 5, 8, 8, 7, /* intra */
25 3, 7, 7, 9, /* interQ */
26 6, 9, 9, 9, /* intraQ */
27 3, 7, 7, 8, /* inter4 */
28 9, 0, 0, 0, /* Stuffing */
29 11, 13, 13, 13,/* inter4Q*/
4949028f
J
30};
31
b40cd4e0 32static const uint8_t h263_mbtype_b_tab[15][2] = {
115329f1
DB
33 {1, 1},
34 {3, 3},
35 {1, 5},
b40cd4e0
MN
36 {4, 4},
37 {5, 4},
38 {6, 6},
39 {2, 4},
40 {3, 4},
41 {7, 6},
42 {4, 6},
43 {5, 6},
44 {1, 6},
45 {1,10},
46 {1, 7},
47 {1, 8},
48};
49
50static const int h263_mb_type_b_map[15]= {
51 MB_TYPE_DIRECT2 | MB_TYPE_L0L1,
52 MB_TYPE_DIRECT2 | MB_TYPE_L0L1 | MB_TYPE_CBP,
53 MB_TYPE_DIRECT2 | MB_TYPE_L0L1 | MB_TYPE_CBP | MB_TYPE_QUANT,
8135f8df
MN
54 MB_TYPE_L0 | MB_TYPE_16x16,
55 MB_TYPE_L0 | MB_TYPE_CBP | MB_TYPE_16x16,
56 MB_TYPE_L0 | MB_TYPE_CBP | MB_TYPE_QUANT | MB_TYPE_16x16,
57 MB_TYPE_L1 | MB_TYPE_16x16,
58 MB_TYPE_L1 | MB_TYPE_CBP | MB_TYPE_16x16,
59 MB_TYPE_L1 | MB_TYPE_CBP | MB_TYPE_QUANT | MB_TYPE_16x16,
60 MB_TYPE_L0L1 | MB_TYPE_16x16,
61 MB_TYPE_L0L1 | MB_TYPE_CBP | MB_TYPE_16x16,
62 MB_TYPE_L0L1 | MB_TYPE_CBP | MB_TYPE_QUANT | MB_TYPE_16x16,
b40cd4e0 63 0, //stuffing
bb198e19
MN
64 MB_TYPE_INTRA4x4 | MB_TYPE_CBP,
65 MB_TYPE_INTRA4x4 | MB_TYPE_CBP | MB_TYPE_QUANT,
b40cd4e0
MN
66};
67
68const uint8_t cbpc_b_tab[4][2] = {
69{0, 1},
70{2, 2},
71{7, 3},
72{6, 3},
73};
74
0c1a9eda 75const uint8_t cbpy_tab[16][2] =
de6d9b64
FB
76{
77 {3,4}, {5,5}, {4,5}, {9,4}, {3,5}, {7,4}, {2,6}, {11,4},
78 {2,5}, {3,6}, {5,4}, {10,4}, {4,4}, {8,4}, {6,4}, {3,2}
79};
80
0c1a9eda 81const uint8_t mvtab[33][2] =
de6d9b64
FB
82{
83 {1,1}, {1,2}, {1,3}, {1,4}, {3,6}, {5,7}, {4,7}, {3,7},
84 {11,9}, {10,9}, {9,9}, {17,10}, {16,10}, {15,10}, {14,10}, {13,10},
85 {12,10}, {11,10}, {10,10}, {9,10}, {8,10}, {7,10}, {6,10}, {5,10},
86 {4,10}, {7,11}, {6,11}, {5,11}, {4,11}, {3,11}, {2,11}, {3,12},
87 {2,12}
88};
89
90/* third non intra table */
0c1a9eda 91const uint16_t inter_vlc[103][2] = {
de6d9b64
FB
92{ 0x2, 2 },{ 0xf, 4 },{ 0x15, 6 },{ 0x17, 7 },
93{ 0x1f, 8 },{ 0x25, 9 },{ 0x24, 9 },{ 0x21, 10 },
94{ 0x20, 10 },{ 0x7, 11 },{ 0x6, 11 },{ 0x20, 11 },
95{ 0x6, 3 },{ 0x14, 6 },{ 0x1e, 8 },{ 0xf, 10 },
96{ 0x21, 11 },{ 0x50, 12 },{ 0xe, 4 },{ 0x1d, 8 },
97{ 0xe, 10 },{ 0x51, 12 },{ 0xd, 5 },{ 0x23, 9 },
98{ 0xd, 10 },{ 0xc, 5 },{ 0x22, 9 },{ 0x52, 12 },
99{ 0xb, 5 },{ 0xc, 10 },{ 0x53, 12 },{ 0x13, 6 },
100{ 0xb, 10 },{ 0x54, 12 },{ 0x12, 6 },{ 0xa, 10 },
101{ 0x11, 6 },{ 0x9, 10 },{ 0x10, 6 },{ 0x8, 10 },
102{ 0x16, 7 },{ 0x55, 12 },{ 0x15, 7 },{ 0x14, 7 },
103{ 0x1c, 8 },{ 0x1b, 8 },{ 0x21, 9 },{ 0x20, 9 },
104{ 0x1f, 9 },{ 0x1e, 9 },{ 0x1d, 9 },{ 0x1c, 9 },
105{ 0x1b, 9 },{ 0x1a, 9 },{ 0x22, 11 },{ 0x23, 11 },
106{ 0x56, 12 },{ 0x57, 12 },{ 0x7, 4 },{ 0x19, 9 },
107{ 0x5, 11 },{ 0xf, 6 },{ 0x4, 11 },{ 0xe, 6 },
108{ 0xd, 6 },{ 0xc, 6 },{ 0x13, 7 },{ 0x12, 7 },
109{ 0x11, 7 },{ 0x10, 7 },{ 0x1a, 8 },{ 0x19, 8 },
110{ 0x18, 8 },{ 0x17, 8 },{ 0x16, 8 },{ 0x15, 8 },
111{ 0x14, 8 },{ 0x13, 8 },{ 0x18, 9 },{ 0x17, 9 },
112{ 0x16, 9 },{ 0x15, 9 },{ 0x14, 9 },{ 0x13, 9 },
113{ 0x12, 9 },{ 0x11, 9 },{ 0x7, 10 },{ 0x6, 10 },
114{ 0x5, 10 },{ 0x4, 10 },{ 0x24, 11 },{ 0x25, 11 },
115{ 0x26, 11 },{ 0x27, 11 },{ 0x58, 12 },{ 0x59, 12 },
116{ 0x5a, 12 },{ 0x5b, 12 },{ 0x5c, 12 },{ 0x5d, 12 },
117{ 0x5e, 12 },{ 0x5f, 12 },{ 0x3, 7 },
118};
119
0c1a9eda 120const int8_t inter_level[102] = {
de6d9b64
FB
121 1, 2, 3, 4, 5, 6, 7, 8,
122 9, 10, 11, 12, 1, 2, 3, 4,
123 5, 6, 1, 2, 3, 4, 1, 2,
124 3, 1, 2, 3, 1, 2, 3, 1,
125 2, 3, 1, 2, 1, 2, 1, 2,
126 1, 2, 1, 1, 1, 1, 1, 1,
127 1, 1, 1, 1, 1, 1, 1, 1,
128 1, 1, 1, 2, 3, 1, 2, 1,
129 1, 1, 1, 1, 1, 1, 1, 1,
130 1, 1, 1, 1, 1, 1, 1, 1,
131 1, 1, 1, 1, 1, 1, 1, 1,
132 1, 1, 1, 1, 1, 1, 1, 1,
133 1, 1, 1, 1, 1, 1,
134};
135
0c1a9eda 136const int8_t inter_run[102] = {
de6d9b64
FB
137 0, 0, 0, 0, 0, 0, 0, 0,
138 0, 0, 0, 0, 1, 1, 1, 1,
139 1, 1, 2, 2, 2, 2, 3, 3,
140 3, 4, 4, 4, 5, 5, 5, 6,
141 6, 6, 7, 7, 8, 8, 9, 9,
142 10, 10, 11, 12, 13, 14, 15, 16,
143 17, 18, 19, 20, 21, 22, 23, 24,
144 25, 26, 0, 0, 0, 1, 1, 2,
145 3, 4, 5, 6, 7, 8, 9, 10,
146 11, 12, 13, 14, 15, 16, 17, 18,
147 19, 20, 21, 22, 23, 24, 25, 26,
148 27, 28, 29, 30, 31, 32, 33, 34,
149 35, 36, 37, 38, 39, 40,
150};
151
152static RLTable rl_inter = {
153 102,
154 58,
155 inter_vlc,
156 inter_run,
157 inter_level,
158};
159
0c1a9eda 160const uint16_t intra_vlc_aic[103][2] = {
115329f1
DB
161{ 0x2, 2 }, { 0x6, 3 }, { 0xe, 4 }, { 0xc, 5 },
162{ 0xd, 5 }, { 0x10, 6 }, { 0x11, 6 }, { 0x12, 6 },
163{ 0x16, 7 }, { 0x1b, 8 }, { 0x20, 9 }, { 0x21, 9 },
164{ 0x1a, 9 }, { 0x1b, 9 }, { 0x1c, 9 }, { 0x1d, 9 },
165{ 0x1e, 9 }, { 0x1f, 9 }, { 0x23, 11 }, { 0x22, 11 },
166{ 0x57, 12 }, { 0x56, 12 }, { 0x55, 12 }, { 0x54, 12 },
167{ 0x53, 12 }, { 0xf, 4 }, { 0x14, 6 }, { 0x14, 7 },
168{ 0x1e, 8 }, { 0xf, 10 }, { 0x21, 11 }, { 0x50, 12 },
169{ 0xb, 5 }, { 0x15, 7 }, { 0xe, 10 }, { 0x9, 10 },
170{ 0x15, 6 }, { 0x1d, 8 }, { 0xd, 10 }, { 0x51, 12 },
171{ 0x13, 6 }, { 0x23, 9 }, { 0x7, 11 }, { 0x17, 7 },
172{ 0x22, 9 }, { 0x52, 12 }, { 0x1c, 8 }, { 0xc, 10 },
173{ 0x1f, 8 }, { 0xb, 10 }, { 0x25, 9 }, { 0xa, 10 },
174{ 0x24, 9 }, { 0x6, 11 }, { 0x21, 10 }, { 0x20, 10 },
175{ 0x8, 10 }, { 0x20, 11 }, { 0x7, 4 }, { 0xc, 6 },
176{ 0x10, 7 }, { 0x13, 8 }, { 0x11, 9 }, { 0x12, 9 },
177{ 0x4, 10 }, { 0x27, 11 }, { 0x26, 11 }, { 0x5f, 12 },
178{ 0xf, 6 }, { 0x13, 9 }, { 0x5, 10 }, { 0x25, 11 },
179{ 0xe, 6 }, { 0x14, 9 }, { 0x24, 11 }, { 0xd, 6 },
180{ 0x6, 10 }, { 0x5e, 12 }, { 0x11, 7 }, { 0x7, 10 },
181{ 0x13, 7 }, { 0x5d, 12 }, { 0x12, 7 }, { 0x5c, 12 },
182{ 0x14, 8 }, { 0x5b, 12 }, { 0x15, 8 }, { 0x1a, 8 },
183{ 0x19, 8 }, { 0x18, 8 }, { 0x17, 8 }, { 0x16, 8 },
184{ 0x19, 9 }, { 0x15, 9 }, { 0x16, 9 }, { 0x18, 9 },
185{ 0x17, 9 }, { 0x4, 11 }, { 0x5, 11 }, { 0x58, 12 },
ef5b1b5a 186{ 0x59, 12 }, { 0x5a, 12 }, { 0x3, 7 },
d140623f
J
187};
188
0c1a9eda 189const int8_t intra_run_aic[102] = {
115329f1
DB
190 0, 0, 0, 0, 0, 0, 0, 0,
191 0, 0, 0, 0, 0, 0, 0, 0,
192 0, 0, 0, 0, 0, 0, 0, 0,
193 0, 1, 1, 1, 1, 1, 1, 1,
194 2, 2, 2, 2, 3, 3, 3, 3,
195 4, 4, 4, 5, 5, 5, 6, 6,
196 7, 7, 8, 8, 9, 9, 10, 11,
19712, 13, 0, 0, 0, 0, 0, 0,
198 0, 0, 0, 0, 1, 1, 1, 1,
199 2, 2, 2, 3, 3, 3, 4, 4,
200 5, 5, 6, 6, 7, 7, 8, 9,
20110, 11, 12, 13, 14, 15, 16, 17,
20218, 19, 20, 21, 22, 23,
ef5b1b5a
J
203};
204
0c1a9eda 205const int8_t intra_level_aic[102] = {
115329f1
DB
206 1, 2, 3, 4, 5, 6, 7, 8,
207 9, 10, 11, 12, 13, 14, 15, 16,
20817, 18, 19, 20, 21, 22, 23, 24,
20925, 1, 2, 3, 4, 5, 6, 7,
210 1, 2, 3, 4, 1, 2, 3, 4,
211 1, 2, 3, 1, 2, 3, 1, 2,
212 1, 2, 1, 2, 1, 2, 1, 1,
213 1, 1, 1, 2, 3, 4, 5, 6,
214 7, 8, 9, 10, 1, 2, 3, 4,
215 1, 2, 3, 1, 2, 3, 1, 2,
216 1, 2, 1, 2, 1, 2, 1, 1,
217 1, 1, 1, 1, 1, 1, 1, 1,
ef5b1b5a 218 1, 1, 1, 1, 1, 1,
d140623f
J
219};
220
221static RLTable rl_intra_aic = {
222 102,
223 58,
ef5b1b5a
J
224 intra_vlc_aic,
225 intra_run_aic,
226 intra_level_aic,
d140623f
J
227};
228
3e8a5124 229static const uint8_t wrong_run[102] = {
115329f1
DB
230 1, 2, 3, 5, 4, 10, 9, 8,
23111, 15, 17, 16, 23, 22, 21, 20,
23219, 18, 25, 24, 27, 26, 11, 7,
233 6, 1, 2, 13, 2, 2, 2, 2,
234 6, 12, 3, 9, 1, 3, 4, 3,
235 7, 4, 1, 1, 5, 5, 14, 6,
236 1, 7, 1, 8, 1, 1, 1, 1,
23710, 1, 1, 5, 9, 17, 25, 24,
23829, 33, 32, 41, 2, 23, 28, 31,
239 3, 22, 30, 4, 27, 40, 8, 26,
240 6, 39, 7, 38, 16, 37, 15, 10,
24111, 12, 13, 14, 1, 21, 20, 18,
3e8a5124
MN
24219, 2, 1, 34, 35, 36
243};
244
0c1a9eda 245static const uint16_t h263_format[8][2] = {
de6d9b64
FB
246 { 0, 0 },
247 { 128, 96 },
248 { 176, 144 },
249 { 352, 288 },
250 { 704, 576 },
251 { 1408, 1152 },
252};
8f8402e4 253
c26ae41d 254const uint8_t ff_aic_dc_scale_table[32]={
8f8402e4
MN
255// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
256 0, 2, 4, 6, 8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62
257};
258
68b94c35
MN
259static const uint8_t modified_quant_tab[2][32]={
260// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
261{
262 0, 3, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9,10,11,12,13,14,15,16,17,18,18,19,20,21,22,23,24,25,26,27,28
263},{
264 0, 2, 3, 4, 5, 6, 7, 8, 9,10,11,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,31,31,26
115329f1 265}
68b94c35
MN
266};
267
332f9ac4 268const uint8_t ff_h263_chroma_qscale_table[32]={
68b94c35
MN
269// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
270 0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 9,10,10,11,11,12,12,12,13,13,13,14,14,14,14,14,15,15,15,15,15
271};
272
273const uint16_t ff_mba_max[6]={
274 47, 98, 395,1583,6335,9215
275};
276
3aeefb93
MN
277const uint8_t ff_mba_length[7]={
278 6, 7, 9, 11, 13, 14, 14
68b94c35 279};
332f9ac4
MN
280
281const uint8_t ff_h263_loop_filter_strength[32]={
282// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
283 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9,10,10,10,11,11,11,12,12,12
284};
285