xref: /third_party/ffmpeg/libavcodec/mpeg4data.h (revision cabdff1a)
1/*
2 * copyright (c) 2000,2001 Fabrice Bellard
3 * H.263+ support
4 * copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at>
5 *
6 * This file is part of FFmpeg.
7 *
8 * FFmpeg is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * FFmpeg is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with FFmpeg; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22
23/**
24 * @file
25 * MPEG-4 tables.
26 */
27
28#ifndef AVCODEC_MPEG4DATA_H
29#define AVCODEC_MPEG4DATA_H
30
31#include "mpeg4videodata.h"
32
33/* dc encoding for MPEG-4 */
34const uint8_t ff_mpeg4_DCtab_lum[13][2] =
35{
36    {3,3}, {3,2}, {2,2}, {2,3}, {1,3}, {1,4}, {1,5}, {1,6}, {1,7},
37    {1,8}, {1,9}, {1,10}, {1,11},
38};
39
40const uint8_t ff_mpeg4_DCtab_chrom[13][2] =
41{
42    {3,2}, {2,2}, {1,2}, {1,3}, {1,4}, {1,5}, {1,6}, {1,7}, {1,8},
43    {1,9}, {1,10}, {1,11}, {1,12},
44};
45
46const uint16_t ff_mpeg4_intra_vlc[103][2] = {
47{ 0x2, 2 },
48{ 0x6, 3 },{ 0xf, 4 },{ 0xd, 5 },{ 0xc, 5 },
49{ 0x15, 6 },{ 0x13, 6 },{ 0x12, 6 },{ 0x17, 7 },
50{ 0x1f, 8 },{ 0x1e, 8 },{ 0x1d, 8 },{ 0x25, 9 },
51{ 0x24, 9 },{ 0x23, 9 },{ 0x21, 9 },{ 0x21, 10 },
52{ 0x20, 10 },{ 0xf, 10 },{ 0xe, 10 },{ 0x7, 11 },
53{ 0x6, 11 },{ 0x20, 11 },{ 0x21, 11 },{ 0x50, 12 },
54{ 0x51, 12 },{ 0x52, 12 },{ 0xe, 4 },{ 0x14, 6 },
55{ 0x16, 7 },{ 0x1c, 8 },{ 0x20, 9 },{ 0x1f, 9 },
56{ 0xd, 10 },{ 0x22, 11 },{ 0x53, 12 },{ 0x55, 12 },
57{ 0xb, 5 },{ 0x15, 7 },{ 0x1e, 9 },{ 0xc, 10 },
58{ 0x56, 12 },{ 0x11, 6 },{ 0x1b, 8 },{ 0x1d, 9 },
59{ 0xb, 10 },{ 0x10, 6 },{ 0x22, 9 },{ 0xa, 10 },
60{ 0xd, 6 },{ 0x1c, 9 },{ 0x8, 10 },{ 0x12, 7 },
61{ 0x1b, 9 },{ 0x54, 12 },{ 0x14, 7 },{ 0x1a, 9 },
62{ 0x57, 12 },{ 0x19, 8 },{ 0x9, 10 },{ 0x18, 8 },
63{ 0x23, 11 },{ 0x17, 8 },{ 0x19, 9 },{ 0x18, 9 },
64{ 0x7, 10 },{ 0x58, 12 },{ 0x7, 4 },{ 0xc, 6 },
65{ 0x16, 8 },{ 0x17, 9 },{ 0x6, 10 },{ 0x5, 11 },
66{ 0x4, 11 },{ 0x59, 12 },{ 0xf, 6 },{ 0x16, 9 },
67{ 0x5, 10 },{ 0xe, 6 },{ 0x4, 10 },{ 0x11, 7 },
68{ 0x24, 11 },{ 0x10, 7 },{ 0x25, 11 },{ 0x13, 7 },
69{ 0x5a, 12 },{ 0x15, 8 },{ 0x5b, 12 },{ 0x14, 8 },
70{ 0x13, 8 },{ 0x1a, 8 },{ 0x15, 9 },{ 0x14, 9 },
71{ 0x13, 9 },{ 0x12, 9 },{ 0x11, 9 },{ 0x26, 11 },
72{ 0x27, 11 },{ 0x5c, 12 },{ 0x5d, 12 },{ 0x5e, 12 },
73{ 0x5f, 12 },{ 0x3, 7 },
74};
75
76const int8_t ff_mpeg4_intra_level[102] = {
77  1,  2,  3,  4,  5,  6,  7,  8,
78  9, 10, 11, 12, 13, 14, 15, 16,
79 17, 18, 19, 20, 21, 22, 23, 24,
80 25, 26, 27,  1,  2,  3,  4,  5,
81  6,  7,  8,  9, 10,  1,  2,  3,
82  4,  5,  1,  2,  3,  4,  1,  2,
83  3,  1,  2,  3,  1,  2,  3,  1,
84  2,  3,  1,  2,  1,  2,  1,  1,
85  1,  1,  1,  1,  2,  3,  4,  5,
86  6,  7,  8,  1,  2,  3,  1,  2,
87  1,  2,  1,  2,  1,  2,  1,  2,
88  1,  1,  1,  1,  1,  1,  1,  1,
89  1,  1,  1,  1,  1,  1,
90};
91
92const int8_t ff_mpeg4_intra_run[102] = {
93  0,  0,  0,  0,  0,  0,  0,  0,
94  0,  0,  0,  0,  0,  0,  0,  0,
95  0,  0,  0,  0,  0,  0,  0,  0,
96  0,  0,  0,  1,  1,  1,  1,  1,
97  1,  1,  1,  1,  1,  2,  2,  2,
98  2,  2,  3,  3,  3,  3,  4,  4,
99  4,  5,  5,  5,  6,  6,  6,  7,
100  7,  7,  8,  8,  9,  9, 10, 11,
101 12, 13, 14,  0,  0,  0,  0,  0,
102  0,  0,  0,  1,  1,  1,  2,  2,
103  3,  3,  4,  4,  5,  5,  6,  6,
104  7,  8,  9, 10, 11, 12, 13, 14,
105 15, 16, 17, 18, 19, 20,
106};
107
108RLTable ff_mpeg4_rl_intra = {
109    102,
110    67,
111    ff_mpeg4_intra_vlc,
112    ff_mpeg4_intra_run,
113    ff_mpeg4_intra_level,
114};
115
116/* Note this is identical to the intra rvlc except that it is reordered. */
117static const uint16_t inter_rvlc[170][2]={
118{0x0006,  3},{0x0001,  4},{0x0004,  5},{0x001C,  7},
119{0x003C,  8},{0x003D,  8},{0x007C,  9},{0x00FC, 10},
120{0x00FD, 10},{0x01FC, 11},{0x01FD, 11},{0x03FC, 12},
121{0x07FC, 13},{0x07FD, 13},{0x0BFC, 13},{0x0BFD, 13},
122{0x0FFC, 14},{0x0FFD, 14},{0x1FFC, 15},{0x0007,  3},
123{0x000C,  6},{0x005C,  8},{0x007D,  9},{0x017C, 10},
124{0x02FC, 11},{0x03FD, 12},{0x0DFC, 13},{0x17FC, 14},
125{0x17FD, 14},{0x000A,  4},{0x001D,  7},{0x00BC,  9},
126{0x02FD, 11},{0x05FC, 12},{0x1BFC, 14},{0x1BFD, 14},
127{0x0005,  5},{0x005D,  8},{0x017D, 10},{0x05FD, 12},
128{0x0DFD, 13},{0x1DFC, 14},{0x1FFD, 15},{0x0008,  5},
129{0x006C,  8},{0x037C, 11},{0x0EFC, 13},{0x2FFC, 15},
130{0x0009,  5},{0x00BD,  9},{0x037D, 11},{0x0EFD, 13},
131{0x000D,  6},{0x01BC, 10},{0x06FC, 12},{0x1DFD, 14},
132{0x0014,  6},{0x01BD, 10},{0x06FD, 12},{0x2FFD, 15},
133{0x0015,  6},{0x01DC, 10},{0x0F7C, 13},{0x002C,  7},
134{0x01DD, 10},{0x1EFC, 14},{0x002D,  7},{0x03BC, 11},
135{0x0034,  7},{0x077C, 12},{0x006D,  8},{0x0F7D, 13},
136{0x0074,  8},{0x1EFD, 14},{0x0075,  8},{0x1F7C, 14},
137{0x00DC,  9},{0x1F7D, 14},{0x00DD,  9},{0x1FBC, 14},
138{0x00EC,  9},{0x37FC, 15},{0x01EC, 10},{0x01ED, 10},
139{0x01F4, 10},{0x03BD, 11},{0x03DC, 11},{0x03DD, 11},
140{0x03EC, 11},{0x03ED, 11},{0x03F4, 11},{0x077D, 12},
141{0x07BC, 12},{0x07BD, 12},{0x0FBC, 13},{0x0FBD, 13},
142{0x0FDC, 13},{0x0FDD, 13},{0x1FBD, 14},{0x1FDC, 14},
143{0x1FDD, 14},{0x37FD, 15},{0x3BFC, 15},
144{0x000B,  4},{0x0078,  8},{0x03F5, 11},{0x0FEC, 13},
145{0x1FEC, 14},{0x0012,  5},{0x00ED,  9},{0x07DC, 12},
146{0x1FED, 14},{0x3BFD, 15},{0x0013,  5},{0x03F8, 11},
147{0x3DFC, 15},{0x0018,  6},{0x07DD, 12},{0x0019,  6},
148{0x07EC, 12},{0x0022,  6},{0x0FED, 13},{0x0023,  6},
149{0x0FF4, 13},{0x0035,  7},{0x0FF5, 13},{0x0038,  7},
150{0x0FF8, 13},{0x0039,  7},{0x0FF9, 13},{0x0042,  7},
151{0x1FF4, 14},{0x0043,  7},{0x1FF5, 14},{0x0079,  8},
152{0x1FF8, 14},{0x0082,  8},{0x3DFD, 15},{0x0083,  8},
153{0x00F4,  9},{0x00F5,  9},{0x00F8,  9},{0x00F9,  9},
154{0x0102,  9},{0x0103,  9},{0x01F5, 10},{0x01F8, 10},
155{0x01F9, 10},{0x0202, 10},{0x0203, 10},{0x03F9, 11},
156{0x0402, 11},{0x0403, 11},{0x07ED, 12},{0x07F4, 12},
157{0x07F5, 12},{0x07F8, 12},{0x07F9, 12},{0x0802, 12},
158{0x0803, 12},{0x1002, 13},{0x1003, 13},{0x1FF9, 14},
159{0x2002, 14},{0x2003, 14},{0x3EFC, 15},{0x3EFD, 15},
160{0x3F7C, 15},{0x3F7D, 15},{0x0000, 4}
161};
162
163static const int8_t inter_rvlc_run[169]={
164 0,  0,  0,  0,  0,  0,  0,  0,
165 0,  0,  0,  0,  0,  0,  0,  0,
166 0,  0,  0,  1,  1,  1,  1,  1,
167 1,  1,  1,  1,  1,  2,  2,  2,
168 2,  2,  2,  2,  3,  3,  3,  3,
169 3,  3,  3,  4,  4,  4,  4,  4,
170 5,  5,  5,  5,  6,  6,  6,  6,
171 7,  7,  7,  7,  8,  8,  8,  9,
172 9,  9, 10, 10, 11, 11, 12, 12,
17313, 13, 14, 14, 15, 15, 16, 16,
17417, 17, 18, 19, 20, 21, 22, 23,
17524, 25, 26, 27, 28, 29, 30, 31,
17632, 33, 34, 35, 36, 37, 38,
177 0,  0,  0,  0,  0,  1,  1,  1,
178 1,  1,  2,  2,  2,  3,  3,  4,
179 4,  5,  5,  6,  6,  7,  7,  8,
180 8,  9,  9, 10, 10, 11, 11, 12,
18112, 13, 13, 14, 15, 16, 17, 18,
18219, 20, 21, 22, 23, 24, 25, 26,
18327, 28, 29, 30, 31, 32, 33, 34,
18435, 36, 37, 38, 39, 40, 41, 42,
18543, 44,
186};
187
188static const int8_t inter_rvlc_level[169]={
189 1,  2,  3,  4,  5,  6,  7,  8,
190 9, 10, 11, 12, 13, 14, 15, 16,
19117, 18, 19,  1,  2,  3,  4,  5,
192 6,  7,  8,  9, 10,  1,  2,  3,
193 4,  5,  6,  7,  1,  2,  3,  4,
194 5,  6,  7,  1,  2,  3,  4,  5,
195 1,  2,  3,  4,  1,  2,  3,  4,
196 1,  2,  3,  4,  1,  2,  3,  1,
197 2,  3,  1,  2,  1,  2,  1,  2,
198 1,  2,  1,  2,  1,  2,  1,  2,
199 1,  2,  1,  1,  1,  1,  1,  1,
200 1,  1,  1,  1,  1,  1,  1,  1,
201 1,  1,  1,  1,  1,  1,  1,
202 1,  2,  3,  4,  5,  1,  2,  3,
203 4,  5,  1,  2,  3,  1,  2,  1,
204 2,  1,  2,  1,  2,  1,  2,  1,
205 2,  1,  2,  1,  2,  1,  2,  1,
206 2,  1,  2,  1,  1,  1,  1,  1,
207 1,  1,  1,  1,  1,  1,  1,  1,
208 1,  1,  1,  1,  1,  1,  1,  1,
209 1,  1,  1,  1,  1,  1,  1,  1,
210 1,  1,
211};
212
213RLTable ff_rvlc_rl_inter = {
214    169,
215    103,
216    inter_rvlc,
217    inter_rvlc_run,
218    inter_rvlc_level,
219};
220
221static const uint16_t intra_rvlc[170][2]={
222{0x0006,  3},{0x0007,  3},{0x000A,  4},{0x0009,  5},
223{0x0014,  6},{0x0015,  6},{0x0034,  7},{0x0074,  8},
224{0x0075,  8},{0x00DD,  9},{0x00EC,  9},{0x01EC, 10},
225{0x01ED, 10},{0x01F4, 10},{0x03EC, 11},{0x03ED, 11},
226{0x03F4, 11},{0x077D, 12},{0x07BC, 12},{0x0FBD, 13},
227{0x0FDC, 13},{0x07BD, 12},{0x0FDD, 13},{0x1FBD, 14},
228{0x1FDC, 14},{0x1FDD, 14},{0x1FFC, 15},{0x0001,  4},
229{0x0008,  5},{0x002D,  7},{0x006C,  8},{0x006D,  8},
230{0x00DC,  9},{0x01DD, 10},{0x03DC, 11},{0x03DD, 11},
231{0x077C, 12},{0x0FBC, 13},{0x1F7D, 14},{0x1FBC, 14},
232{0x0004,  5},{0x002C,  7},{0x00BC,  9},{0x01DC, 10},
233{0x03BC, 11},{0x03BD, 11},{0x0EFD, 13},{0x0F7C, 13},
234{0x0F7D, 13},{0x1EFD, 14},{0x1F7C, 14},{0x0005,  5},
235{0x005C,  8},{0x00BD,  9},{0x037D, 11},{0x06FC, 12},
236{0x0EFC, 13},{0x1DFD, 14},{0x1EFC, 14},{0x1FFD, 15},
237{0x000C,  6},{0x005D,  8},{0x01BD, 10},{0x03FD, 12},
238{0x06FD, 12},{0x1BFD, 14},{0x000D,  6},{0x007D,  9},
239{0x02FC, 11},{0x05FC, 12},{0x1BFC, 14},{0x1DFC, 14},
240{0x001C,  7},{0x017C, 10},{0x02FD, 11},{0x05FD, 12},
241{0x2FFC, 15},{0x001D,  7},{0x017D, 10},{0x037C, 11},
242{0x0DFD, 13},{0x2FFD, 15},{0x003C,  8},{0x01BC, 10},
243{0x0BFD, 13},{0x17FD, 14},{0x003D,  8},{0x01FD, 11},
244{0x0DFC, 13},{0x37FC, 15},{0x007C,  9},{0x03FC, 12},
245{0x00FC, 10},{0x0BFC, 13},{0x00FD, 10},{0x37FD, 15},
246{0x01FC, 11},{0x07FC, 13},{0x07FD, 13},{0x0FFC, 14},
247{0x0FFD, 14},{0x17FC, 14},{0x3BFC, 15},
248{0x000B,  4},{0x0078,  8},{0x03F5, 11},{0x0FEC, 13},
249{0x1FEC, 14},{0x0012,  5},{0x00ED,  9},{0x07DC, 12},
250{0x1FED, 14},{0x3BFD, 15},{0x0013,  5},{0x03F8, 11},
251{0x3DFC, 15},{0x0018,  6},{0x07DD, 12},{0x0019,  6},
252{0x07EC, 12},{0x0022,  6},{0x0FED, 13},{0x0023,  6},
253{0x0FF4, 13},{0x0035,  7},{0x0FF5, 13},{0x0038,  7},
254{0x0FF8, 13},{0x0039,  7},{0x0FF9, 13},{0x0042,  7},
255{0x1FF4, 14},{0x0043,  7},{0x1FF5, 14},{0x0079,  8},
256{0x1FF8, 14},{0x0082,  8},{0x3DFD, 15},{0x0083,  8},
257{0x00F4,  9},{0x00F5,  9},{0x00F8,  9},{0x00F9,  9},
258{0x0102,  9},{0x0103,  9},{0x01F5, 10},{0x01F8, 10},
259{0x01F9, 10},{0x0202, 10},{0x0203, 10},{0x03F9, 11},
260{0x0402, 11},{0x0403, 11},{0x07ED, 12},{0x07F4, 12},
261{0x07F5, 12},{0x07F8, 12},{0x07F9, 12},{0x0802, 12},
262{0x0803, 12},{0x1002, 13},{0x1003, 13},{0x1FF9, 14},
263{0x2002, 14},{0x2003, 14},{0x3EFC, 15},{0x3EFD, 15},
264{0x3F7C, 15},{0x3F7D, 15},{0x0000,  4}
265};
266
267static const int8_t intra_rvlc_run[169]={
268 0,  0,  0,  0,  0,  0,  0,  0,
269 0,  0,  0,  0,  0,  0,  0,  0,
270 0,  0,  0,  0,  0,  0,  0,  0,
271 0,  0,  0,  1,  1,  1,  1,  1,
272 1,  1,  1,  1,  1,  1,  1,  1,
273 2,  2,  2,  2,  2,  2,  2,  2,
274 2,  2,  2,  3,  3,  3,  3,  3,
275 3,  3,  3,  3,  4,  4,  4,  4,
276 4,  4,  5,  5,  5,  5,  5,  5,
277 6,  6,  6,  6,  6,  7,  7,  7,
278 7,  7,  8,  8,  8,  8,  9,  9,
279 9,  9, 10, 10, 11, 11, 12, 12,
28013, 14, 15, 16, 17, 18, 19,
281 0,  0,  0,  0,  0,  1,  1,  1,
282 1,  1,  2,  2,  2,  3,  3,  4,
283 4,  5,  5,  6,  6,  7,  7,  8,
284 8,  9,  9, 10, 10, 11, 11, 12,
28512, 13, 13, 14, 15, 16, 17, 18,
28619, 20, 21, 22, 23, 24, 25, 26,
28727, 28, 29, 30, 31, 32, 33, 34,
28835, 36, 37, 38, 39, 40, 41, 42,
28943, 44,
290};
291
292static const int8_t intra_rvlc_level[169]={
293 1,  2,  3,  4,  5,  6,  7,  8,
294 9, 10, 11, 12, 13, 14, 15, 16,
29517, 18, 19, 20, 21, 22, 23, 24,
29625, 26, 27,  1,  2,  3,  4,  5,
297 6,  7,  8,  9, 10, 11, 12, 13,
298 1,  2,  3,  4,  5,  6,  7,  8,
299 9, 10, 11,  1,  2,  3,  4,  5,
300 6,  7,  8,  9,  1,  2,  3,  4,
301 5,  6,  1,  2,  3,  4,  5,  6,
302 1,  2,  3,  4,  5,  1,  2,  3,
303 4,  5,  1,  2,  3,  4,  1,  2,
304 3,  4,  1,  2,  1,  2,  1,  2,
305 1,  1,  1,  1,  1,  1,  1,
306 1,  2,  3,  4,  5,  1,  2,  3,
307 4,  5,  1,  2,  3,  1,  2,  1,
308 2,  1,  2,  1,  2,  1,  2,  1,
309 2,  1,  2,  1,  2,  1,  2,  1,
310 2,  1,  2,  1,  1,  1,  1,  1,
311 1,  1,  1,  1,  1,  1,  1,  1,
312 1,  1,  1,  1,  1,  1,  1,  1,
313 1,  1,  1,  1,  1,  1,  1,  1,
314 1,  1,
315};
316
317RLTable ff_rvlc_rl_intra = {
318    169,
319    103,
320    intra_rvlc,
321    intra_rvlc_run,
322    intra_rvlc_level,
323};
324
325const uint8_t ff_sprite_trajectory_lens[15] = {
326    2,  3,  3,  3,  3,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12,
327};
328
329const uint8_t ff_mb_type_b_tab[4][2] = {
330 {1, 1}, {1, 2}, {1, 3}, {1, 4},
331};
332
333/* these matrixes will be permuted for the idct */
334const int16_t ff_mpeg4_default_intra_matrix[64] = {
335  8, 17, 18, 19, 21, 23, 25, 27,
336 17, 18, 19, 21, 23, 25, 27, 28,
337 20, 21, 22, 23, 24, 26, 28, 30,
338 21, 22, 23, 24, 26, 28, 30, 32,
339 22, 23, 24, 26, 28, 30, 32, 35,
340 23, 24, 26, 28, 30, 32, 35, 38,
341 25, 26, 28, 30, 32, 35, 38, 41,
342 27, 28, 30, 32, 35, 38, 41, 45,
343};
344
345const int16_t ff_mpeg4_default_non_intra_matrix[64] = {
346 16, 17, 18, 19, 20, 21, 22, 23,
347 17, 18, 19, 20, 21, 22, 23, 24,
348 18, 19, 20, 21, 22, 23, 24, 25,
349 19, 20, 21, 22, 23, 24, 26, 27,
350 20, 21, 22, 23, 25, 26, 27, 28,
351 21, 22, 23, 24, 26, 27, 28, 30,
352 22, 23, 24, 26, 27, 28, 30, 31,
353 23, 24, 25, 27, 28, 30, 31, 33,
354};
355
356const uint8_t ff_mpeg4_y_dc_scale_table[32]={
357//  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
358    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
359};
360const uint8_t ff_mpeg4_c_dc_scale_table[32]={
361//  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
362    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
363};
364
365const uint16_t ff_mpeg4_resync_prefix[8]={
366    0x7F00, 0x7E00, 0x7C00, 0x7800, 0x7000, 0x6000, 0x4000, 0x0000
367};
368
369const uint8_t ff_mpeg4_dc_threshold[8]={
370    99, 13, 15, 17, 19, 21, 23, 0
371};
372
373/* Note these are different in studio mode */
374const uint8_t ff_mpeg4_studio_dc_luma[19][2] = {
375    {  2,  4 }, { 10,  4 }, {  3,  4 }, {  1,  5 }, {  0,  6 }, { 11,  7 },
376    { 12,  8 }, { 13,  9 }, { 14, 10 }, { 15, 11 }, { 16, 12 }, { 17, 13 },
377    { 18, 13 }, {  7,  3 }, {  6,  3 }, {  8,  3 }, {  5,  3 }, {  9,  3 },
378    {  4,  3 },
379};
380
381const uint8_t ff_mpeg4_studio_dc_chroma[19][2] = {
382    {  0,  4 }, {  8,  4 }, {  1,  4 }, {  9,  5 }, { 10,  6 }, { 11,  7 },
383    { 12,  8 }, { 13,  9 }, { 14, 10 }, { 15, 11 }, { 16, 12 }, { 17, 13 },
384    { 18, 13 }, {  5,  3 }, {  4,  3 }, {  6,  3 }, {  3,  3 }, {  7,  3 },
385    {  2,  3 },
386};
387
388const uint8_t ff_mpeg4_studio_intra[12][24][2] = {
389    {
390        {  0, -6 }, { 21, 13 }, {  6, 13 }, {  5, 12 }, {  4, 11 }, { 20, 10 },
391        {  3,  9 }, { 12,  8 }, { 11,  7 }, { 10,  7 }, {  2,  7 }, { 19,  6 },
392        { 18,  6 }, {  9,  6 }, {  8,  5 }, { 17,  4 }, {  7,  4 }, {  1,  4 },
393        {  0,  4 }, { 16,  3 }, { 15,  3 }, { 14,  3 }, { 13,  2 },
394    },
395    {
396        {  0, -6 }, { 21,  8 }, { 20,  8 }, { 19,  7 }, { 18,  5 }, { 17,  4 },
397        { 16,  3 }, { 15,  2 }, { 14,  1 },
398    },
399    {
400        {  0, -6 }, {  0,-15 }, { 20, 15 }, { 19, 14 }, {  6, 14 }, {  5, 14 },
401        { 21, 13 }, { 18, 13 }, { 17, 11 }, { 12, 10 }, {  4,  9 }, { 16,  8 },
402        {  3,  7 }, { 15,  6 }, { 11,  6 }, {  2,  5 }, {  1,  5 }, { 10,  4 },
403        {  9,  4 }, { 14,  3 }, {  8,  3 }, {  7,  3 }, {  0,  3 }, { 13,  2 },
404    },
405    {
406        {  0, -6 }, { 20, 13 }, { 12, 13 }, {  6, 13 }, {  5, 13 }, { 21, 12 },
407        { 19, 12 }, { 18, 10 }, {  4,  9 }, { 11,  8 }, { 17,  7 }, { 16,  6 },
408        {  3,  6 }, { 15,  5 }, { 10,  5 }, {  2,  5 }, {  0,  5 }, {  9,  4 },
409        {  8,  4 }, {  1,  4 }, {  7,  3 }, { 14,  2 }, { 13,  2 },
410    },
411    {
412        {  0, -6 }, {  0,-15 }, { 12, 15 }, {  6, 14 }, { 21, 13 }, { 20, 13 },
413        {  5, 13 }, { 19, 11 }, { 11, 10 }, {  4,  9 }, { 18,  8 }, { 10,  7 },
414        {  3,  7 }, {  0,  7 }, { 17,  6 }, { 16,  6 }, {  9,  6 }, {  2,  5 },
415        {  8,  4 }, {  1,  4 }, { 15,  3 }, {  7,  3 }, { 14,  2 }, { 13,  2 },
416    },
417    {
418        {  0, -6 }, {  0,-15 }, { 20, 15 }, { 12, 14 }, { 11, 13 }, {  6, 13 },
419        {  5, 13 }, { 21, 12 }, {  4, 12 }, { 19, 11 }, { 10, 11 }, {  3, 10 },
420        {  0, 10 }, {  9,  8 }, { 18,  7 }, {  8,  7 }, {  2,  7 }, { 17,  6 },
421        {  7,  5 }, {  1,  5 }, { 16,  3 }, { 15,  2 }, { 14,  2 }, { 13,  2 },
422    },
423    {
424        {  0, -6 }, {  0,-15 }, { 12, 15 }, { 11, 14 }, {  6, 14 }, {  5, 14 },
425        { 21, 12 }, { 20, 12 }, { 10, 12 }, {  4, 11 }, {  0, 11 }, {  9, 10 },
426        {  3, 10 }, { 19,  8 }, {  8,  8 }, {  2,  8 }, { 18,  6 }, {  7,  6 },
427        {  1,  4 }, { 17,  3 }, { 14,  3 }, { 13,  3 }, { 16,  2 }, { 15,  2 },
428    },
429    {
430        {  0, -6 }, { 12, 12 }, {  6, 12 }, { 21, 11 }, { 11, 11 }, {  5, 11 },
431        { 20, 10 }, { 10, 10 }, {  9,  9 }, {  0,  9 }, {  8,  8 }, {  2,  8 },
432        { 19,  7 }, {  7,  7 }, {  4,  7 }, {  3,  7 }, { 18,  5 }, {  1,  5 },
433        { 14,  4 }, { 13,  4 }, { 17,  2 }, { 16,  2 }, { 15,  2 },
434    },
435    {
436        {  0, -6 }, { 12, 13 }, {  6, 13 }, { 21, 12 }, { 11, 12 }, {  5, 12 },
437        { 20, 11 }, {  3, 11 }, { 10, 10 }, {  9, 10 }, {  2, 10 }, {  0, 10 },
438        {  8,  9 }, {  7,  8 }, {  4,  8 }, { 19,  6 }, {  1,  6 }, { 13,  4 },
439        { 18,  3 }, { 15,  3 }, { 14,  3 }, { 17,  2 }, { 16,  2 },
440    },
441    {
442        {  0, -6 }, { 12, 12 }, { 11, 12 }, {  6, 12 }, {  0, 12 }, { 21, 10 },
443        { 10, 10 }, {  5, 10 }, { 20,  8 }, {  9,  8 }, {  2,  8 }, {  8,  7 },
444        {  7,  7 }, {  4,  6 }, {  3,  6 }, {  1,  6 }, { 13,  5 }, { 19,  4 },
445        { 14,  4 }, { 16,  3 }, { 15,  3 }, { 18,  2 }, { 17,  2 },
446    },
447    {
448        {  0, -6 }, { 12, 13 }, {  6, 13 }, {  5, 13 }, {  0, 13 }, {  4, 11 },
449        { 11, 10 }, { 21,  9 }, { 10,  9 }, {  9,  9 }, {  8,  8 }, {  2,  8 },
450        {  7,  7 }, {  1,  7 }, { 20,  6 }, { 14,  5 }, { 13,  5 }, { 15,  4 },
451        {  3,  4 }, { 17,  3 }, { 16,  3 }, { 19,  2 }, { 18,  2 },
452    },
453    {
454        {  0, -6 }, {  6, 11 }, {  5, 11 }, { 12, 10 }, { 11, 10 }, {  0, 10 },
455        { 21,  9 }, { 10,  9 }, {  4,  9 }, {  3,  9 }, {  9,  8 }, {  8,  6 },
456        {  2,  6 }, {  7,  5 }, {  1,  5 }, { 18,  4 }, { 17,  4 }, { 16,  4 },
457        { 15,  4 }, { 19,  3 }, { 14,  3 }, { 13,  3 }, { 20,  2 },
458    },
459};
460
461#endif /* AVCODEC_MPEG4DATA_H */
462