• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 */
34 const 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 
40 const 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 
46 const 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 
76 const 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 
92 const 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 
108 RLTable 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. */
117 static 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 
163 static 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,
173 13, 13, 14, 14, 15, 15, 16, 16,
174 17, 17, 18, 19, 20, 21, 22, 23,
175 24, 25, 26, 27, 28, 29, 30, 31,
176 32, 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,
181 12, 13, 13, 14, 15, 16, 17, 18,
182 19, 20, 21, 22, 23, 24, 25, 26,
183 27, 28, 29, 30, 31, 32, 33, 34,
184 35, 36, 37, 38, 39, 40, 41, 42,
185 43, 44,
186 };
187 
188 static 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,
191 17, 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 
213 RLTable ff_rvlc_rl_inter = {
214     169,
215     103,
216     inter_rvlc,
217     inter_rvlc_run,
218     inter_rvlc_level,
219 };
220 
221 static 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 
267 static 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,
280 13, 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,
285 12, 13, 13, 14, 15, 16, 17, 18,
286 19, 20, 21, 22, 23, 24, 25, 26,
287 27, 28, 29, 30, 31, 32, 33, 34,
288 35, 36, 37, 38, 39, 40, 41, 42,
289 43, 44,
290 };
291 
292 static 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,
295 17, 18, 19, 20, 21, 22, 23, 24,
296 25, 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 
317 RLTable ff_rvlc_rl_intra = {
318     169,
319     103,
320     intra_rvlc,
321     intra_rvlc_run,
322     intra_rvlc_level,
323 };
324 
325 const 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 
329 const 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 */
334 const 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 
345 const 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 
356 const 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 };
360 const 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 
365 const uint16_t ff_mpeg4_resync_prefix[8]={
366     0x7F00, 0x7E00, 0x7C00, 0x7800, 0x7000, 0x6000, 0x4000, 0x0000
367 };
368 
369 const 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 */
374 const 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 
381 const 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 
388 const 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