1 /* DCT coefficients. Four tables, two for last = 0, two for last = 1.
2 the sign bit must be added afterwards. */
4 /* first part of coeffs for last = 0. Indexed by [run][level-1] */
6 static const UINT8 coeff_tab0[2][12][2] =
7 {
8 /* run = 0 */
9 {
10 {0x02, 2}, {0x0f, 4}, {0x15, 6}, {0x17, 7},
11 {0x1f, 8}, {0x25, 9}, {0x24, 9}, {0x21,10},
12 {0x20,10}, {0x07,11}, {0x06,11}, {0x20,11}
13 },
14 /* run = 1 */
15 {
16 {0x06, 3}, {0x14, 6}, {0x1e, 8}, {0x0f,10},
17 {0x21,11}, {0x50,12}, {0x00, 0}, {0x00, 0},
18 {0x00, 0}, {0x00, 0}, {0x00, 0}, {0x00, 0}
19 }
20 };
22 /* rest of coeffs for last = 0. indexing by [run-2][level-1] */
24 static const UINT8 coeff_tab1[25][4][2] =
25 {
26 /* run = 2 */
27 {
28 {0x0e, 4}, {0x1d, 8}, {0x0e,10}, {0x51,12}
29 },
30 /* run = 3 */
31 {
32 {0x0d, 5}, {0x23, 9}, {0x0d,10}, {0x00, 0}
33 },
34 /* run = 4-26 */
35 {
36 {0x0c, 5}, {0x22, 9}, {0x52,12}, {0x00, 0}
37 },
38 {
39 {0x0b, 5}, {0x0c,10}, {0x53,12}, {0x00, 0}
40 },
41 {
42 {0x13, 6}, {0x0b,10}, {0x54,12}, {0x00, 0}
43 },
44 {
45 {0x12, 6}, {0x0a,10}, {0x00, 0}, {0x00, 0}
46 },
47 {
48 {0x11, 6}, {0x09,10}, {0x00, 0}, {0x00, 0}
49 },
50 {
51 {0x10, 6}, {0x08,10}, {0x00, 0}, {0x00, 0}
52 },
53 {
54 {0x16, 7}, {0x55,12}, {0x00, 0}, {0x00, 0}
55 },
56 {
57 {0x15, 7}, {0x00, 0}, {0x00, 0}, {0x00, 0}
58 },
59 {
60 {0x14, 7}, {0x00, 0}, {0x00, 0}, {0x00, 0}
61 },
62 {
63 {0x1c, 8}, {0x00, 0}, {0x00, 0}, {0x00, 0}
64 },
65 {
66 {0x1b, 8}, {0x00, 0}, {0x00, 0}, {0x00, 0}
67 },
68 {
69 {0x21, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}
70 },
71 {
72 {0x20, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}
73 },
74 {
75 {0x1f, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}
76 },
77 {
78 {0x1e, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}
79 },
80 {
81 {0x1d, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}
82 },
83 {
84 {0x1c, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}
85 },
86 {
87 {0x1b, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}
88 },
89 {
90 {0x1a, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}
91 },
92 {
93 {0x22,11}, {0x00, 0}, {0x00, 0}, {0x00, 0}
94 },
95 {
96 {0x23,11}, {0x00, 0}, {0x00, 0}, {0x00, 0}
97 },
98 {
99 {0x56,12}, {0x00, 0}, {0x00, 0}, {0x00, 0}
100 },
101 {
102 {0x57,12}, {0x00, 0}, {0x00, 0}, {0x00, 0}
103 }
104 };
106 /* first coeffs of last = 1. indexing by [run][level-1] */
108 static const UINT8 coeff_tab2[2][3][2] =
109 {
110 /* run = 0 */
111 {
112 {0x07, 4}, {0x19, 9}, {0x05,11}
113 },
114 /* run = 1 */
115 {
116 {0x0f, 6}, {0x04,11}, {0x00, 0}
117 }
118 };
120 /* rest of coeffs for last = 1. indexing by [run-2] */
122 static const UINT8 coeff_tab3[40][2] =
123 {
124 {0x0e, 6}, {0x0d, 6}, {0x0c, 6},
125 {0x13, 7}, {0x12, 7}, {0x11, 7}, {0x10, 7},
126 {0x1a, 8}, {0x19, 8}, {0x18, 8}, {0x17, 8},
127 {0x16, 8}, {0x15, 8}, {0x14, 8}, {0x13, 8},
128 {0x18, 9}, {0x17, 9}, {0x16, 9}, {0x15, 9},
129 {0x14, 9}, {0x13, 9}, {0x12, 9}, {0x11, 9},
130 {0x07,10}, {0x06,10}, {0x05,10}, {0x04,10},
131 {0x24,11}, {0x25,11}, {0x26,11}, {0x27,11},
132 {0x58,12}, {0x59,12}, {0x5a,12}, {0x5b,12},
133 {0x5c,12}, {0x5d,12}, {0x5e,12}, {0x5f,12},
134 {0x00, 0}
135 };
137 /* intra MCBPC, mb_type = 3 */
138 static UINT8 intra_MCBPC_code[4] = { 1, 1, 2, 3 };
139 static UINT8 intra_MCBPC_bits[4] = { 1, 3, 3, 3 };
141 /* inter MCBPC, mb_type = 0 then 3 */
142 static UINT8 inter_MCBPC_code[8] = { 1, 3, 2, 5, 3, 4, 3, 3 };
143 static UINT8 inter_MCBPC_bits[8] = { 1, 4, 4, 6, 5, 8, 8, 7 };
145 static UINT8 cbpy_tab[16][2] =
146 {
147 {3,4}, {5,5}, {4,5}, {9,4}, {3,5}, {7,4}, {2,6}, {11,4},
148 {2,5}, {3,6}, {5,4}, {10,4}, {4,4}, {8,4}, {6,4}, {3,2}
149 };