forgot
[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
0c1a9eda 211static uint8_t h263_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