VC-1 Zigzag Tables: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
(use portable C data types (unsigned char vs. BYTE8); use space formatting vs. code tag) |
||
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
''Part of [[Understanding VC-1]]'' | ''Part of [[Understanding VC-1]]'' | ||
''' | '''ZigZag Tables''' | ||
These tables are used in AC Coefficient Decode. They are selected based on the following factors: | |||
* Progressive vs Interlaced | |||
* Intra vs Inter | |||
* Ac Prediction Parameters | |||
** Prediction Direction | |||
** ACPRED syntax element | |||
* Profile | |||
* Transform Type | |||
unsigned char vc1_Inv_Intra_Normal_Scan [64] = /* Table 226 */ | |||
{ | |||
0, 8, 1, 2, 9, 16, 24, 17, | |||
10, 3, 4, 11, 18, 25, 32, 40, | |||
33, 48, 26, 19, 12, 5, 6, 13, | |||
20, 27, 34, 41, 56, 49, 57, 42, | |||
35, 28, 21, 14, 7, 15, 22, 29, | |||
36, 43, 50, 58, 51, 59, 44, 37, | |||
30, 23, 31, 38, 45, 52, 60, 53, | |||
61, 46, 39, 47, 54, 62, 55, 63 | |||
}; | |||
unsigned char vc1_Inv_Intra_Horizontal_Scan [64] = /* Table 227 */ | |||
{ | |||
0, 1, 8, 2, 3, 9, 16, 24, | |||
17, 10, 4, 5, 11, 18, 25, 32, | |||
40, 48, 33, 26, 19, 12, 6, 7, | |||
13, 20, 27, 34, 41, 56, 49, 57, | |||
42, 35, 28, 21, 14, 15, 22, 29, | |||
36, 43, 50, 58, 51, 44, 37, 30, | |||
23, 31, 38, 45, 52, 59, 60, 53, | |||
46, 39, 47, 54, 61, 62, 55, 63 | |||
}; | |||
unsigned char vc1_Inv_Intra_Vertical_Scan [64] = /* Table 228 */ | |||
{ | |||
0, 8, 16, 1, 24, 32, 40, 9, | |||
2, 3, 10, 17, 25, 48, 56, 41, | |||
33, 26, 18, 11, 4, 5, 12, 19, | |||
27, 34, 49, 57, 50, 42, 35, 28, | |||
20, 13, 6, 7, 14, 21, 29, 36, | |||
43, 51, 58, 59, 52, 44, 37, 30, | |||
22, 15, 23, 31, 38, 45, 60, 53, | |||
46, 39, 47, 54, 61, 62, 55, 63 | |||
}; | |||
unsigned char vc1_Inv_Inter_8x8_Scan_Simple_Main_Profiles_Progressive_Advanced_Profile [64] = /* Table 229 */ | |||
{ | |||
0, 8, 1, 2, 9, 16, 24, 17, | |||
10, 3, 4, 11, 18, 25, 32, 40, | |||
48, 56, 41, 33, 26, 19, 12, 5, | |||
6, 13, 20, 27, 34, 49, 57, 58, | |||
50, 42, 35, 28, 21, 14, 7, 15, | |||
22, 29, 36, 43, 51, 59, 60, 52, | |||
44, 37, 30, 23, 31, 38, 45, 53, | |||
61, 62, 54, 46, 39, 47, 55, 63 | |||
}; | |||
unsigned char vc1_Inv_Inter_8x4_Scan_Simple_Main_Profiles [32] = /* Table 230 */ | |||
{ | |||
0, 1, 2, 8, 3, 9, 10, 16, | |||
4, 11, 17, 24, 18, 12, 5, 19, | |||
25, 13, 20, 26, 27, 6, 21, 28, | |||
14, 22, 29, 7, 30, 15, 23, 31 | |||
}; | |||
unsigned char vc1_Inv_Inter_4x8_Scan_Simple_Main_Profiles [32] = /* Table 231 */ | |||
{ | |||
0, 8, 1, 16, | |||
9, 24, 17, 2, | |||
32, 10, 25, 40, | |||
18, 48, 33, 26, | |||
56, 41, 34, 3, | |||
49, 57, 11, 42, | |||
19, 50, 27, 58, | |||
35, 43, 51, 59 | |||
}; | |||
unsigned char vc1_Inv_Inter_4x4_Scan_Simple_Main_Profiles_Progressive_Advanced_Profile [16] = /* Table 232 */ | |||
{ | |||
0, 8, 16, 1, | |||
9, 24, 17, 2, | |||
10, 18, 25, 3, | |||
11, 26, 19, 27 | |||
}; | |||
unsigned char vc1_Inv_Progressive_Inter_8x4_Scan_Advanced_Profile [32] = /* Table 233 */ | |||
{ | |||
0, 8, 1, 16, 2, 9, 10, 3, | |||
24, 17, 4, 11, 18, 12, 5, 19, | |||
25, 13, 20, 26, 27, 6, 21, 28, | |||
14, 22, 29, 7, 30, 15, 23, 31 | |||
}; | |||
unsigned char vc1_Inv_Progressive_Inter_4x8_Scan_Advanced_Profile [32] = /* Table 234 */ | |||
{ | |||
0, 1, 8, 2, | |||
9, 16, 17, 24, | |||
10, 32, 25, 18, | |||
40, 3, 33, 26, | |||
48, 11, 56, 41, | |||
34, 49, 57, 42, | |||
19, 50, 27, 58, | |||
35, 43, 51, 59 | |||
}; | |||
unsigned char vc1_Inv_Interlace_Inter_8x8_Scan_Advanced_Profile [64] = /* Table 235 */ | |||
{ | |||
0, 8, 1, 16, 24, 9, 2, 32, | |||
40, 48, 56, 17, 10, 3, 25, 18, | |||
11, 4, 33, 41, 49, 57, 26, 34, | |||
42, 50, 58, 19, 12, 5, 27, 20, | |||
13, 6, 35, 28, 21, 14, 7, 15, | |||
22, 29, 36, 43, 51, 59, 60, 52, | |||
44, 37, 30, 23, 31, 38, 45, 53, | |||
61, 62, 54, 46, 39, 47, 55, 63 | |||
}; | |||
unsigned char vc1_Inv_Interlace_Inter_8x4_Scan_Advanced_Profile [32] = /* Table 236 */ | |||
{ | |||
0, 8, 16, 24, 1, 9, 2, 17, | |||
25, 10, 3, 18, 26, 4, 11, 19, | |||
12, 5, 13, 20, 27, 6, 21, 28, | |||
14, 22, 29, 7, 30, 15, 23, 31 | |||
}; | |||
unsigned char vc1_Inv_Interlace_Inter_4x8_Scan_Advanced_Profile [32] = /* Table 237 */ | |||
{ | |||
0, 1, 2, 8, | |||
16, 9, 24, 17, | |||
10, 3, 32, 40, | |||
48, 56, 25, 18, | |||
33, 26, 41, 34, | |||
49, 57, 11, 42, | |||
19, 50, 27, 58, | |||
35, 43, 51, 59 | |||
}; | |||
unsigned char vc1_Inv_Interlace_Inter_4x4_Scan_Advanced_Profile [16] = /* Table 238 */ | |||
{ | |||
0, 8, 16, 24, | |||
1, 9, 17, 2, | |||
25, 10, 18, 3, | |||
26, 11, 19, 27 | |||
}; |
Latest revision as of 10:45, 26 October 2006
Part of Understanding VC-1
ZigZag Tables
These tables are used in AC Coefficient Decode. They are selected based on the following factors:
- Progressive vs Interlaced
- Intra vs Inter
- Ac Prediction Parameters
- Prediction Direction
- ACPRED syntax element
- Profile
- Transform Type
unsigned char vc1_Inv_Intra_Normal_Scan [64] = /* Table 226 */ { 0, 8, 1, 2, 9, 16, 24, 17, 10, 3, 4, 11, 18, 25, 32, 40, 33, 48, 26, 19, 12, 5, 6, 13, 20, 27, 34, 41, 56, 49, 57, 42, 35, 28, 21, 14, 7, 15, 22, 29, 36, 43, 50, 58, 51, 59, 44, 37, 30, 23, 31, 38, 45, 52, 60, 53, 61, 46, 39, 47, 54, 62, 55, 63 };
unsigned char vc1_Inv_Intra_Horizontal_Scan [64] = /* Table 227 */ { 0, 1, 8, 2, 3, 9, 16, 24, 17, 10, 4, 5, 11, 18, 25, 32, 40, 48, 33, 26, 19, 12, 6, 7, 13, 20, 27, 34, 41, 56, 49, 57, 42, 35, 28, 21, 14, 15, 22, 29, 36, 43, 50, 58, 51, 44, 37, 30, 23, 31, 38, 45, 52, 59, 60, 53, 46, 39, 47, 54, 61, 62, 55, 63 };
unsigned char vc1_Inv_Intra_Vertical_Scan [64] = /* Table 228 */ { 0, 8, 16, 1, 24, 32, 40, 9, 2, 3, 10, 17, 25, 48, 56, 41, 33, 26, 18, 11, 4, 5, 12, 19, 27, 34, 49, 57, 50, 42, 35, 28, 20, 13, 6, 7, 14, 21, 29, 36, 43, 51, 58, 59, 52, 44, 37, 30, 22, 15, 23, 31, 38, 45, 60, 53, 46, 39, 47, 54, 61, 62, 55, 63 };
unsigned char vc1_Inv_Inter_8x8_Scan_Simple_Main_Profiles_Progressive_Advanced_Profile [64] = /* Table 229 */ { 0, 8, 1, 2, 9, 16, 24, 17, 10, 3, 4, 11, 18, 25, 32, 40, 48, 56, 41, 33, 26, 19, 12, 5, 6, 13, 20, 27, 34, 49, 57, 58, 50, 42, 35, 28, 21, 14, 7, 15, 22, 29, 36, 43, 51, 59, 60, 52, 44, 37, 30, 23, 31, 38, 45, 53, 61, 62, 54, 46, 39, 47, 55, 63 };
unsigned char vc1_Inv_Inter_8x4_Scan_Simple_Main_Profiles [32] = /* Table 230 */ { 0, 1, 2, 8, 3, 9, 10, 16, 4, 11, 17, 24, 18, 12, 5, 19, 25, 13, 20, 26, 27, 6, 21, 28, 14, 22, 29, 7, 30, 15, 23, 31 };
unsigned char vc1_Inv_Inter_4x8_Scan_Simple_Main_Profiles [32] = /* Table 231 */ { 0, 8, 1, 16, 9, 24, 17, 2, 32, 10, 25, 40, 18, 48, 33, 26, 56, 41, 34, 3, 49, 57, 11, 42, 19, 50, 27, 58, 35, 43, 51, 59 };
unsigned char vc1_Inv_Inter_4x4_Scan_Simple_Main_Profiles_Progressive_Advanced_Profile [16] = /* Table 232 */ { 0, 8, 16, 1, 9, 24, 17, 2, 10, 18, 25, 3, 11, 26, 19, 27 };
unsigned char vc1_Inv_Progressive_Inter_8x4_Scan_Advanced_Profile [32] = /* Table 233 */ { 0, 8, 1, 16, 2, 9, 10, 3, 24, 17, 4, 11, 18, 12, 5, 19, 25, 13, 20, 26, 27, 6, 21, 28, 14, 22, 29, 7, 30, 15, 23, 31 };
unsigned char vc1_Inv_Progressive_Inter_4x8_Scan_Advanced_Profile [32] = /* Table 234 */ { 0, 1, 8, 2, 9, 16, 17, 24, 10, 32, 25, 18, 40, 3, 33, 26, 48, 11, 56, 41, 34, 49, 57, 42, 19, 50, 27, 58, 35, 43, 51, 59 };
unsigned char vc1_Inv_Interlace_Inter_8x8_Scan_Advanced_Profile [64] = /* Table 235 */ { 0, 8, 1, 16, 24, 9, 2, 32, 40, 48, 56, 17, 10, 3, 25, 18, 11, 4, 33, 41, 49, 57, 26, 34, 42, 50, 58, 19, 12, 5, 27, 20, 13, 6, 35, 28, 21, 14, 7, 15, 22, 29, 36, 43, 51, 59, 60, 52, 44, 37, 30, 23, 31, 38, 45, 53, 61, 62, 54, 46, 39, 47, 55, 63 };
unsigned char vc1_Inv_Interlace_Inter_8x4_Scan_Advanced_Profile [32] = /* Table 236 */ { 0, 8, 16, 24, 1, 9, 2, 17, 25, 10, 3, 18, 26, 4, 11, 19, 12, 5, 13, 20, 27, 6, 21, 28, 14, 22, 29, 7, 30, 15, 23, 31 };
unsigned char vc1_Inv_Interlace_Inter_4x8_Scan_Advanced_Profile [32] = /* Table 237 */ { 0, 1, 2, 8, 16, 9, 24, 17, 10, 3, 32, 40, 48, 56, 25, 18, 33, 26, 41, 34, 49, 57, 11, 42, 19, 50, 27, 58, 35, 43, 51, 59 };
unsigned char vc1_Inv_Interlace_Inter_4x4_Scan_Advanced_Profile [16] = /* Table 238 */ { 0, 8, 16, 24, 1, 9, 17, 2, 25, 10, 18, 3, 26, 11, 19, 27 };