1 /*
2 * H.263+ tables
3 *
4 * This file is part of FFmpeg.
5 *
6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with FFmpeg; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21 /**
22 * @file
23 * H.263 tables.
24 */
25
26 #include <stdint.h>
27
30
32
33 /* intra MCBPC, mb_type = (intra), then (intraq) */
36
37 /* inter MCBPC, mb_type = (inter), (intra), (interq), (intraq), (inter4v) */
38 /* Changed the tables for interq and inter4v+q, following the standard
39 * ** Juanjo ** */
41 1, 3, 2, 5,
42 3, 4, 3, 3,
43 3, 7, 6, 5,
44 4, 4, 3, 2,
45 2, 5, 4, 5,
46 1, 0, 0, 0, /* Stuffing */
47 2, 12, 14, 15,
48 };
50 1, 4, 4, 6, /* inter */
51 5, 8, 8, 7, /* intra */
52 3, 7, 7, 9, /* interQ */
53 6, 9, 9, 9, /* intraQ */
54 3, 7, 7, 8, /* inter4 */
55 9, 0, 0, 0, /* Stuffing */
56 11, 13, 13, 13, /* inter4Q */
57 };
58
60 { 1, 1 },
61 { 3, 3 },
62 { 1, 5 },
63 { 4, 4 },
64 { 5, 4 },
65 { 6, 6 },
66 { 2, 4 },
67 { 3, 4 },
68 { 7, 6 },
69 { 4, 6 },
70 { 5, 6 },
71 { 1, 6 },
72 { 1, 10 },
73 { 1, 7 },
74 { 1, 8 },
75 };
76
78 { 0, 1 },
79 { 2, 2 },
80 { 7, 3 },
81 { 6, 3 },
82 };
83
85 { 3, 4 }, { 5, 5 }, { 4, 5 }, { 9, 4 }, { 3, 5 }, { 7, 4 }, { 2, 6 },
86 { 11, 4 }, { 2, 5 }, { 3, 6 }, { 5, 4 }, { 10, 4 }, { 4, 4 }, { 8, 4 },
87 { 6, 4 }, { 3, 2 }
88 };
89
91 { 1, 1 }, { 1, 2 }, { 1, 3 }, { 1, 4 }, { 3, 6 }, { 5, 7 },
92 { 4, 7 }, { 3, 7 }, { 11, 9 }, { 10, 9 }, { 9, 9 }, { 17, 10 },
93 { 16, 10 }, { 15, 10 }, { 14, 10 }, { 13, 10 }, { 12, 10 }, { 11, 10 },
94 { 10, 10 }, { 9, 10 }, { 8, 10 }, { 7, 10 }, { 6, 10 }, { 5, 10 },
95 { 4, 10 }, { 7, 11 }, { 6, 11 }, { 5, 11 }, { 4, 11 }, { 3, 11 },
96 { 2, 11 }, { 3, 12 }, { 2, 12 }
97 };
98
99 /* third non intra table */
101 { 0x2, 2 }, { 0xf, 4 }, { 0x15, 6 }, { 0x17, 7 },
102 { 0x1f, 8 }, { 0x25, 9 }, { 0x24, 9 }, { 0x21, 10 },
103 { 0x20, 10 }, { 0x7, 11 }, { 0x6, 11 }, { 0x20, 11 },
104 { 0x6, 3 }, { 0x14, 6 }, { 0x1e, 8 }, { 0xf, 10 },
105 { 0x21, 11 }, { 0x50, 12 }, { 0xe, 4 }, { 0x1d, 8 },
106 { 0xe, 10 }, { 0x51, 12 }, { 0xd, 5 }, { 0x23, 9 },
107 { 0xd, 10 }, { 0xc, 5 }, { 0x22, 9 }, { 0x52, 12 },
108 { 0xb, 5 }, { 0xc, 10 }, { 0x53, 12 }, { 0x13, 6 },
109 { 0xb, 10 }, { 0x54, 12 }, { 0x12, 6 }, { 0xa, 10 },
110 { 0x11, 6 }, { 0x9, 10 }, { 0x10, 6 }, { 0x8, 10 },
111 { 0x16, 7 }, { 0x55, 12 }, { 0x15, 7 }, { 0x14, 7 },
112 { 0x1c, 8 }, { 0x1b, 8 }, { 0x21, 9 }, { 0x20, 9 },
113 { 0x1f, 9 }, { 0x1e, 9 }, { 0x1d, 9 }, { 0x1c, 9 },
114 { 0x1b, 9 }, { 0x1a, 9 }, { 0x22, 11 }, { 0x23, 11 },
115 { 0x56, 12 }, { 0x57, 12 }, { 0x7, 4 }, { 0x19, 9 },
116 { 0x5, 11 }, { 0xf, 6 }, { 0x4, 11 }, { 0xe, 6 },
117 { 0xd, 6 }, { 0xc, 6 }, { 0x13, 7 }, { 0x12, 7 },
118 { 0x11, 7 }, { 0x10, 7 }, { 0x1a, 8 }, { 0x19, 8 },
119 { 0x18, 8 }, { 0x17, 8 }, { 0x16, 8 }, { 0x15, 8 },
120 { 0x14, 8 }, { 0x13, 8 }, { 0x18, 9 }, { 0x17, 9 },
121 { 0x16, 9 }, { 0x15, 9 }, { 0x14, 9 }, { 0x13, 9 },
122 { 0x12, 9 }, { 0x11, 9 }, { 0x7, 10 }, { 0x6, 10 },
123 { 0x5, 10 }, { 0x4, 10 }, { 0x24, 11 }, { 0x25, 11 },
124 { 0x26, 11 }, { 0x27, 11 }, { 0x58, 12 }, { 0x59, 12 },
125 { 0x5a, 12 }, { 0x5b, 12 }, { 0x5c, 12 }, { 0x5d, 12 },
126 { 0x5e, 12 }, { 0x5f, 12 }, { 0x3, 7 },
127 };
128
130 1, 2, 3, 4, 5, 6, 7, 8,
131 9, 10, 11, 12, 1, 2, 3, 4,
132 5, 6, 1, 2, 3, 4, 1, 2,
133 3, 1, 2, 3, 1, 2, 3, 1,
134 2, 3, 1, 2, 1, 2, 1, 2,
135 1, 2, 1, 1, 1, 1, 1, 1,
136 1, 1, 1, 1, 1, 1, 1, 1,
137 1, 1, 1, 2, 3, 1, 2, 1,
138 1, 1, 1, 1, 1, 1, 1, 1,
139 1, 1, 1, 1, 1, 1, 1, 1,
140 1, 1, 1, 1, 1, 1, 1, 1,
141 1, 1, 1, 1, 1, 1, 1, 1,
142 1, 1, 1, 1, 1, 1,
143 };
144
146 0, 0, 0, 0, 0, 0, 0, 0,
147 0, 0, 0, 0, 1, 1, 1, 1,
148 1, 1, 2, 2, 2, 2, 3, 3,
149 3, 4, 4, 4, 5, 5, 5, 6,
150 6, 6, 7, 7, 8, 8, 9, 9,
151 10, 10, 11, 12, 13, 14, 15, 16,
152 17, 18, 19, 20, 21, 22, 23, 24,
153 25, 26, 0, 0, 0, 1, 1, 2,
154 3, 4, 5, 6, 7, 8, 9, 10,
155 11, 12, 13, 14, 15, 16, 17, 18,
156 19, 20, 21, 22, 23, 24, 25, 26,
157 27, 28, 29, 30, 31, 32, 33, 34,
158 35, 36, 37, 38, 39, 40,
159 };
160
162 102,
163 58,
167 };
168
170 { 0x2, 2 }, { 0x6, 3 }, { 0xe, 4 }, { 0xc, 5 },
171 { 0xd, 5 }, { 0x10, 6 }, { 0x11, 6 }, { 0x12, 6 },
172 { 0x16, 7 }, { 0x1b, 8 }, { 0x20, 9 }, { 0x21, 9 },
173 { 0x1a, 9 }, { 0x1b, 9 }, { 0x1c, 9 }, { 0x1d, 9 },
174 { 0x1e, 9 }, { 0x1f, 9 }, { 0x23, 11 }, { 0x22, 11 },
175 { 0x57, 12 }, { 0x56, 12 }, { 0x55, 12 }, { 0x54, 12 },
176 { 0x53, 12 }, { 0xf, 4 }, { 0x14, 6 }, { 0x14, 7 },
177 { 0x1e, 8 }, { 0xf, 10 }, { 0x21, 11 }, { 0x50, 12 },
178 { 0xb, 5 }, { 0x15, 7 }, { 0xe, 10 }, { 0x9, 10 },
179 { 0x15, 6 }, { 0x1d, 8 }, { 0xd, 10 }, { 0x51, 12 },
180 { 0x13, 6 }, { 0x23, 9 }, { 0x7, 11 }, { 0x17, 7 },
181 { 0x22, 9 }, { 0x52, 12 }, { 0x1c, 8 }, { 0xc, 10 },
182 { 0x1f, 8 }, { 0xb, 10 }, { 0x25, 9 }, { 0xa, 10 },
183 { 0x24, 9 }, { 0x6, 11 }, { 0x21, 10 }, { 0x20, 10 },
184 { 0x8, 10 }, { 0x20, 11 }, { 0x7, 4 }, { 0xc, 6 },
185 { 0x10, 7 }, { 0x13, 8 }, { 0x11, 9 }, { 0x12, 9 },
186 { 0x4, 10 }, { 0x27, 11 }, { 0x26, 11 }, { 0x5f, 12 },
187 { 0xf, 6 }, { 0x13, 9 }, { 0x5, 10 }, { 0x25, 11 },
188 { 0xe, 6 }, { 0x14, 9 }, { 0x24, 11 }, { 0xd, 6 },
189 { 0x6, 10 }, { 0x5e, 12 }, { 0x11, 7 }, { 0x7, 10 },
190 { 0x13, 7 }, { 0x5d, 12 }, { 0x12, 7 }, { 0x5c, 12 },
191 { 0x14, 8 }, { 0x5b, 12 }, { 0x15, 8 }, { 0x1a, 8 },
192 { 0x19, 8 }, { 0x18, 8 }, { 0x17, 8 }, { 0x16, 8 },
193 { 0x19, 9 }, { 0x15, 9 }, { 0x16, 9 }, { 0x18, 9 },
194 { 0x17, 9 }, { 0x4, 11 }, { 0x5, 11 }, { 0x58, 12 },
195 { 0x59, 12 }, { 0x5a, 12 }, { 0x3, 7 },
196 };
197
199 0, 0, 0, 0, 0, 0, 0, 0,
200 0, 0, 0, 0, 0, 0, 0, 0,
201 0, 0, 0, 0, 0, 0, 0, 0,
202 0, 1, 1, 1, 1, 1, 1, 1,
203 2, 2, 2, 2, 3, 3, 3, 3,
204 4, 4, 4, 5, 5, 5, 6, 6,
205 7, 7, 8, 8, 9, 9, 10, 11,
206 12, 13, 0, 0, 0, 0, 0, 0,
207 0, 0, 0, 0, 1, 1, 1, 1,
208 2, 2, 2, 3, 3, 3, 4, 4,
209 5, 5, 6, 6, 7, 7, 8, 9,
210 10, 11, 12, 13, 14, 15, 16, 17,
211 18, 19, 20, 21, 22, 23,
212 };
213
215 1, 2, 3, 4, 5, 6, 7, 8,
216 9, 10, 11, 12, 13, 14, 15, 16,
217 17, 18, 19, 20, 21, 22, 23, 24,
218 25, 1, 2, 3, 4, 5, 6, 7,
219 1, 2, 3, 4, 1, 2, 3, 4,
220 1, 2, 3, 1, 2, 3, 1, 2,
221 1, 2, 1, 2, 1, 2, 1, 1,
222 1, 1, 1, 2, 3, 4, 5, 6,
223 7, 8, 9, 10, 1, 2, 3, 4,
224 1, 2, 3, 1, 2, 3, 1, 2,
225 1, 2, 1, 2, 1, 2, 1, 1,
226 1, 1, 1, 1, 1, 1, 1, 1,
227 1, 1, 1, 1, 1, 1,
228 };
229
231 102,
232 58,
236 };
237
239 { 0, 0 },
240 { 128, 96 },
241 { 176, 144 },
242 { 352, 288 },
243 { 704, 576 },
244 { 1408, 1152 },
245 };
246
248 // 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
249 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
250 };
251
253 // 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
254 {
255 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
256 },
257 {
258 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
259 }
260 };
261
263 // 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
264 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
265 };
266
268 47, 98, 395, 1583, 6335, 9215
269 };
270
272 6, 7, 9, 11, 13, 14, 14
273 };
274
276 { 0, 1 },
277 { 1, 1 },
278 { 12, 11 },
279 { 10, 11 },
280 { 16, 11 },
281 { 40, 33 },
282 { 0, 1 },
283 { 0, 1 },
284 { 0, 1 },
285 { 0, 1 },
286 { 0, 1 },
287 { 0, 1 },
288 { 0, 1 },
289 { 0, 1 },
290 { 0, 1 },
291 { 0, 1 },
292 };
const int8_t ff_inter_run[102]
const uint16_t ff_mba_max[6]
const uint16_t ff_h263_format[8][2]
const int8_t ff_inter_level[102]
const uint8_t ff_h263_intra_MCBPC_bits[9]
const uint8_t ff_mba_length[7]
static const int8_t intra_run_aic[102]
const uint8_t ff_h263_mbtype_b_tab[15][2]
uint8_t ff_h263_static_rl_table_store[2][2][2 *MAX_RUN+MAX_LEVEL+3]
const uint8_t ff_h263_inter_MCBPC_code[28]
const uint8_t ff_modified_quant_tab[2][32]
const uint8_t ff_h263_inter_MCBPC_bits[28]
const uint8_t ff_h263_chroma_qscale_table[32]
const uint8_t ff_aic_dc_scale_table[32]
const uint8_t ff_h263_intra_MCBPC_code[9]
Rational number (pair of numerator and denominator).
const uint8_t ff_cbpc_b_tab[4][2]
const uint8_t ff_h263_cbpy_tab[16][2]
static const uint16_t intra_vlc_aic[103][2]
const AVRational ff_h263_pixel_aspect[16]
static const int8_t intra_level_aic[102]
const uint16_t ff_inter_vlc[103][2]
const uint8_t ff_mvtab[33][2]