r1053: Add Russian translation.
[cinelerra_cv.git] / quicktime / ffmpeg / libavcodec / vc9data.h
blob93db351cbb226f7b3866ba6e80a77c2d89997b6a
1 /**
2 * @file vc9data.h
3 * VC9 tables.
4 */
6 #ifndef VC9DATA_H
7 #define VC9DATA_H
9 /* bfraction is fractional, we scale to the GCD 3*5*7*8 = 840 */
10 const int16_t vc9_bfraction_lut[23] = {
11 420 /*1/2*/, 280 /*1/3*/, 560 /*2/3*/, 210 /*1/4*/,
12 630 /*3/4*/, 168 /*1/5*/, 336 /*2/5*/,
13 504 /*3/5*/, 672 /*4/5*/, 140 /*1/6*/, 700 /*5/6*/,
14 120 /*1/7*/, 240 /*2/7*/, 360 /*3/7*/, 480 /*4/7*/,
15 600 /*5/7*/, 720 /*6/7*/, 105 /*1/8*/, 315 /*3/8*/,
16 525 /*5/8*/, 735 /*7/8*/,
17 -1 /*inv.*/, 0 /*BI fm*/
19 const uint8_t vc9_bfraction_bits[23] = {
20 3, 3, 3, 3,
21 3, 3, 3,
22 7, 7, 7, 7,
23 7, 7, 7, 7,
24 7, 7, 7, 7,
25 7, 7,
26 7, 7
28 const uint8_t vc9_bfraction_codes[23] = {
29 0, 1, 2, 3,
30 4, 5, 6,
31 112, 113, 114, 115,
32 116, 117, 118, 119,
33 120, 121, 122, 123,
34 124, 125,
35 126, 127
38 //Same as H.264
39 static const AVRational vc9_pixel_aspect[16]={
40 {0, 1},
41 {1, 1},
42 {12, 11},
43 {10, 11},
44 {16, 11},
45 {40, 33},
46 {24, 11},
47 {20, 11},
48 {32, 11},
49 {80, 33},
50 {18, 11},
51 {15, 11},
52 {64, 33},
53 {160, 99},
54 {0, 1},
55 {0, 1}
58 /* BitPlane IMODE - such a small table... */
59 static const uint8_t vc9_imode_codes[7] = {
60 0, 2, 1, 3, 1, 2, 3
62 static const uint8_t vc9_imode_bits[7] = {
63 4, 2, 3, 2, 4, 3, 3
66 /* Normal-2 imode */
67 static const uint8_t vc9_norm2_codes[4] = {
68 0, 4, 5, 3
70 static const uint8_t vc9_norm2_bits[4] = {
71 1, 3, 3, 2
74 static const uint16_t vc9_norm6_codes[64] = {
75 0x001, 0x002, 0x003, 0x000, 0x004, 0x001, 0x002, 0x047, 0x005, 0x003, 0x004, 0x04B, 0x005, 0x04D, 0x04E, 0x30E,
76 0x006, 0x006, 0x007, 0x053, 0x008, 0x055, 0x056, 0x30D, 0x009, 0x059, 0x05A, 0x30C, 0x05C, 0x30B, 0x30A, 0x037,
77 0x007, 0x00A, 0x00B, 0x043, 0x00C, 0x045, 0x046, 0x309, 0x00D, 0x049, 0x04A, 0x308, 0x04C, 0x307, 0x306, 0x036,
78 0x00E, 0x051, 0x052, 0x305, 0x054, 0x304, 0x303, 0x035, 0x058, 0x302, 0x301, 0x034, 0x300, 0x033, 0x032, 0x007,
81 static const uint8_t vc9_norm6_bits[64] = {
82 1, 4, 4, 8, 4, 8, 8, 10, 4, 8, 8, 10, 8, 10, 10, 13,
83 4, 8, 8, 10, 8, 10, 10, 13, 8, 10, 10, 13, 10, 13, 13, 9,
84 4, 8, 8, 10, 8, 10, 10, 13, 8, 10, 10, 13, 10, 13, 13, 9,
85 8, 10, 10, 13, 10, 13, 13, 9, 10, 13, 13, 9, 13, 9, 9, 6,
87 /* Normal-6 imode */
88 static const uint8_t vc9_norm6_spec[64][5] = {
89 { 0, 1, 1 },
90 { 1, 2, 4 },
91 { 2, 3, 4 },
92 { 3, 0, 8 },
93 { 4, 4, 4 },
94 { 5, 1, 8 },
95 { 6, 2, 8 },
96 { 7, 2, 5, 7, 5 },
97 { 8, 5, 4 },
98 { 9, 3, 8 },
99 {10, 4, 8 },
100 {11, 2, 5, 11, 5 },
101 {12, 5, 8 },
102 {13, 2, 5, 13, 5 },
103 {14, 2, 5, 14, 5 },
104 {15, 3, 5, 14, 8 },
105 {16, 6, 4 },
106 {17, 6, 8 },
107 {18, 7, 8 },
108 {19, 2, 5, 19, 5 },
109 {20, 8, 8 },
110 {21, 2, 5, 21, 5 },
111 {22, 2, 5, 22, 5 },
112 {23, 3, 5, 13, 8 },
113 {24, 9, 8 },
114 {25, 2, 5, 25, 5 },
115 {26, 2, 5, 26, 5 },
116 {27, 3, 5, 12, 8 },
117 {28, 2, 5, 28, 5 },
118 {29, 3, 5, 11, 8 },
119 {30, 3, 5, 10, 8 },
120 {31, 3, 5, 7, 4 },
121 {32, 7, 4 },
122 {33, 10, 8 },
123 {34, 11, 8 },
124 {35, 2, 5, 3, 5 },
125 {36, 12, 8 },
126 {37, 2, 5, 5, 5 },
127 {38, 2, 5, 6, 5 },
128 {39, 3, 5, 9, 8 },
129 {40, 13, 8 },
130 {41, 2, 5, 9, 5 },
131 {42, 2, 5, 10, 5 },
132 {43, 3, 5, 8, 8 },
133 {44, 2, 5, 12, 5 },
134 {45, 3, 5, 7, 8 },
135 {46, 3, 5, 6, 8 },
136 {47, 3, 5, 6, 4 },
137 {48, 14, 8 },
138 {49, 2, 5, 17, 5 },
139 {50, 2, 5, 18, 5 },
140 {51, 3, 5, 5, 8 },
141 {52, 2, 5, 20, 5 },
142 {53, 3, 5, 4, 8 },
143 {54, 3, 5, 3, 8 },
144 {55, 3, 5, 5, 4 },
145 {56, 2, 5, 24, 5 },
146 {57, 3, 5, 2, 8 },
147 {58, 3, 5, 1, 8 },
148 {59, 3, 5, 4, 4 },
149 {60, 3, 5, 0, 8 },
150 {61, 3, 5, 3, 4 },
151 {62, 3, 5, 2, 4 },
152 {63, 3, 5, 1, 1 },
155 /* 4MV Block pattern VLC tables */
156 static const uint8_t vc9_4mv_block_pattern_codes[4][16] = {
157 { 14, 58, 59, 25, 12, 26, 15, 15, 13, 24, 27, 0, 28, 1, 2, 2},
158 { 8, 18, 19, 4, 20, 5, 30, 11, 21, 31, 6, 12, 7, 13, 14, 0},
159 { 15, 6, 7, 2, 8, 3, 28, 9, 10, 29, 4, 11, 5, 12, 13, 0},
160 { 0, 11, 12, 4, 13, 5, 30, 16, 14, 31, 6, 17, 7, 18, 19, 19}
162 static const uint8_t vc9_4mv_block_pattern_bits[4][16] = {
163 { 5, 6, 6, 5, 5, 5, 5, 4, 5, 5, 5, 3, 5, 3, 3, 2},
164 { 4, 5, 5, 4, 5, 4, 5, 4, 5, 5, 4, 4, 4, 4, 4, 2},
165 { 4, 4, 4, 4, 4, 4, 5, 4, 4, 5, 4, 4, 4, 4, 4, 3},
166 { 2, 4, 4, 4, 4, 4, 5, 5, 4, 5, 4, 5, 4, 5, 5, 4}
169 const uint8_t wmv3_dc_scale_table[32]={
170 0, 4, 6, 8, 8, 8, 9, 9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21
173 /* P-Picture CBPCY VLC tables */
174 static const uint16_t vc9_cbpcy_p_codes[4][64] = {
176 0, 1, 1, 4, 5, 1, 12, 4, 13, 14, 10, 11, 12, 7, 13, 2,
177 15, 1, 96, 1, 49, 97, 2, 100, 3, 4, 5, 101, 102, 52, 53, 4,
178 6, 7, 54, 103, 8, 9, 10, 110, 11, 12, 111, 56, 114, 58, 115, 5,
179 13, 7, 8, 9, 10, 11, 12, 30, 13, 14, 15, 118, 119, 62, 63, 3
182 0, 1, 2, 1, 3, 1, 16, 17, 5, 18, 12, 19, 13, 1, 28, 58,
183 1, 1, 1, 2, 3, 2, 3, 236, 237, 4, 5, 238, 6, 7, 239, 8,
184 9, 240, 10, 11, 121, 122, 12, 13, 14, 15, 241, 246, 16, 17, 124, 63,
185 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 247, 125
188 0, 1, 2, 3, 2, 3, 1, 4, 5, 24, 7, 13, 16, 17, 9, 5,
189 25, 1, 1, 1, 2, 3, 96, 194, 1, 2, 98, 99, 195, 200, 101, 26,
190 201, 102, 412, 413, 414, 54, 220, 111, 221, 3, 224, 113, 225, 114, 230, 29,
191 231, 415, 240, 4, 241, 484, 5, 243, 3, 244, 245, 485, 492, 493, 247, 31
194 0, 1, 1, 1, 2, 2, 3, 4, 3, 5, 6, 7, 8, 9, 10, 11,
195 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
196 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
197 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 28, 29, 30, 31
200 static const uint8_t vc9_cbpcy_p_bits[4][64] = {
202 13, 6, 5, 6, 6, 7, 7, 5, 7, 7, 6, 6, 6, 5, 6, 3,
203 7, 8, 8, 13, 7, 8, 13, 8, 13, 13, 13, 8, 8, 7, 7, 3,
204 13, 13, 7, 8, 13, 13, 13, 8, 13, 13, 8, 7, 8, 7, 8, 3,
205 13, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 8, 8, 7, 7, 2
208 14, 3, 3, 5, 3, 4, 5, 5, 3, 5, 4, 5, 4, 6, 5, 6,
209 8, 14, 13, 8, 8, 13, 13, 8, 8, 13, 13, 8, 13, 13, 8, 13,
210 13, 8, 13, 13, 7, 7, 13, 13, 13, 13, 8, 8, 13, 13, 7, 6,
211 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 8, 7
214 13, 5, 5, 5, 4, 4, 6, 4, 4, 6, 4, 5, 5, 5, 4, 3,
215 6, 8, 10, 9, 8, 8, 7, 8, 13, 13, 7, 7, 8, 8, 7, 5,
216 8, 7, 9, 9, 9, 6, 8, 7, 8, 13, 8, 7, 8, 7, 8, 5,
217 8, 9, 8, 13, 8, 9, 13, 8, 12, 8, 8, 9, 9, 9, 8, 5
220 9, 2, 3, 9, 2, 9, 9, 9, 2, 9, 9, 9, 9, 9, 9, 9,
221 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
222 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
223 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8
227 /* MacroBlock Transform Type: 7.1.3.11, p89
228 * 8x8:B
229 * 8x4:B:btm 8x4:B:top 8x4:B:both,
230 * 4x8:B:right 4x8:B:left 4x8:B:both
231 * 4x4:B 8x8:MB
232 * 8x4:MB:btm 8x4:MB:top 8x4,MB,both
233 * 4x8,MB,right 4x8,MB,left
234 * 4x4,MB */
235 static const uint16_t vc9_ttmb_codes[3][16] = {
237 0x0003,
238 0x002E, 0x005F, 0x0000,
239 0x0016, 0x0015, 0x0001,
240 0x0004, 0x0014,
241 0x02F1, 0x0179, 0x017B,
242 0x0BC0, 0x0BC1, 0x05E1,
243 0x017A
246 0x0006,
247 0x0006, 0x0003, 0x0007,
248 0x000F, 0x000E, 0x0000,
249 0x0002, 0x0002,
250 0x0014, 0x0011, 0x000B,
251 0x0009, 0x0021, 0x0015,
252 0x0020
255 0x0006,
256 0x0000, 0x000E, 0x0005,
257 0x0002, 0x0003, 0x0003,
258 0x000F, 0x0002,
259 0x0081, 0x0021, 0x0009,
260 0x0101, 0x0041, 0x0011,
261 0x0100
265 static const uint8_t vc9_ttmb_bits[3][16] = {
268 6, 7, 2,
269 5, 5, 2,
270 3, 5,
271 10, 9, 9,
272 12, 12, 11,
277 4, 4, 4,
278 4, 4, 3,
279 3, 2,
280 7, 7, 6,
281 6, 8, 7,
286 3, 4, 5,
287 3, 3, 4,
288 4, 2,
289 10, 8, 6,
290 11, 9, 7,
295 /* TTBLK (Transform Type per Block) tables */
296 static const uint8_t vc9_ttblk_codes[3][8] = {
297 { 0, 1, 3, 5, 16, 17, 18, 19},
298 { 3, 0, 1, 2, 3, 5, 8, 9},
299 { 1, 0, 1, 4, 6, 7, 10, 11}
301 static const uint8_t vc9_ttblk_bits[3][8] = {
302 { 2, 2, 2, 3, 5, 5, 5, 5},
303 { 2, 3, 3, 3, 3, 3, 4, 4},
304 { 2, 3, 3, 3, 3, 3, 4, 4}
307 /* SUBBLKPAT tables, p93-94, reordered */
308 static const uint8_t vc9_subblkpat_codes[3][15] = {
309 { 14, 12, 7, 11, 9, 26, 2, 10, 27, 8, 0, 6, 1, 15, 1},
310 { 14, 0, 8, 15, 10, 4, 23, 13, 5, 9, 25, 3, 24, 22, 1},
311 { 5, 6, 2, 2, 8, 0, 28, 3, 1, 3, 29, 1, 19, 18, 15}
313 static const uint8_t vc9_subblkpat_bits[3][15] = {
314 { 5, 5, 5, 5, 5, 6, 4, 5, 6, 5, 4, 5, 4, 5, 1},
315 { 4, 3, 4, 4, 4, 5, 5, 4, 5, 4, 5, 4, 5, 5, 2},
316 { 3, 3, 4, 3, 4, 5, 5, 3, 5, 4, 5, 4, 5, 5, 4}
319 /* MV differential tables, p265 */
320 static const uint16_t vc9_mv_diff_codes[4][73] = {
322 0, 2, 3, 8, 576, 3, 2, 6,
323 5, 577, 578, 7, 8, 9, 40, 19,
324 37, 82, 21, 22, 23, 579, 580, 166,
325 96, 167, 49, 194, 195, 581, 582, 583,
326 292, 293, 294, 13, 2, 7, 24, 50,
327 102, 295, 13, 7, 8, 18, 50, 103,
328 38, 20, 21, 22, 39, 204, 103, 23,
329 24, 25, 104, 410, 105, 106, 107, 108,
330 109, 220, 411, 442, 222, 443, 446, 447,
331 7 /* 73 elements */
334 0, 4, 5, 3, 4, 3, 4, 5,
335 20, 6, 21, 44, 45, 46, 3008, 95,
336 112, 113, 57, 3009, 3010, 116, 117, 3011,
337 118, 3012, 3013, 3014, 3015, 3016, 3017, 3018,
338 3019, 3020, 3021, 3022, 1, 4, 15, 160,
339 161, 41, 6, 11, 42, 162, 43, 119,
340 56, 57, 58, 163, 236, 237, 3023, 119,
341 120, 242, 122, 486, 1512, 487, 246, 494,
342 1513, 495, 1514, 1515, 1516, 1517, 1518, 1519,
343 31 /* 73 elements */
346 0, 512, 513, 514, 515, 2, 3, 258,
347 259, 260, 261, 262, 263, 264, 265, 266,
348 267, 268, 269, 270, 271, 272, 273, 274,
349 275, 276, 277, 278, 279, 280, 281, 282,
350 283, 284, 285, 286, 1, 5, 287, 288,
351 289, 290, 6, 7, 291, 292, 293, 294,
352 295, 296, 297, 298, 299, 300, 301, 302,
353 303, 304, 305, 306, 307, 308, 309, 310,
354 311, 312, 313, 314, 315, 316, 317, 318,
355 319 /* 73 elements */
358 0, 1, 1, 2, 3, 4, 1, 5,
359 4, 3, 5, 8, 6, 9, 10, 11,
360 12, 7, 104, 14, 105, 4, 10, 15,
361 11, 6, 14, 8, 106, 107, 108, 15,
362 109, 9, 55, 10, 1, 2, 1, 2,
363 3, 12, 6, 2, 6, 7, 28, 7,
364 15, 8, 5, 18, 29, 152, 77, 24,
365 25, 26, 39, 108, 13, 109, 55, 56,
366 57, 116, 11, 153, 234, 235, 118, 119,
367 15 /* 73 elements */
370 static const uint8_t vc9_mv_diff_bits[4][73] = {
372 6, 7, 7, 8, 14, 6, 5, 6, 7, 14, 14, 6, 6, 6, 8, 9,
373 10, 9, 7, 7, 7, 14, 14, 10, 9, 10, 8, 10, 10, 14, 14, 14,
374 13, 13, 13, 6, 3, 5, 6, 8, 9, 13, 5, 4, 4, 5, 7, 9,
375 6, 5, 5, 5, 6, 9, 8, 5, 5, 5, 7, 10, 7, 7, 7, 7,
376 7, 8, 10, 9, 8, 9, 9, 9, 3 /* 73 elements */
379 5, 7, 7, 6, 6, 5, 5, 6, 7, 5, 7, 8, 8, 8, 14, 9,
380 9, 9, 8, 14, 14, 9, 9, 14, 9, 14, 14, 14, 14, 14, 14, 14,
381 14, 14, 14, 14, 2, 3, 6, 8, 8, 6, 3, 4, 6, 8, 6, 9,
382 6, 6, 6, 8, 8, 8, 14, 7, 7, 8, 7, 9, 13, 9, 8, 9,
383 13, 9, 13, 13, 13, 13, 13, 13, 5 /* 73 elements */
387 3, 12, 12, 12, 12, 3, 4, 11, 11, 11, 11, 11, 11, 11, 11, 11,
388 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
389 11, 11, 11, 11, 1, 5, 11, 11, 11, 11, 4, 4, 11, 11, 11, 11,
390 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
391 11, 11, 11, 11, 11, 11, 11, 11, 11 /* 73 elements */
394 15, 11, 15, 15, 15, 15, 12, 15, 12, 11, 12, 12, 15, 12, 12, 12,
395 12, 15, 15, 12, 15, 10, 11, 12, 11, 10, 11, 10, 15, 15, 15, 11,
396 15, 10, 14, 10, 4, 4, 5, 7, 8, 9, 5, 3, 4, 5, 6, 8,
397 5, 4, 3, 5, 6, 8, 7, 5, 5, 5, 6, 7, 9, 7, 6, 6,
398 6, 7, 10, 8, 8, 8, 7, 7, 4 /* 73 elements */
402 /* DC differentials low+hi-mo, p217 are the same as in msmpeg4data .h */
404 /* Scantables/ZZ scan are at 11.9 (p262) and 8.1.1.12 (p10) */
406 #endif /* VC9DATA_H */