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] = {
28 const uint8_t vc9_bfraction_codes
[23] = {
39 static const AVRational vc9_pixel_aspect
[16]={
58 /* BitPlane IMODE - such a small table... */
59 static const uint8_t vc9_imode_codes
[7] = {
62 static const uint8_t vc9_imode_bits
[7] = {
67 static const uint8_t vc9_norm2_codes
[4] = {
70 static const uint8_t vc9_norm2_bits
[4] = {
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,
88 static const uint8_t vc9_norm6_spec
[64][5] = {
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
229 * 8x4:B:btm 8x4:B:top 8x4:B:both,
230 * 4x8:B:right 4x8:B:left 4x8:B:both
232 * 8x4:MB:btm 8x4:MB:top 8x4,MB,both
233 * 4x8,MB,right 4x8,MB,left
235 static const uint16_t vc9_ttmb_codes
[3][16] = {
238 0x002E, 0x005F, 0x0000,
239 0x0016, 0x0015, 0x0001,
241 0x02F1, 0x0179, 0x017B,
242 0x0BC0, 0x0BC1, 0x05E1,
247 0x0006, 0x0003, 0x0007,
248 0x000F, 0x000E, 0x0000,
250 0x0014, 0x0011, 0x000B,
251 0x0009, 0x0021, 0x0015,
256 0x0000, 0x000E, 0x0005,
257 0x0002, 0x0003, 0x0003,
259 0x0081, 0x0021, 0x0009,
260 0x0101, 0x0041, 0x0011,
265 static const uint8_t vc9_ttmb_bits
[3][16] = {
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,
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,
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,
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 */