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