2 /* intra MCBPC, mb_type = (intra), then (intraq) */
3 const UINT8 intra_MCBPC_code[8] = { 1, 1, 2, 3, 1, 1, 2, 3 };
4 const UINT8 intra_MCBPC_bits[8] = { 1, 3, 3, 3, 4, 6, 6, 6 };
6 /* inter MCBPC, mb_type = (inter), (intra), (interq), (intraq), (inter4v) */
7 /* Changed the tables for interq and inter4v+q, following the standard ** Juanjo ** */
8 const UINT8 inter_MCBPC_code[25] = {
17 const UINT8 inter_MCBPC_bits[25] = {
27 /* This is the old table
28 static const UINT8 inter_MCBPC_code[20] = {
35 static const UINT8 inter_MCBPC_bits[20] = {
43 const UINT8 cbpy_tab[16][2] =
45 {3,4}, {5,5}, {4,5}, {9,4}, {3,5}, {7,4}, {2,6}, {11,4},
46 {2,5}, {3,6}, {5,4}, {10,4}, {4,4}, {8,4}, {6,4}, {3,2}
49 const UINT8 mvtab[33][2] =
51 {1,1}, {1,2}, {1,3}, {1,4}, {3,6}, {5,7}, {4,7}, {3,7},
52 {11,9}, {10,9}, {9,9}, {17,10}, {16,10}, {15,10}, {14,10}, {13,10},
53 {12,10}, {11,10}, {10,10}, {9,10}, {8,10}, {7,10}, {6,10}, {5,10},
54 {4,10}, {7,11}, {6,11}, {5,11}, {4,11}, {3,11}, {2,11}, {3,12},
58 /* third non intra table */
59 const UINT16 inter_vlc[103][2] = {
60 { 0x2, 2 },{ 0xf, 4 },{ 0x15, 6 },{ 0x17, 7 },
61 { 0x1f, 8 },{ 0x25, 9 },{ 0x24, 9 },{ 0x21, 10 },
62 { 0x20, 10 },{ 0x7, 11 },{ 0x6, 11 },{ 0x20, 11 },
63 { 0x6, 3 },{ 0x14, 6 },{ 0x1e, 8 },{ 0xf, 10 },
64 { 0x21, 11 },{ 0x50, 12 },{ 0xe, 4 },{ 0x1d, 8 },
65 { 0xe, 10 },{ 0x51, 12 },{ 0xd, 5 },{ 0x23, 9 },
66 { 0xd, 10 },{ 0xc, 5 },{ 0x22, 9 },{ 0x52, 12 },
67 { 0xb, 5 },{ 0xc, 10 },{ 0x53, 12 },{ 0x13, 6 },
68 { 0xb, 10 },{ 0x54, 12 },{ 0x12, 6 },{ 0xa, 10 },
69 { 0x11, 6 },{ 0x9, 10 },{ 0x10, 6 },{ 0x8, 10 },
70 { 0x16, 7 },{ 0x55, 12 },{ 0x15, 7 },{ 0x14, 7 },
71 { 0x1c, 8 },{ 0x1b, 8 },{ 0x21, 9 },{ 0x20, 9 },
72 { 0x1f, 9 },{ 0x1e, 9 },{ 0x1d, 9 },{ 0x1c, 9 },
73 { 0x1b, 9 },{ 0x1a, 9 },{ 0x22, 11 },{ 0x23, 11 },
74 { 0x56, 12 },{ 0x57, 12 },{ 0x7, 4 },{ 0x19, 9 },
75 { 0x5, 11 },{ 0xf, 6 },{ 0x4, 11 },{ 0xe, 6 },
76 { 0xd, 6 },{ 0xc, 6 },{ 0x13, 7 },{ 0x12, 7 },
77 { 0x11, 7 },{ 0x10, 7 },{ 0x1a, 8 },{ 0x19, 8 },
78 { 0x18, 8 },{ 0x17, 8 },{ 0x16, 8 },{ 0x15, 8 },
79 { 0x14, 8 },{ 0x13, 8 },{ 0x18, 9 },{ 0x17, 9 },
80 { 0x16, 9 },{ 0x15, 9 },{ 0x14, 9 },{ 0x13, 9 },
81 { 0x12, 9 },{ 0x11, 9 },{ 0x7, 10 },{ 0x6, 10 },
82 { 0x5, 10 },{ 0x4, 10 },{ 0x24, 11 },{ 0x25, 11 },
83 { 0x26, 11 },{ 0x27, 11 },{ 0x58, 12 },{ 0x59, 12 },
84 { 0x5a, 12 },{ 0x5b, 12 },{ 0x5c, 12 },{ 0x5d, 12 },
85 { 0x5e, 12 },{ 0x5f, 12 },{ 0x3, 7 },
88 const INT8 inter_level[102] = {
89 1, 2, 3, 4, 5, 6, 7, 8,
90 9, 10, 11, 12, 1, 2, 3, 4,
91 5, 6, 1, 2, 3, 4, 1, 2,
92 3, 1, 2, 3, 1, 2, 3, 1,
93 2, 3, 1, 2, 1, 2, 1, 2,
94 1, 2, 1, 1, 1, 1, 1, 1,
95 1, 1, 1, 1, 1, 1, 1, 1,
96 1, 1, 1, 2, 3, 1, 2, 1,
97 1, 1, 1, 1, 1, 1, 1, 1,
98 1, 1, 1, 1, 1, 1, 1, 1,
99 1, 1, 1, 1, 1, 1, 1, 1,
100 1, 1, 1, 1, 1, 1, 1, 1,
104 const INT8 inter_run[102] = {
105 0, 0, 0, 0, 0, 0, 0, 0,
106 0, 0, 0, 0, 1, 1, 1, 1,
107 1, 1, 2, 2, 2, 2, 3, 3,
108 3, 4, 4, 4, 5, 5, 5, 6,
109 6, 6, 7, 7, 8, 8, 9, 9,
110 10, 10, 11, 12, 13, 14, 15, 16,
111 17, 18, 19, 20, 21, 22, 23, 24,
112 25, 26, 0, 0, 0, 1, 1, 2,
113 3, 4, 5, 6, 7, 8, 9, 10,
114 11, 12, 13, 14, 15, 16, 17, 18,
115 19, 20, 21, 22, 23, 24, 25, 26,
116 27, 28, 29, 30, 31, 32, 33, 34,
117 35, 36, 37, 38, 39, 40,
120 static RLTable rl_inter = {
128 const UINT16 intra_vlc_aic[103][2] = {
129 { 0x2, 2 }, { 0x6, 3 }, { 0xe, 4 }, { 0xc, 5 },
130 { 0xd, 5 }, { 0x10, 6 }, { 0x11, 6 }, { 0x12, 6 },
131 { 0x16, 7 }, { 0x1b, 8 }, { 0x20, 9 }, { 0x21, 9 },
132 { 0x1a, 9 }, { 0x1b, 9 }, { 0x1c, 9 }, { 0x1d, 9 },
133 { 0x1e, 9 }, { 0x1f, 9 }, { 0x23, 11 }, { 0x22, 11 },
134 { 0x57, 12 }, { 0x56, 12 }, { 0x55, 12 }, { 0x54, 12 },
135 { 0x53, 12 }, { 0xf, 4 }, { 0x14, 6 }, { 0x14, 7 },
136 { 0x1e, 8 }, { 0xf, 10 }, { 0x21, 11 }, { 0x50, 12 },
137 { 0xb, 5 }, { 0x15, 7 }, { 0xe, 10 }, { 0x9, 10 },
138 { 0x15, 6 }, { 0x1d, 8 }, { 0xd, 10 }, { 0x51, 12 },
139 { 0x13, 6 }, { 0x23, 9 }, { 0x7, 11 }, { 0x17, 7 },
140 { 0x22, 9 }, { 0x52, 12 }, { 0x1c, 8 }, { 0xc, 10 },
141 { 0x1f, 8 }, { 0xb, 10 }, { 0x25, 9 }, { 0xa, 10 },
142 { 0x24, 9 }, { 0x6, 11 }, { 0x21, 10 }, { 0x20, 10 },
143 { 0x8, 10 }, { 0x20, 11 }, { 0x7, 4 }, { 0xc, 6 },
144 { 0x10, 7 }, { 0x13, 8 }, { 0x11, 9 }, { 0x12, 9 },
145 { 0x4, 10 }, { 0x27, 11 }, { 0x26, 11 }, { 0x5f, 12 },
146 { 0xf, 6 }, { 0x13, 9 }, { 0x5, 10 }, { 0x25, 11 },
147 { 0xe, 6 }, { 0x14, 9 }, { 0x24, 11 }, { 0xd, 6 },
148 { 0x6, 10 }, { 0x5e, 12 }, { 0x11, 7 }, { 0x7, 10 },
149 { 0x13, 7 }, { 0x5d, 12 }, { 0x12, 7 }, { 0x5c, 12 },
150 { 0x14, 8 }, { 0x5b, 12 }, { 0x15, 8 }, { 0x1a, 8 },
151 { 0x19, 8 }, { 0x18, 8 }, { 0x17, 8 }, { 0x16, 8 },
152 { 0x19, 9 }, { 0x15, 9 }, { 0x16, 9 }, { 0x18, 9 },
153 { 0x17, 9 }, { 0x4, 11 }, { 0x5, 11 }, { 0x58, 12 },
154 { 0x59, 12 }, { 0x5a, 12 }, { 0x3, 7 },
157 const INT8 intra_run_aic[102] = {
158 0, 0, 0, 0, 0, 0, 0, 0,
159 0, 0, 0, 0, 0, 0, 0, 0,
160 0, 0, 0, 0, 0, 0, 0, 0,
161 0, 1, 1, 1, 1, 1, 1, 1,
162 2, 2, 2, 2, 3, 3, 3, 3,
163 4, 4, 4, 5, 5, 5, 6, 6,
164 7, 7, 8, 8, 9, 9, 10, 11,
165 12, 13, 0, 0, 0, 0, 0, 0,
166 0, 0, 0, 0, 1, 1, 1, 1,
167 2, 2, 2, 3, 3, 3, 4, 4,
168 5, 5, 6, 6, 7, 7, 8, 9,
169 10, 11, 12, 13, 14, 15, 16, 17,
170 18, 19, 20, 21, 22, 23,
173 const INT8 intra_level_aic[102] = {
174 1, 2, 3, 4, 5, 6, 7, 8,
175 9, 10, 11, 12, 13, 14, 15, 16,
176 17, 18, 19, 20, 21, 22, 23, 24,
177 25, 1, 2, 3, 4, 5, 6, 7,
178 1, 2, 3, 4, 1, 2, 3, 4,
179 1, 2, 3, 1, 2, 3, 1, 2,
180 1, 2, 1, 2, 1, 2, 1, 1,
181 1, 1, 1, 2, 3, 4, 5, 6,
182 7, 8, 9, 10, 1, 2, 3, 4,
183 1, 2, 3, 1, 2, 3, 1, 2,
184 1, 2, 1, 2, 1, 2, 1, 1,
185 1, 1, 1, 1, 1, 1, 1, 1,
189 static RLTable rl_intra_aic = {
197 static const UINT16 h263_format[8][2] = {
206 static UINT8 h263_aic_dc_scale_table[32]={
207 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
208 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