OSDN Git Service

Add official LGPL license headers to the files that were missing them.
[coroid/ffmpeg_saccubus.git] / libavcodec / mpeg4data.h
1 /*
2  * copyright (c) 2000,2001 Fabrice Bellard
3  * H263+ support
4  * copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at>
5  *
6  * This library 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 of the License, or (at your option) any later version.
10  *
11  * This library 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 this library; 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 mpeg4data.h
23  * mpeg4 tables.
24  */
25
26 // shapes
27 #define RECT_SHAPE       0
28 #define BIN_SHAPE        1
29 #define BIN_ONLY_SHAPE   2
30 #define GRAY_SHAPE       3
31
32 #define SIMPLE_VO_TYPE             1
33 #define CORE_VO_TYPE               3
34 #define MAIN_VO_TYPE               4
35 #define NBIT_VO_TYPE               5
36 #define ARTS_VO_TYPE               10
37 #define ACE_VO_TYPE                12
38 #define ADV_SIMPLE_VO_TYPE         17
39
40 // aspect_ratio_info
41 #define EXTENDED_PAR 15
42
43 //vol_sprite_usage / sprite_enable
44 #define STATIC_SPRITE 1
45 #define GMC_SPRITE 2
46
47 #define MOTION_MARKER 0x1F001
48 #define DC_MARKER     0x6B001
49
50 static const int mb_type_b_map[4]= {
51     MB_TYPE_DIRECT2 | MB_TYPE_L0L1,
52     MB_TYPE_L0L1 | MB_TYPE_16x16,
53     MB_TYPE_L1 | MB_TYPE_16x16,
54     MB_TYPE_L0 | MB_TYPE_16x16,
55 };
56
57 #define VOS_STARTCODE        0x1B0
58 #define USER_DATA_STARTCODE  0x1B2
59 #define GOP_STARTCODE        0x1B3
60 #define VISUAL_OBJ_STARTCODE 0x1B5
61 #define VOP_STARTCODE        0x1B6
62
63 /* dc encoding for mpeg4 */
64 const uint8_t DCtab_lum[13][2] =
65 {
66     {3,3}, {3,2}, {2,2}, {2,3}, {1,3}, {1,4}, {1,5}, {1,6}, {1,7},
67     {1,8}, {1,9}, {1,10}, {1,11},
68 };
69
70 const uint8_t DCtab_chrom[13][2] =
71 {
72     {3,2}, {2,2}, {1,2}, {1,3}, {1,4}, {1,5}, {1,6}, {1,7}, {1,8},
73     {1,9}, {1,10}, {1,11}, {1,12},
74 };
75
76 const uint16_t intra_vlc[103][2] = {
77 { 0x2, 2 },
78 { 0x6, 3 },{ 0xf, 4 },{ 0xd, 5 },{ 0xc, 5 },
79 { 0x15, 6 },{ 0x13, 6 },{ 0x12, 6 },{ 0x17, 7 },
80 { 0x1f, 8 },{ 0x1e, 8 },{ 0x1d, 8 },{ 0x25, 9 },
81 { 0x24, 9 },{ 0x23, 9 },{ 0x21, 9 },{ 0x21, 10 },
82 { 0x20, 10 },{ 0xf, 10 },{ 0xe, 10 },{ 0x7, 11 },
83 { 0x6, 11 },{ 0x20, 11 },{ 0x21, 11 },{ 0x50, 12 },
84 { 0x51, 12 },{ 0x52, 12 },{ 0xe, 4 },{ 0x14, 6 },
85 { 0x16, 7 },{ 0x1c, 8 },{ 0x20, 9 },{ 0x1f, 9 },
86 { 0xd, 10 },{ 0x22, 11 },{ 0x53, 12 },{ 0x55, 12 },
87 { 0xb, 5 },{ 0x15, 7 },{ 0x1e, 9 },{ 0xc, 10 },
88 { 0x56, 12 },{ 0x11, 6 },{ 0x1b, 8 },{ 0x1d, 9 },
89 { 0xb, 10 },{ 0x10, 6 },{ 0x22, 9 },{ 0xa, 10 },
90 { 0xd, 6 },{ 0x1c, 9 },{ 0x8, 10 },{ 0x12, 7 },
91 { 0x1b, 9 },{ 0x54, 12 },{ 0x14, 7 },{ 0x1a, 9 },
92 { 0x57, 12 },{ 0x19, 8 },{ 0x9, 10 },{ 0x18, 8 },
93 { 0x23, 11 },{ 0x17, 8 },{ 0x19, 9 },{ 0x18, 9 },
94 { 0x7, 10 },{ 0x58, 12 },{ 0x7, 4 },{ 0xc, 6 },
95 { 0x16, 8 },{ 0x17, 9 },{ 0x6, 10 },{ 0x5, 11 },
96 { 0x4, 11 },{ 0x59, 12 },{ 0xf, 6 },{ 0x16, 9 },
97 { 0x5, 10 },{ 0xe, 6 },{ 0x4, 10 },{ 0x11, 7 },
98 { 0x24, 11 },{ 0x10, 7 },{ 0x25, 11 },{ 0x13, 7 },
99 { 0x5a, 12 },{ 0x15, 8 },{ 0x5b, 12 },{ 0x14, 8 },
100 { 0x13, 8 },{ 0x1a, 8 },{ 0x15, 9 },{ 0x14, 9 },
101 { 0x13, 9 },{ 0x12, 9 },{ 0x11, 9 },{ 0x26, 11 },
102 { 0x27, 11 },{ 0x5c, 12 },{ 0x5d, 12 },{ 0x5e, 12 },
103 { 0x5f, 12 },{ 0x3, 7 },
104 };
105
106 const int8_t intra_level[102] = {
107   1,  2,  3,  4,  5,  6,  7,  8,
108   9, 10, 11, 12, 13, 14, 15, 16,
109  17, 18, 19, 20, 21, 22, 23, 24,
110  25, 26, 27,  1,  2,  3,  4,  5,
111   6,  7,  8,  9, 10,  1,  2,  3,
112   4,  5,  1,  2,  3,  4,  1,  2,
113   3,  1,  2,  3,  1,  2,  3,  1,
114   2,  3,  1,  2,  1,  2,  1,  1,
115   1,  1,  1,  1,  2,  3,  4,  5,
116   6,  7,  8,  1,  2,  3,  1,  2,
117   1,  2,  1,  2,  1,  2,  1,  2,
118   1,  1,  1,  1,  1,  1,  1,  1,
119   1,  1,  1,  1,  1,  1,
120 };
121
122 const int8_t intra_run[102] = {
123   0,  0,  0,  0,  0,  0,  0,  0,
124   0,  0,  0,  0,  0,  0,  0,  0,
125   0,  0,  0,  0,  0,  0,  0,  0,
126   0,  0,  0,  1,  1,  1,  1,  1,
127   1,  1,  1,  1,  1,  2,  2,  2,
128   2,  2,  3,  3,  3,  3,  4,  4,
129   4,  5,  5,  5,  6,  6,  6,  7,
130   7,  7,  8,  8,  9,  9, 10, 11,
131  12, 13, 14,  0,  0,  0,  0,  0,
132   0,  0,  0,  1,  1,  1,  2,  2,
133   3,  3,  4,  4,  5,  5,  6,  6,
134   7,  8,  9, 10, 11, 12, 13, 14,
135  15, 16, 17, 18, 19, 20,
136 };
137
138 static RLTable rl_intra = {
139     102,
140     67,
141     intra_vlc,
142     intra_run,
143     intra_level,
144 };
145
146 static const uint16_t inter_rvlc[170][2]={ //note this is identical to the intra rvlc except that its reordered
147 {0x0006,  3},{0x0001,  4},{0x0004,  5},{0x001C,  7},
148 {0x003C,  8},{0x003D,  8},{0x007C,  9},{0x00FC, 10},
149 {0x00FD, 10},{0x01FC, 11},{0x01FD, 11},{0x03FC, 12},
150 {0x07FC, 13},{0x07FD, 13},{0x0BFC, 13},{0x0BFD, 13},
151 {0x0FFC, 14},{0x0FFD, 14},{0x1FFC, 15},{0x0007,  3},
152 {0x000C,  6},{0x005C,  8},{0x007D,  9},{0x017C, 10},
153 {0x02FC, 11},{0x03FD, 12},{0x0DFC, 13},{0x17FC, 14},
154 {0x17FD, 14},{0x000A,  4},{0x001D,  7},{0x00BC,  9},
155 {0x02FD, 11},{0x05FC, 12},{0x1BFC, 14},{0x1BFD, 14},
156 {0x0005,  5},{0x005D,  8},{0x017D, 10},{0x05FD, 12},
157 {0x0DFD, 13},{0x1DFC, 14},{0x1FFD, 15},{0x0008,  5},
158 {0x006C,  8},{0x037C, 11},{0x0EFC, 13},{0x2FFC, 15},
159 {0x0009,  5},{0x00BD,  9},{0x037D, 11},{0x0EFD, 13},
160 {0x000D,  6},{0x01BC, 10},{0x06FC, 12},{0x1DFD, 14},
161 {0x0014,  6},{0x01BD, 10},{0x06FD, 12},{0x2FFD, 15},
162 {0x0015,  6},{0x01DC, 10},{0x0F7C, 13},{0x002C,  7},
163 {0x01DD, 10},{0x1EFC, 14},{0x002D,  7},{0x03BC, 11},
164 {0x0034,  7},{0x077C, 12},{0x006D,  8},{0x0F7D, 13},
165 {0x0074,  8},{0x1EFD, 14},{0x0075,  8},{0x1F7C, 14},
166 {0x00DC,  9},{0x1F7D, 14},{0x00DD,  9},{0x1FBC, 14},
167 {0x00EC,  9},{0x37FC, 15},{0x01EC, 10},{0x01ED, 10},
168 {0x01F4, 10},{0x03BD, 11},{0x03DC, 11},{0x03DD, 11},
169 {0x03EC, 11},{0x03ED, 11},{0x03F4, 11},{0x077D, 12},
170 {0x07BC, 12},{0x07BD, 12},{0x0FBC, 13},{0x0FBD, 13},
171 {0x0FDC, 13},{0x0FDD, 13},{0x1FBD, 14},{0x1FDC, 14},
172 {0x1FDD, 14},{0x37FD, 15},{0x3BFC, 15},
173 {0x000B,  4},{0x0078,  8},{0x03F5, 11},{0x0FEC, 13},
174 {0x1FEC, 14},{0x0012,  5},{0x00ED,  9},{0x07DC, 12},
175 {0x1FED, 14},{0x3BFD, 15},{0x0013,  5},{0x03F8, 11},
176 {0x3DFC, 15},{0x0018,  6},{0x07DD, 12},{0x0019,  6},
177 {0x07EC, 12},{0x0022,  6},{0x0FED, 13},{0x0023,  6},
178 {0x0FF4, 13},{0x0035,  7},{0x0FF5, 13},{0x0038,  7},
179 {0x0FF8, 13},{0x0039,  7},{0x0FF9, 13},{0x0042,  7},
180 {0x1FF4, 14},{0x0043,  7},{0x1FF5, 14},{0x0079,  8},
181 {0x1FF8, 14},{0x0082,  8},{0x3DFD, 15},{0x0083,  8},
182 {0x00F4,  9},{0x00F5,  9},{0x00F8,  9},{0x00F9,  9},
183 {0x0102,  9},{0x0103,  9},{0x01F5, 10},{0x01F8, 10},
184 {0x01F9, 10},{0x0202, 10},{0x0203, 10},{0x03F9, 11},
185 {0x0402, 11},{0x0403, 11},{0x07ED, 12},{0x07F4, 12},
186 {0x07F5, 12},{0x07F8, 12},{0x07F9, 12},{0x0802, 12},
187 {0x0803, 12},{0x1002, 13},{0x1003, 13},{0x1FF9, 14},
188 {0x2002, 14},{0x2003, 14},{0x3EFC, 15},{0x3EFD, 15},
189 {0x3F7C, 15},{0x3F7D, 15},{0x0000, 4}
190 };
191
192 static const int8_t inter_rvlc_run[169]={
193  0,  0,  0,  0,  0,  0,  0,  0,
194  0,  0,  0,  0,  0,  0,  0,  0,
195  0,  0,  0,  1,  1,  1,  1,  1,
196  1,  1,  1,  1,  1,  2,  2,  2,
197  2,  2,  2,  2,  3,  3,  3,  3,
198  3,  3,  3,  4,  4,  4,  4,  4,
199  5,  5,  5,  5,  6,  6,  6,  6,
200  7,  7,  7,  7,  8,  8,  8,  9,
201  9,  9, 10, 10, 11, 11, 12, 12,
202 13, 13, 14, 14, 15, 15, 16, 16,
203 17, 17, 18, 19, 20, 21, 22, 23,
204 24, 25, 26, 27, 28, 29, 30, 31,
205 32, 33, 34, 35, 36, 37, 38,
206  0,  0,  0,  0,  0,  1,  1,  1,
207  1,  1,  2,  2,  2,  3,  3,  4,
208  4,  5,  5,  6,  6,  7,  7,  8,
209  8,  9,  9, 10, 10, 11, 11, 12,
210 12, 13, 13, 14, 15, 16, 17, 18,
211 19, 20, 21, 22, 23, 24, 25, 26,
212 27, 28, 29, 30, 31, 32, 33, 34,
213 35, 36, 37, 38, 39, 40, 41, 42,
214 43, 44,
215 };
216
217 static const int8_t inter_rvlc_level[169]={
218  1,  2,  3,  4,  5,  6,  7,  8,
219  9, 10, 11, 12, 13, 14, 15, 16,
220 17, 18, 19,  1,  2,  3,  4,  5,
221  6,  7,  8,  9, 10,  1,  2,  3,
222  4,  5,  6,  7,  1,  2,  3,  4,
223  5,  6,  7,  1,  2,  3,  4,  5,
224  1,  2,  3,  4,  1,  2,  3,  4,
225  1,  2,  3,  4,  1,  2,  3,  1,
226  2,  3,  1,  2,  1,  2,  1,  2,
227  1,  2,  1,  2,  1,  2,  1,  2,
228  1,  2,  1,  1,  1,  1,  1,  1,
229  1,  1,  1,  1,  1,  1,  1,  1,
230  1,  1,  1,  1,  1,  1,  1,
231  1,  2,  3,  4,  5,  1,  2,  3,
232  4,  5,  1,  2,  3,  1,  2,  1,
233  2,  1,  2,  1,  2,  1,  2,  1,
234  2,  1,  2,  1,  2,  1,  2,  1,
235  2,  1,  2,  1,  1,  1,  1,  1,
236  1,  1,  1,  1,  1,  1,  1,  1,
237  1,  1,  1,  1,  1,  1,  1,  1,
238  1,  1,  1,  1,  1,  1,  1,  1,
239  1,  1,
240 };
241
242 static RLTable rvlc_rl_inter = {
243     169,
244     103,
245     inter_rvlc,
246     inter_rvlc_run,
247     inter_rvlc_level,
248 };
249
250 static const uint16_t intra_rvlc[170][2]={
251 {0x0006,  3},{0x0007,  3},{0x000A,  4},{0x0009,  5},
252 {0x0014,  6},{0x0015,  6},{0x0034,  7},{0x0074,  8},
253 {0x0075,  8},{0x00DD,  9},{0x00EC,  9},{0x01EC, 10},
254 {0x01ED, 10},{0x01F4, 10},{0x03EC, 11},{0x03ED, 11},
255 {0x03F4, 11},{0x077D, 12},{0x07BC, 12},{0x0FBD, 13},
256 {0x0FDC, 13},{0x07BD, 12},{0x0FDD, 13},{0x1FBD, 14},
257 {0x1FDC, 14},{0x1FDD, 14},{0x1FFC, 15},{0x0001,  4},
258 {0x0008,  5},{0x002D,  7},{0x006C,  8},{0x006D,  8},
259 {0x00DC,  9},{0x01DD, 10},{0x03DC, 11},{0x03DD, 11},
260 {0x077C, 12},{0x0FBC, 13},{0x1F7D, 14},{0x1FBC, 14},
261 {0x0004,  5},{0x002C,  7},{0x00BC,  9},{0x01DC, 10},
262 {0x03BC, 11},{0x03BD, 11},{0x0EFD, 13},{0x0F7C, 13},
263 {0x0F7D, 13},{0x1EFD, 14},{0x1F7C, 14},{0x0005,  5},
264 {0x005C,  8},{0x00BD,  9},{0x037D, 11},{0x06FC, 12},
265 {0x0EFC, 13},{0x1DFD, 14},{0x1EFC, 14},{0x1FFD, 15},
266 {0x000C,  6},{0x005D,  8},{0x01BD, 10},{0x03FD, 12},
267 {0x06FD, 12},{0x1BFD, 14},{0x000D,  6},{0x007D,  9},
268 {0x02FC, 11},{0x05FC, 12},{0x1BFC, 14},{0x1DFC, 14},
269 {0x001C,  7},{0x017C, 10},{0x02FD, 11},{0x05FD, 12},
270 {0x2FFC, 15},{0x001D,  7},{0x017D, 10},{0x037C, 11},
271 {0x0DFD, 13},{0x2FFD, 15},{0x003C,  8},{0x01BC, 10},
272 {0x0BFD, 13},{0x17FD, 14},{0x003D,  8},{0x01FD, 11},
273 {0x0DFC, 13},{0x37FC, 15},{0x007C,  9},{0x03FC, 12},
274 {0x00FC, 10},{0x0BFC, 13},{0x00FD, 10},{0x37FD, 15},
275 {0x01FC, 11},{0x07FC, 13},{0x07FD, 13},{0x0FFC, 14},
276 {0x0FFD, 14},{0x17FC, 14},{0x3BFC, 15},
277 {0x000B,  4},{0x0078,  8},{0x03F5, 11},{0x0FEC, 13},
278 {0x1FEC, 14},{0x0012,  5},{0x00ED,  9},{0x07DC, 12},
279 {0x1FED, 14},{0x3BFD, 15},{0x0013,  5},{0x03F8, 11},
280 {0x3DFC, 15},{0x0018,  6},{0x07DD, 12},{0x0019,  6},
281 {0x07EC, 12},{0x0022,  6},{0x0FED, 13},{0x0023,  6},
282 {0x0FF4, 13},{0x0035,  7},{0x0FF5, 13},{0x0038,  7},
283 {0x0FF8, 13},{0x0039,  7},{0x0FF9, 13},{0x0042,  7},
284 {0x1FF4, 14},{0x0043,  7},{0x1FF5, 14},{0x0079,  8},
285 {0x1FF8, 14},{0x0082,  8},{0x3DFD, 15},{0x0083,  8},
286 {0x00F4,  9},{0x00F5,  9},{0x00F8,  9},{0x00F9,  9},
287 {0x0102,  9},{0x0103,  9},{0x01F5, 10},{0x01F8, 10},
288 {0x01F9, 10},{0x0202, 10},{0x0203, 10},{0x03F9, 11},
289 {0x0402, 11},{0x0403, 11},{0x07ED, 12},{0x07F4, 12},
290 {0x07F5, 12},{0x07F8, 12},{0x07F9, 12},{0x0802, 12},
291 {0x0803, 12},{0x1002, 13},{0x1003, 13},{0x1FF9, 14},
292 {0x2002, 14},{0x2003, 14},{0x3EFC, 15},{0x3EFD, 15},
293 {0x3F7C, 15},{0x3F7D, 15},{0x0000,  4}
294 };
295
296 static const int8_t intra_rvlc_run[169]={
297  0,  0,  0,  0,  0,  0,  0,  0,
298  0,  0,  0,  0,  0,  0,  0,  0,
299  0,  0,  0,  0,  0,  0,  0,  0,
300  0,  0,  0,  1,  1,  1,  1,  1,
301  1,  1,  1,  1,  1,  1,  1,  1,
302  2,  2,  2,  2,  2,  2,  2,  2,
303  2,  2,  2,  3,  3,  3,  3,  3,
304  3,  3,  3,  3,  4,  4,  4,  4,
305  4,  4,  5,  5,  5,  5,  5,  5,
306  6,  6,  6,  6,  6,  7,  7,  7,
307  7,  7,  8,  8,  8,  8,  9,  9,
308  9,  9, 10, 10, 11, 11, 12, 12,
309 13, 14, 15, 16, 17, 18, 19,
310  0,  0,  0,  0,  0,  1,  1,  1,
311  1,  1,  2,  2,  2,  3,  3,  4,
312  4,  5,  5,  6,  6,  7,  7,  8,
313  8,  9,  9, 10, 10, 11, 11, 12,
314 12, 13, 13, 14, 15, 16, 17, 18,
315 19, 20, 21, 22, 23, 24, 25, 26,
316 27, 28, 29, 30, 31, 32, 33, 34,
317 35, 36, 37, 38, 39, 40, 41, 42,
318 43, 44,
319 };
320
321 static const int8_t intra_rvlc_level[169]={
322  1,  2,  3,  4,  5,  6,  7,  8,
323  9, 10, 11, 12, 13, 14, 15, 16,
324 17, 18, 19, 20, 21, 22, 23, 24,
325 25, 26, 27,  1,  2,  3,  4,  5,
326  6,  7,  8,  9, 10, 11, 12, 13,
327  1,  2,  3,  4,  5,  6,  7,  8,
328  9, 10, 11,  1,  2,  3,  4,  5,
329  6,  7,  8,  9,  1,  2,  3,  4,
330  5,  6,  1,  2,  3,  4,  5,  6,
331  1,  2,  3,  4,  5,  1,  2,  3,
332  4,  5,  1,  2,  3,  4,  1,  2,
333  3,  4,  1,  2,  1,  2,  1,  2,
334  1,  1,  1,  1,  1,  1,  1,
335  1,  2,  3,  4,  5,  1,  2,  3,
336  4,  5,  1,  2,  3,  1,  2,  1,
337  2,  1,  2,  1,  2,  1,  2,  1,
338  2,  1,  2,  1,  2,  1,  2,  1,
339  2,  1,  2,  1,  1,  1,  1,  1,
340  1,  1,  1,  1,  1,  1,  1,  1,
341  1,  1,  1,  1,  1,  1,  1,  1,
342  1,  1,  1,  1,  1,  1,  1,  1,
343  1,  1,
344 };
345
346 static RLTable rvlc_rl_intra = {
347     169,
348     103,
349     intra_rvlc,
350     intra_rvlc_run,
351     intra_rvlc_level,
352 };
353
354 static const uint16_t sprite_trajectory_tab[15][2] = {
355  {0x00, 2}, {0x02, 3},  {0x03, 3},  {0x04, 3}, {0x05, 3}, {0x06, 3},
356  {0x0E, 4}, {0x1E, 5},  {0x3E, 6},  {0x7E, 7}, {0xFE, 8},
357  {0x1FE, 9},{0x3FE, 10},{0x7FE, 11},{0xFFE, 12},
358 };
359
360 static const uint8_t mb_type_b_tab[4][2] = {
361  {1, 1}, {1, 2}, {1, 3}, {1, 4},
362 };
363
364 static const AVRational pixel_aspect[16]={
365  {0, 1},
366  {1, 1},
367  {12, 11},
368  {10, 11},
369  {16, 11},
370  {40, 33},
371  {0, 1},
372  {0, 1},
373  {0, 1},
374  {0, 1},
375  {0, 1},
376  {0, 1},
377  {0, 1},
378  {0, 1},
379  {0, 1},
380  {0, 1},
381 };
382
383 /* these matrixes will be permuted for the idct */
384 const int16_t ff_mpeg4_default_intra_matrix[64] = {
385   8, 17, 18, 19, 21, 23, 25, 27,
386  17, 18, 19, 21, 23, 25, 27, 28,
387  20, 21, 22, 23, 24, 26, 28, 30,
388  21, 22, 23, 24, 26, 28, 30, 32,
389  22, 23, 24, 26, 28, 30, 32, 35,
390  23, 24, 26, 28, 30, 32, 35, 38,
391  25, 26, 28, 30, 32, 35, 38, 41,
392  27, 28, 30, 32, 35, 38, 41, 45,
393 };
394
395 const int16_t ff_mpeg4_default_non_intra_matrix[64] = {
396  16, 17, 18, 19, 20, 21, 22, 23,
397  17, 18, 19, 20, 21, 22, 23, 24,
398  18, 19, 20, 21, 22, 23, 24, 25,
399  19, 20, 21, 22, 23, 24, 26, 27,
400  20, 21, 22, 23, 25, 26, 27, 28,
401  21, 22, 23, 24, 26, 27, 28, 30,
402  22, 23, 24, 26, 27, 28, 30, 31,
403  23, 24, 25, 27, 28, 30, 31, 33,
404 };
405
406 const uint8_t ff_mpeg4_y_dc_scale_table[32]={
407 //  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
408     0, 8, 8, 8, 8,10,12,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,36,38,40,42,44,46
409 };
410 const uint8_t ff_mpeg4_c_dc_scale_table[32]={
411 //  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
412     0, 8, 8, 8, 8, 9, 9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,20,21,22,23,24,25
413 };
414
415 const uint16_t ff_mpeg4_resync_prefix[8]={
416     0x7F00, 0x7E00, 0x7C00, 0x7800, 0x7000, 0x6000, 0x4000, 0x0000
417 };
418
419 static const uint8_t mpeg4_dc_threshold[8]={
420     99, 13, 15, 17, 19, 21, 23, 0
421 };