this should make the decoder safe for big-endian platforms
[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 ** */
7af75e6c 13const uint8_t inter_MCBPC_code[28] = {
4949028f
J
14 1, 3, 2, 5,
15 3, 4, 3, 3,
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};
7af75e6c
MN
22const uint8_t inter_MCBPC_bits[28] = {
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
0c1a9eda 32const uint8_t cbpy_tab[16][2] =
de6d9b64
FB
33{
34 {3,4}, {5,5}, {4,5}, {9,4}, {3,5}, {7,4}, {2,6}, {11,4},
35 {2,5}, {3,6}, {5,4}, {10,4}, {4,4}, {8,4}, {6,4}, {3,2}
36};
37
0c1a9eda 38const uint8_t mvtab[33][2] =
de6d9b64
FB
39{
40 {1,1}, {1,2}, {1,3}, {1,4}, {3,6}, {5,7}, {4,7}, {3,7},
41 {11,9}, {10,9}, {9,9}, {17,10}, {16,10}, {15,10}, {14,10}, {13,10},
42 {12,10}, {11,10}, {10,10}, {9,10}, {8,10}, {7,10}, {6,10}, {5,10},
43 {4,10}, {7,11}, {6,11}, {5,11}, {4,11}, {3,11}, {2,11}, {3,12},
44 {2,12}
45};
46
47/* third non intra table */
0c1a9eda 48const uint16_t inter_vlc[103][2] = {
de6d9b64
FB
49{ 0x2, 2 },{ 0xf, 4 },{ 0x15, 6 },{ 0x17, 7 },
50{ 0x1f, 8 },{ 0x25, 9 },{ 0x24, 9 },{ 0x21, 10 },
51{ 0x20, 10 },{ 0x7, 11 },{ 0x6, 11 },{ 0x20, 11 },
52{ 0x6, 3 },{ 0x14, 6 },{ 0x1e, 8 },{ 0xf, 10 },
53{ 0x21, 11 },{ 0x50, 12 },{ 0xe, 4 },{ 0x1d, 8 },
54{ 0xe, 10 },{ 0x51, 12 },{ 0xd, 5 },{ 0x23, 9 },
55{ 0xd, 10 },{ 0xc, 5 },{ 0x22, 9 },{ 0x52, 12 },
56{ 0xb, 5 },{ 0xc, 10 },{ 0x53, 12 },{ 0x13, 6 },
57{ 0xb, 10 },{ 0x54, 12 },{ 0x12, 6 },{ 0xa, 10 },
58{ 0x11, 6 },{ 0x9, 10 },{ 0x10, 6 },{ 0x8, 10 },
59{ 0x16, 7 },{ 0x55, 12 },{ 0x15, 7 },{ 0x14, 7 },
60{ 0x1c, 8 },{ 0x1b, 8 },{ 0x21, 9 },{ 0x20, 9 },
61{ 0x1f, 9 },{ 0x1e, 9 },{ 0x1d, 9 },{ 0x1c, 9 },
62{ 0x1b, 9 },{ 0x1a, 9 },{ 0x22, 11 },{ 0x23, 11 },
63{ 0x56, 12 },{ 0x57, 12 },{ 0x7, 4 },{ 0x19, 9 },
64{ 0x5, 11 },{ 0xf, 6 },{ 0x4, 11 },{ 0xe, 6 },
65{ 0xd, 6 },{ 0xc, 6 },{ 0x13, 7 },{ 0x12, 7 },
66{ 0x11, 7 },{ 0x10, 7 },{ 0x1a, 8 },{ 0x19, 8 },
67{ 0x18, 8 },{ 0x17, 8 },{ 0x16, 8 },{ 0x15, 8 },
68{ 0x14, 8 },{ 0x13, 8 },{ 0x18, 9 },{ 0x17, 9 },
69{ 0x16, 9 },{ 0x15, 9 },{ 0x14, 9 },{ 0x13, 9 },
70{ 0x12, 9 },{ 0x11, 9 },{ 0x7, 10 },{ 0x6, 10 },
71{ 0x5, 10 },{ 0x4, 10 },{ 0x24, 11 },{ 0x25, 11 },
72{ 0x26, 11 },{ 0x27, 11 },{ 0x58, 12 },{ 0x59, 12 },
73{ 0x5a, 12 },{ 0x5b, 12 },{ 0x5c, 12 },{ 0x5d, 12 },
74{ 0x5e, 12 },{ 0x5f, 12 },{ 0x3, 7 },
75};
76
0c1a9eda 77const int8_t inter_level[102] = {
de6d9b64
FB
78 1, 2, 3, 4, 5, 6, 7, 8,
79 9, 10, 11, 12, 1, 2, 3, 4,
80 5, 6, 1, 2, 3, 4, 1, 2,
81 3, 1, 2, 3, 1, 2, 3, 1,
82 2, 3, 1, 2, 1, 2, 1, 2,
83 1, 2, 1, 1, 1, 1, 1, 1,
84 1, 1, 1, 1, 1, 1, 1, 1,
85 1, 1, 1, 2, 3, 1, 2, 1,
86 1, 1, 1, 1, 1, 1, 1, 1,
87 1, 1, 1, 1, 1, 1, 1, 1,
88 1, 1, 1, 1, 1, 1, 1, 1,
89 1, 1, 1, 1, 1, 1, 1, 1,
90 1, 1, 1, 1, 1, 1,
91};
92
0c1a9eda 93const int8_t inter_run[102] = {
de6d9b64
FB
94 0, 0, 0, 0, 0, 0, 0, 0,
95 0, 0, 0, 0, 1, 1, 1, 1,
96 1, 1, 2, 2, 2, 2, 3, 3,
97 3, 4, 4, 4, 5, 5, 5, 6,
98 6, 6, 7, 7, 8, 8, 9, 9,
99 10, 10, 11, 12, 13, 14, 15, 16,
100 17, 18, 19, 20, 21, 22, 23, 24,
101 25, 26, 0, 0, 0, 1, 1, 2,
102 3, 4, 5, 6, 7, 8, 9, 10,
103 11, 12, 13, 14, 15, 16, 17, 18,
104 19, 20, 21, 22, 23, 24, 25, 26,
105 27, 28, 29, 30, 31, 32, 33, 34,
106 35, 36, 37, 38, 39, 40,
107};
108
109static RLTable rl_inter = {
110 102,
111 58,
112 inter_vlc,
113 inter_run,
114 inter_level,
115};
116
0c1a9eda 117const uint16_t intra_vlc_aic[103][2] = {
ef5b1b5a
J
118{ 0x2, 2 }, { 0x6, 3 }, { 0xe, 4 }, { 0xc, 5 },
119{ 0xd, 5 }, { 0x10, 6 }, { 0x11, 6 }, { 0x12, 6 },
120{ 0x16, 7 }, { 0x1b, 8 }, { 0x20, 9 }, { 0x21, 9 },
121{ 0x1a, 9 }, { 0x1b, 9 }, { 0x1c, 9 }, { 0x1d, 9 },
122{ 0x1e, 9 }, { 0x1f, 9 }, { 0x23, 11 }, { 0x22, 11 },
123{ 0x57, 12 }, { 0x56, 12 }, { 0x55, 12 }, { 0x54, 12 },
124{ 0x53, 12 }, { 0xf, 4 }, { 0x14, 6 }, { 0x14, 7 },
125{ 0x1e, 8 }, { 0xf, 10 }, { 0x21, 11 }, { 0x50, 12 },
126{ 0xb, 5 }, { 0x15, 7 }, { 0xe, 10 }, { 0x9, 10 },
127{ 0x15, 6 }, { 0x1d, 8 }, { 0xd, 10 }, { 0x51, 12 },
128{ 0x13, 6 }, { 0x23, 9 }, { 0x7, 11 }, { 0x17, 7 },
129{ 0x22, 9 }, { 0x52, 12 }, { 0x1c, 8 }, { 0xc, 10 },
130{ 0x1f, 8 }, { 0xb, 10 }, { 0x25, 9 }, { 0xa, 10 },
131{ 0x24, 9 }, { 0x6, 11 }, { 0x21, 10 }, { 0x20, 10 },
132{ 0x8, 10 }, { 0x20, 11 }, { 0x7, 4 }, { 0xc, 6 },
133{ 0x10, 7 }, { 0x13, 8 }, { 0x11, 9 }, { 0x12, 9 },
134{ 0x4, 10 }, { 0x27, 11 }, { 0x26, 11 }, { 0x5f, 12 },
135{ 0xf, 6 }, { 0x13, 9 }, { 0x5, 10 }, { 0x25, 11 },
136{ 0xe, 6 }, { 0x14, 9 }, { 0x24, 11 }, { 0xd, 6 },
137{ 0x6, 10 }, { 0x5e, 12 }, { 0x11, 7 }, { 0x7, 10 },
138{ 0x13, 7 }, { 0x5d, 12 }, { 0x12, 7 }, { 0x5c, 12 },
139{ 0x14, 8 }, { 0x5b, 12 }, { 0x15, 8 }, { 0x1a, 8 },
140{ 0x19, 8 }, { 0x18, 8 }, { 0x17, 8 }, { 0x16, 8 },
141{ 0x19, 9 }, { 0x15, 9 }, { 0x16, 9 }, { 0x18, 9 },
142{ 0x17, 9 }, { 0x4, 11 }, { 0x5, 11 }, { 0x58, 12 },
143{ 0x59, 12 }, { 0x5a, 12 }, { 0x3, 7 },
d140623f
J
144};
145
0c1a9eda 146const int8_t intra_run_aic[102] = {
ef5b1b5a
J
147 0, 0, 0, 0, 0, 0, 0, 0,
148 0, 0, 0, 0, 0, 0, 0, 0,
149 0, 0, 0, 0, 0, 0, 0, 0,
150 0, 1, 1, 1, 1, 1, 1, 1,
151 2, 2, 2, 2, 3, 3, 3, 3,
152 4, 4, 4, 5, 5, 5, 6, 6,
153 7, 7, 8, 8, 9, 9, 10, 11,
15412, 13, 0, 0, 0, 0, 0, 0,
155 0, 0, 0, 0, 1, 1, 1, 1,
156 2, 2, 2, 3, 3, 3, 4, 4,
157 5, 5, 6, 6, 7, 7, 8, 9,
15810, 11, 12, 13, 14, 15, 16, 17,
15918, 19, 20, 21, 22, 23,
160};
161
0c1a9eda 162const int8_t intra_level_aic[102] = {
ef5b1b5a
J
163 1, 2, 3, 4, 5, 6, 7, 8,
164 9, 10, 11, 12, 13, 14, 15, 16,
16517, 18, 19, 20, 21, 22, 23, 24,
16625, 1, 2, 3, 4, 5, 6, 7,
167 1, 2, 3, 4, 1, 2, 3, 4,
168 1, 2, 3, 1, 2, 3, 1, 2,
169 1, 2, 1, 2, 1, 2, 1, 1,
170 1, 1, 1, 2, 3, 4, 5, 6,
171 7, 8, 9, 10, 1, 2, 3, 4,
172 1, 2, 3, 1, 2, 3, 1, 2,
173 1, 2, 1, 2, 1, 2, 1, 1,
174 1, 1, 1, 1, 1, 1, 1, 1,
175 1, 1, 1, 1, 1, 1,
d140623f
J
176};
177
178static RLTable rl_intra_aic = {
179 102,
180 58,
ef5b1b5a
J
181 intra_vlc_aic,
182 intra_run_aic,
183 intra_level_aic,
d140623f
J
184};
185
3e8a5124
MN
186static const uint8_t wrong_run[102] = {
187 1, 2, 3, 5, 4, 10, 9, 8,
18811, 15, 17, 16, 23, 22, 21, 20,
18919, 18, 25, 24, 27, 26, 11, 7,
190 6, 1, 2, 13, 2, 2, 2, 2,
191 6, 12, 3, 9, 1, 3, 4, 3,
192 7, 4, 1, 1, 5, 5, 14, 6,
193 1, 7, 1, 8, 1, 1, 1, 1,
19410, 1, 1, 5, 9, 17, 25, 24,
19529, 33, 32, 41, 2, 23, 28, 31,
196 3, 22, 30, 4, 27, 40, 8, 26,
197 6, 39, 7, 38, 16, 37, 15, 10,
19811, 12, 13, 14, 1, 21, 20, 18,
19919, 2, 1, 34, 35, 36
200};
201
0c1a9eda 202static const uint16_t h263_format[8][2] = {
de6d9b64
FB
203 { 0, 0 },
204 { 128, 96 },
205 { 176, 144 },
206 { 352, 288 },
207 { 704, 576 },
208 { 1408, 1152 },
209};
8f8402e4 210
68b94c35 211uint8_t ff_aic_dc_scale_table[32]={
8f8402e4
MN
212// 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
213 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
214};
215
68b94c35
MN
216static const uint8_t modified_quant_tab[2][32]={
217// 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
218{
219 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
220},{
221 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
222}
223};
224
332f9ac4 225const uint8_t ff_h263_chroma_qscale_table[32]={
68b94c35
MN
226// 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
227 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
228};
229
230const uint16_t ff_mba_max[6]={
231 47, 98, 395,1583,6335,9215
232};
233
234const uint8_t ff_mba_length[6]={
235 6, 7, 9, 11, 13, 14
236};
332f9ac4
MN
237
238const uint8_t ff_h263_loop_filter_strength[32]={
239// 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
240 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
241};
242