7 /* intra MCBPC, mb_type = (intra), then (intraq) */
8 const uint8_t intra_MCBPC_code[9] = { 1, 1, 2, 3, 1, 1, 2, 3, 1 };
9 const uint8_t intra_MCBPC_bits[9] = { 1, 3, 3, 3, 4, 6, 6, 6, 9 };
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[28] = {
19 1, 0, 0, 0, /* Stuffing */
22 const uint8_t inter_MCBPC_bits[28] = {
23 1, 4, 4, 6, /* inter */
24 5, 8, 8, 7, /* intra */
25 3, 7, 7, 9, /* interQ */
26 6, 9, 9, 9, /* intraQ */
27 3, 7, 7, 8, /* inter4 */
28 9, 0, 0, 0, /* Stuffing */
29 11, 13, 13, 13,/* inter4Q*/
32 const uint8_t cbpy_tab[16][2] =
34 {3,4}, {5,5}, {4,5}, {9,4}, {3,5}, {7,4}, {2,6}, {11,4},
35 {2,5}, {3,6}, {5,4}, {10,4}, {4,4}, {8,4}, {6,4}, {3,2}
38 const uint8_t mvtab[33][2] =
40 {1,1}, {1,2}, {1,3}, {1,4}, {3,6}, {5,7}, {4,7}, {3,7},
41 {11,9}, {10,9}, {9,9}, {17,10}, {16,10}, {15,10}, {14,10}, {13,10},
42 {12,10}, {11,10}, {10,10}, {9,10}, {8,10}, {7,10}, {6,10}, {5,10},
43 {4,10}, {7,11}, {6,11}, {5,11}, {4,11}, {3,11}, {2,11}, {3,12},
47 /* third non intra table */
48 const uint16_t inter_vlc[103][2] = {
49 { 0x2, 2 },{ 0xf, 4 },{ 0x15, 6 },{ 0x17, 7 },
50 { 0x1f, 8 },{ 0x25, 9 },{ 0x24, 9 },{ 0x21, 10 },
51 { 0x20, 10 },{ 0x7, 11 },{ 0x6, 11 },{ 0x20, 11 },
52 { 0x6, 3 },{ 0x14, 6 },{ 0x1e, 8 },{ 0xf, 10 },
53 { 0x21, 11 },{ 0x50, 12 },{ 0xe, 4 },{ 0x1d, 8 },
54 { 0xe, 10 },{ 0x51, 12 },{ 0xd, 5 },{ 0x23, 9 },
55 { 0xd, 10 },{ 0xc, 5 },{ 0x22, 9 },{ 0x52, 12 },
56 { 0xb, 5 },{ 0xc, 10 },{ 0x53, 12 },{ 0x13, 6 },
57 { 0xb, 10 },{ 0x54, 12 },{ 0x12, 6 },{ 0xa, 10 },
58 { 0x11, 6 },{ 0x9, 10 },{ 0x10, 6 },{ 0x8, 10 },
59 { 0x16, 7 },{ 0x55, 12 },{ 0x15, 7 },{ 0x14, 7 },
60 { 0x1c, 8 },{ 0x1b, 8 },{ 0x21, 9 },{ 0x20, 9 },
61 { 0x1f, 9 },{ 0x1e, 9 },{ 0x1d, 9 },{ 0x1c, 9 },
62 { 0x1b, 9 },{ 0x1a, 9 },{ 0x22, 11 },{ 0x23, 11 },
63 { 0x56, 12 },{ 0x57, 12 },{ 0x7, 4 },{ 0x19, 9 },
64 { 0x5, 11 },{ 0xf, 6 },{ 0x4, 11 },{ 0xe, 6 },
65 { 0xd, 6 },{ 0xc, 6 },{ 0x13, 7 },{ 0x12, 7 },
66 { 0x11, 7 },{ 0x10, 7 },{ 0x1a, 8 },{ 0x19, 8 },
67 { 0x18, 8 },{ 0x17, 8 },{ 0x16, 8 },{ 0x15, 8 },
68 { 0x14, 8 },{ 0x13, 8 },{ 0x18, 9 },{ 0x17, 9 },
69 { 0x16, 9 },{ 0x15, 9 },{ 0x14, 9 },{ 0x13, 9 },
70 { 0x12, 9 },{ 0x11, 9 },{ 0x7, 10 },{ 0x6, 10 },
71 { 0x5, 10 },{ 0x4, 10 },{ 0x24, 11 },{ 0x25, 11 },
72 { 0x26, 11 },{ 0x27, 11 },{ 0x58, 12 },{ 0x59, 12 },
73 { 0x5a, 12 },{ 0x5b, 12 },{ 0x5c, 12 },{ 0x5d, 12 },
74 { 0x5e, 12 },{ 0x5f, 12 },{ 0x3, 7 },
77 const int8_t inter_level[102] = {
78 1, 2, 3, 4, 5, 6, 7, 8,
79 9, 10, 11, 12, 1, 2, 3, 4,
80 5, 6, 1, 2, 3, 4, 1, 2,
81 3, 1, 2, 3, 1, 2, 3, 1,
82 2, 3, 1, 2, 1, 2, 1, 2,
83 1, 2, 1, 1, 1, 1, 1, 1,
84 1, 1, 1, 1, 1, 1, 1, 1,
85 1, 1, 1, 2, 3, 1, 2, 1,
86 1, 1, 1, 1, 1, 1, 1, 1,
87 1, 1, 1, 1, 1, 1, 1, 1,
88 1, 1, 1, 1, 1, 1, 1, 1,
89 1, 1, 1, 1, 1, 1, 1, 1,
93 const int8_t inter_run[102] = {
94 0, 0, 0, 0, 0, 0, 0, 0,
95 0, 0, 0, 0, 1, 1, 1, 1,
96 1, 1, 2, 2, 2, 2, 3, 3,
97 3, 4, 4, 4, 5, 5, 5, 6,
98 6, 6, 7, 7, 8, 8, 9, 9,
99 10, 10, 11, 12, 13, 14, 15, 16,
100 17, 18, 19, 20, 21, 22, 23, 24,
101 25, 26, 0, 0, 0, 1, 1, 2,
102 3, 4, 5, 6, 7, 8, 9, 10,
103 11, 12, 13, 14, 15, 16, 17, 18,
104 19, 20, 21, 22, 23, 24, 25, 26,
105 27, 28, 29, 30, 31, 32, 33, 34,
106 35, 36, 37, 38, 39, 40,
109 static RLTable rl_inter = {
117 const uint16_t intra_vlc_aic[103][2] = {
118 { 0x2, 2 }, { 0x6, 3 }, { 0xe, 4 }, { 0xc, 5 },
119 { 0xd, 5 }, { 0x10, 6 }, { 0x11, 6 }, { 0x12, 6 },
120 { 0x16, 7 }, { 0x1b, 8 }, { 0x20, 9 }, { 0x21, 9 },
121 { 0x1a, 9 }, { 0x1b, 9 }, { 0x1c, 9 }, { 0x1d, 9 },
122 { 0x1e, 9 }, { 0x1f, 9 }, { 0x23, 11 }, { 0x22, 11 },
123 { 0x57, 12 }, { 0x56, 12 }, { 0x55, 12 }, { 0x54, 12 },
124 { 0x53, 12 }, { 0xf, 4 }, { 0x14, 6 }, { 0x14, 7 },
125 { 0x1e, 8 }, { 0xf, 10 }, { 0x21, 11 }, { 0x50, 12 },
126 { 0xb, 5 }, { 0x15, 7 }, { 0xe, 10 }, { 0x9, 10 },
127 { 0x15, 6 }, { 0x1d, 8 }, { 0xd, 10 }, { 0x51, 12 },
128 { 0x13, 6 }, { 0x23, 9 }, { 0x7, 11 }, { 0x17, 7 },
129 { 0x22, 9 }, { 0x52, 12 }, { 0x1c, 8 }, { 0xc, 10 },
130 { 0x1f, 8 }, { 0xb, 10 }, { 0x25, 9 }, { 0xa, 10 },
131 { 0x24, 9 }, { 0x6, 11 }, { 0x21, 10 }, { 0x20, 10 },
132 { 0x8, 10 }, { 0x20, 11 }, { 0x7, 4 }, { 0xc, 6 },
133 { 0x10, 7 }, { 0x13, 8 }, { 0x11, 9 }, { 0x12, 9 },
134 { 0x4, 10 }, { 0x27, 11 }, { 0x26, 11 }, { 0x5f, 12 },
135 { 0xf, 6 }, { 0x13, 9 }, { 0x5, 10 }, { 0x25, 11 },
136 { 0xe, 6 }, { 0x14, 9 }, { 0x24, 11 }, { 0xd, 6 },
137 { 0x6, 10 }, { 0x5e, 12 }, { 0x11, 7 }, { 0x7, 10 },
138 { 0x13, 7 }, { 0x5d, 12 }, { 0x12, 7 }, { 0x5c, 12 },
139 { 0x14, 8 }, { 0x5b, 12 }, { 0x15, 8 }, { 0x1a, 8 },
140 { 0x19, 8 }, { 0x18, 8 }, { 0x17, 8 }, { 0x16, 8 },
141 { 0x19, 9 }, { 0x15, 9 }, { 0x16, 9 }, { 0x18, 9 },
142 { 0x17, 9 }, { 0x4, 11 }, { 0x5, 11 }, { 0x58, 12 },
143 { 0x59, 12 }, { 0x5a, 12 }, { 0x3, 7 },
146 const int8_t intra_run_aic[102] = {
147 0, 0, 0, 0, 0, 0, 0, 0,
148 0, 0, 0, 0, 0, 0, 0, 0,
149 0, 0, 0, 0, 0, 0, 0, 0,
150 0, 1, 1, 1, 1, 1, 1, 1,
151 2, 2, 2, 2, 3, 3, 3, 3,
152 4, 4, 4, 5, 5, 5, 6, 6,
153 7, 7, 8, 8, 9, 9, 10, 11,
154 12, 13, 0, 0, 0, 0, 0, 0,
155 0, 0, 0, 0, 1, 1, 1, 1,
156 2, 2, 2, 3, 3, 3, 4, 4,
157 5, 5, 6, 6, 7, 7, 8, 9,
158 10, 11, 12, 13, 14, 15, 16, 17,
159 18, 19, 20, 21, 22, 23,
162 const int8_t intra_level_aic[102] = {
163 1, 2, 3, 4, 5, 6, 7, 8,
164 9, 10, 11, 12, 13, 14, 15, 16,
165 17, 18, 19, 20, 21, 22, 23, 24,
166 25, 1, 2, 3, 4, 5, 6, 7,
167 1, 2, 3, 4, 1, 2, 3, 4,
168 1, 2, 3, 1, 2, 3, 1, 2,
169 1, 2, 1, 2, 1, 2, 1, 1,
170 1, 1, 1, 2, 3, 4, 5, 6,
171 7, 8, 9, 10, 1, 2, 3, 4,
172 1, 2, 3, 1, 2, 3, 1, 2,
173 1, 2, 1, 2, 1, 2, 1, 1,
174 1, 1, 1, 1, 1, 1, 1, 1,
178 static RLTable rl_intra_aic = {
186 static const uint8_t wrong_run[102] = {
187 1, 2, 3, 5, 4, 10, 9, 8,
188 11, 15, 17, 16, 23, 22, 21, 20,
189 19, 18, 25, 24, 27, 26, 11, 7,
190 6, 1, 2, 13, 2, 2, 2, 2,
191 6, 12, 3, 9, 1, 3, 4, 3,
192 7, 4, 1, 1, 5, 5, 14, 6,
193 1, 7, 1, 8, 1, 1, 1, 1,
194 10, 1, 1, 5, 9, 17, 25, 24,
195 29, 33, 32, 41, 2, 23, 28, 31,
196 3, 22, 30, 4, 27, 40, 8, 26,
197 6, 39, 7, 38, 16, 37, 15, 10,
198 11, 12, 13, 14, 1, 21, 20, 18,
202 static const uint16_t h263_format[8][2] = {
211 uint8_t ff_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
216 static const uint8_t modified_quant_tab[2][32]={
217 // 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
219 0, 3, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9,10,11,12,13,14,15,16,17,18,18,19,20,21,22,23,24,25,26,27,28
221 0, 2, 3, 4, 5, 6, 7, 8, 9,10,11,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,31,31,26
225 const uint8_t ff_h263_chroma_qscale_table[32]={
226 // 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
227 0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 9,10,10,11,11,12,12,12,13,13,13,14,14,14,14,14,15,15,15,15,15
230 const uint16_t ff_mba_max[6]={
231 47, 98, 395,1583,6335,9215
234 const uint8_t ff_mba_length[6]={
238 const uint8_t ff_h263_loop_filter_strength[32]={
239 // 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
240 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9,10,10,10,11,11,11,12,12,12