1 
2 module matrix;
3 
4 immutable ubyte[64][2] SCAN_MATRIX =
5 [
6 	[
7 		/* Zig-Zag scan pattern  */
8 		00,  1,  8, 16,  9,  2,  3, 10,
9 		17, 24, 32, 25, 18, 11,  4,  5,
10 		12, 19, 26, 33, 40, 48, 41, 34,
11 		27, 20, 13,  6,  7, 14, 21, 28,
12 		35, 42, 49, 56, 57, 50, 43, 36,
13 		29, 22, 15, 23, 30, 37, 44, 51,
14 		58, 59, 52, 45, 38, 31, 39, 46,
15 		53, 60, 61, 54, 47, 55, 62, 63,
16 	],
17 	[
18 		/* Alternate scan pattern */
19 		00,  8, 16, 24,  1,  9,  2, 10,
20 		17, 25, 32, 40, 48, 56, 57, 49,
21 		41, 33, 26, 18,  3, 11,  4, 12,
22 		19, 27, 34, 42, 50, 58, 35, 43,
23 		51, 59, 20, 28,  5, 13,  6, 14,
24 		21, 29, 36, 44, 52, 60, 37, 45,
25 		53, 61, 22, 30,  7, 15, 23, 31,
26 		38, 46, 54, 62, 39, 47, 55, 63,
27 	]
28 ];
29 
30 immutable ubyte[64][4] DEFAULT_QUANT_MATRIX =
31 [
32 	[
33 		08, 16, 19, 22, 26, 27, 29, 34,
34 		16, 16, 22, 24, 27, 29, 34, 37,
35 		19, 22, 26, 27, 29, 34, 34, 38,
36 		22, 22, 26, 27, 29, 34, 37, 40,
37 		22, 26, 27, 29, 32, 35, 40, 48,
38 		26, 27, 29, 32, 35, 40, 48, 58,
39 		26, 27, 29, 34, 38, 46, 56, 69,
40 		27, 29, 35, 38, 46, 56, 69, 83,
41 	],
42 	[
43 		16, 16, 16, 16, 16, 16, 16, 16,
44 		16, 16, 16, 16, 16, 16, 16, 16,
45 		16, 16, 16, 16, 16, 16, 16, 16,
46 		16, 16, 16, 16, 16, 16, 16, 16,
47 		16, 16, 16, 16, 16, 16, 16, 16,
48 		16, 16, 16, 16, 16, 16, 16, 16,
49 		16, 16, 16, 16, 16, 16, 16, 16,
50 		16, 16, 16, 16, 16, 16, 16, 16,
51 	],
52 	[
53 		08, 16, 19, 22, 26, 27, 29, 34,
54 		16, 16, 22, 24, 27, 29, 34, 37,
55 		19, 22, 26, 27, 29, 34, 34, 38,
56 		22, 22, 26, 27, 29, 34, 37, 40,
57 		22, 26, 27, 29, 32, 35, 40, 48,
58 		26, 27, 29, 32, 35, 40, 48, 58,
59 		26, 27, 29, 34, 38, 46, 56, 69,
60 		27, 29, 35, 38, 46, 56, 69, 83,
61 	],
62 	[
63 		16, 16, 16, 16, 16, 16, 16, 16,
64 		16, 16, 16, 16, 16, 16, 16, 16,
65 		16, 16, 16, 16, 16, 16, 16, 16,
66 		16, 16, 16, 16, 16, 16, 16, 16,
67 		16, 16, 16, 16, 16, 16, 16, 16,
68 		16, 16, 16, 16, 16, 16, 16, 16,
69 		16, 16, 16, 16, 16, 16, 16, 16,
70 		16, 16, 16, 16, 16, 16, 16, 16,
71 	],
72 ];
73 
74 // Table 7-4
75 immutable ubyte[] INTRA_DC_MULT = [8, 4, 2, 1];
76 
77 // Table 7-6
78 immutable ubyte[32][2] QUANTISER_SCALE_MATRIX =
79 [
80 	[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],
81 	[1,2,3,4,5,6,7,8,10,12,14,16,18,20,22,24,28,32,36,40,44,48,52,56,64,72,80,88,96,104,112],
82 ];
83 
84 immutable ushort[4] DCT_PRED_DEFAULT = [128, 256, 512, 1024];