comparison mpeg4data.h @ 1132:61c89e8ffa88 libavcodec

rvlc decoding support
author michaelni
date Wed, 12 Mar 2003 23:09:18 +0000
parents 1e39f273ecd6
children fea03d2c4946
comparison
equal deleted inserted replaced
1131:2575d16b62d7 1132:61c89e8ffa88
119 intra_vlc, 119 intra_vlc,
120 intra_run, 120 intra_run,
121 intra_level, 121 intra_level,
122 }; 122 };
123 123
124 static const uint16_t inter_rvlc[170][2]={ //note this is identical to the intra rvlc except that its reordered
125 {0x0006, 3},{0x0001, 4},{0x0004, 5},{0x001C, 7},
126 {0x003C, 8},{0x003D, 8},{0x007C, 9},{0x00FC, 10},
127 {0x00FD, 10},{0x01FC, 11},{0x01FD, 11},{0x03FC, 12},
128 {0x07FC, 13},{0x07FD, 13},{0x0BFC, 13},{0x0BFD, 13},
129 {0x0FFC, 14},{0x0FFD, 14},{0x1FFC, 15},{0x0007, 3},
130 {0x000C, 6},{0x005C, 8},{0x007D, 9},{0x017C, 10},
131 {0x02FC, 11},{0x03FD, 12},{0x0DFC, 13},{0x17FC, 14},
132 {0x17FD, 14},{0x000A, 4},{0x001D, 7},{0x00BC, 9},
133 {0x02FD, 11},{0x05FC, 12},{0x1BFC, 14},{0x1BFD, 14},
134 {0x0005, 5},{0x005D, 8},{0x017D, 10},{0x05FD, 12},
135 {0x0DFD, 13},{0x1DFC, 14},{0x1FFD, 15},{0x0008, 5},
136 {0x006C, 8},{0x037C, 11},{0x0EFC, 13},{0x2FFC, 15},
137 {0x0009, 5},{0x00BD, 9},{0x037D, 11},{0x0EFD, 13},
138 {0x000D, 6},{0x01BC, 10},{0x06FC, 12},{0x1DFD, 14},
139 {0x0014, 6},{0x01BD, 10},{0x06FD, 12},{0x2FFD, 15},
140 {0x0015, 6},{0x01DC, 10},{0x0F7C, 13},{0x002C, 7},
141 {0x01DD, 10},{0x1EFC, 14},{0x002D, 7},{0x03BC, 11},
142 {0x0034, 7},{0x077C, 12},{0x006D, 8},{0x0F7D, 13},
143 {0x0074, 8},{0x1EFD, 14},{0x0075, 8},{0x1F7C, 14},
144 {0x00DC, 9},{0x1F7D, 14},{0x00DD, 9},{0x1FBC, 14},
145 {0x00EC, 9},{0x37FC, 15},{0x01EC, 10},{0x01ED, 10},
146 {0x01F4, 10},{0x03BD, 11},{0x03DC, 11},{0x03DD, 11},
147 {0x03EC, 11},{0x03ED, 11},{0x03F4, 11},{0x077D, 12},
148 {0x07BC, 12},{0x07BD, 12},{0x0FBC, 13},{0x0FBD, 13},
149 {0x0FDC, 13},{0x0FDD, 13},{0x1FBD, 14},{0x1FDC, 14},
150 {0x1FDD, 14},{0x37FD, 15},{0x3BFC, 15},
151 {0x000B, 4},{0x0078, 8},{0x03F5, 11},{0x0FEC, 13},
152 {0x1FEC, 14},{0x0012, 5},{0x00ED, 9},{0x07DC, 12},
153 {0x1FED, 14},{0x3BFD, 15},{0x0013, 5},{0x03F8, 11},
154 {0x3DFC, 15},{0x0018, 6},{0x07DD, 12},{0x0019, 6},
155 {0x07EC, 12},{0x0022, 6},{0x0FED, 13},{0x0023, 6},
156 {0x0FF4, 13},{0x0035, 7},{0x0FF5, 13},{0x0038, 7},
157 {0x0FF8, 13},{0x0039, 7},{0x0FF9, 13},{0x0042, 7},
158 {0x1FF4, 14},{0x0043, 7},{0x1FF5, 14},{0x0079, 8},
159 {0x1FF8, 14},{0x0082, 8},{0x3DFD, 15},{0x0083, 8},
160 {0x00F4, 9},{0x00F5, 9},{0x00F8, 9},{0x00F9, 9},
161 {0x0102, 9},{0x0103, 9},{0x01F5, 10},{0x01F8, 10},
162 {0x01F9, 10},{0x0202, 10},{0x0203, 10},{0x03F9, 11},
163 {0x0402, 11},{0x0403, 11},{0x07ED, 12},{0x07F4, 12},
164 {0x07F5, 12},{0x07F8, 12},{0x07F9, 12},{0x0802, 12},
165 {0x0803, 12},{0x1002, 13},{0x1003, 13},{0x1FF9, 14},
166 {0x2002, 14},{0x2003, 14},{0x3EFC, 15},{0x3EFD, 15},
167 {0x3F7C, 15},{0x3F7D, 15},{0x0000, 4}
168 };
169
170 static const uint8_t inter_rvlc_run[169]={
171 0, 0, 0, 0, 0, 0, 0, 0,
172 0, 0, 0, 0, 0, 0, 0, 0,
173 0, 0, 0, 1, 1, 1, 1, 1,
174 1, 1, 1, 1, 1, 2, 2, 2,
175 2, 2, 2, 2, 3, 3, 3, 3,
176 3, 3, 3, 4, 4, 4, 4, 4,
177 5, 5, 5, 5, 6, 6, 6, 6,
178 7, 7, 7, 7, 8, 8, 8, 9,
179 9, 9, 10, 10, 11, 11, 12, 12,
180 13, 13, 14, 14, 15, 15, 16, 16,
181 17, 17, 18, 19, 20, 21, 22, 23,
182 24, 25, 26, 27, 28, 29, 30, 31,
183 32, 33, 34, 35, 36, 37, 38,
184 0, 0, 0, 0, 0, 1, 1, 1,
185 1, 1, 2, 2, 2, 3, 3, 4,
186 4, 5, 5, 6, 6, 7, 7, 8,
187 8, 9, 9, 10, 10, 11, 11, 12,
188 12, 13, 13, 14, 15, 16, 17, 18,
189 19, 20, 21, 22, 23, 24, 25, 26,
190 27, 28, 29, 30, 31, 32, 33, 34,
191 35, 36, 37, 38, 39, 40, 41, 42,
192 43, 44,
193 };
194
195 static const uint8_t inter_rvlc_level[169]={
196 1, 2, 3, 4, 5, 6, 7, 8,
197 9, 10, 11, 12, 13, 14, 15, 16,
198 17, 18, 19, 1, 2, 3, 4, 5,
199 6, 7, 8, 9, 10, 1, 2, 3,
200 4, 5, 6, 7, 1, 2, 3, 4,
201 5, 6, 7, 1, 2, 3, 4, 5,
202 1, 2, 3, 4, 1, 2, 3, 4,
203 1, 2, 3, 4, 1, 2, 3, 1,
204 2, 3, 1, 2, 1, 2, 1, 2,
205 1, 2, 1, 2, 1, 2, 1, 2,
206 1, 2, 1, 1, 1, 1, 1, 1,
207 1, 1, 1, 1, 1, 1, 1, 1,
208 1, 1, 1, 1, 1, 1, 1,
209 1, 2, 3, 4, 5, 1, 2, 3,
210 4, 5, 1, 2, 3, 1, 2, 1,
211 2, 1, 2, 1, 2, 1, 2, 1,
212 2, 1, 2, 1, 2, 1, 2, 1,
213 2, 1, 2, 1, 1, 1, 1, 1,
214 1, 1, 1, 1, 1, 1, 1, 1,
215 1, 1, 1, 1, 1, 1, 1, 1,
216 1, 1, 1, 1, 1, 1, 1, 1,
217 1, 1,
218 };
219
220 static RLTable rvlc_rl_inter = {
221 169,
222 103,
223 inter_rvlc,
224 inter_rvlc_run,
225 inter_rvlc_level,
226 };
227
228 static const uint16_t intra_rvlc[170][2]={
229 {0x0006, 3},{0x0007, 3},{0x000A, 4},{0x0009, 5},
230 {0x0014, 6},{0x0015, 6},{0x0034, 7},{0x0074, 8},
231 {0x0075, 8},{0x00DD, 9},{0x00EC, 9},{0x01EC, 10},
232 {0x01ED, 10},{0x01F4, 10},{0x03EC, 11},{0x03ED, 11},
233 {0x03F4, 11},{0x077D, 12},{0x07BC, 12},{0x0FBD, 13},
234 {0x0FDC, 13},{0x07BD, 12},{0x0FDD, 13},{0x1FBD, 14},
235 {0x1FDC, 14},{0x1FDD, 14},{0x1FFC, 15},{0x0001, 4},
236 {0x0008, 5},{0x002D, 7},{0x006C, 8},{0x006D, 8},
237 {0x00DC, 9},{0x01DD, 10},{0x03DC, 11},{0x03DD, 11},
238 {0x077C, 12},{0x0FBC, 13},{0x1F7D, 14},{0x1FBC, 14},
239 {0x0004, 5},{0x002C, 7},{0x00BC, 9},{0x01DC, 10},
240 {0x03BC, 11},{0x03BD, 11},{0x0EFD, 13},{0x0F7C, 13},
241 {0x0F7D, 13},{0x1EFD, 14},{0x1F7C, 14},{0x0005, 5},
242 {0x005C, 8},{0x00BD, 9},{0x037D, 11},{0x06FC, 12},
243 {0x0EFC, 13},{0x1DFD, 14},{0x1EFC, 14},{0x1FFD, 15},
244 {0x000C, 6},{0x005D, 8},{0x01BD, 10},{0x03FD, 12},
245 {0x06FD, 12},{0x1BFD, 14},{0x000D, 6},{0x007D, 9},
246 {0x02FC, 11},{0x05FC, 12},{0x1BFC, 14},{0x1DFC, 14},
247 {0x001C, 7},{0x017C, 10},{0x02FD, 11},{0x05FD, 12},
248 {0x2FFC, 15},{0x001D, 7},{0x017D, 10},{0x037C, 11},
249 {0x0DFD, 13},{0x2FFD, 15},{0x003C, 8},{0x01BC, 10},
250 {0x0BFD, 13},{0x17FD, 14},{0x003D, 8},{0x01FD, 11},
251 {0x0DFC, 13},{0x37FC, 15},{0x007C, 9},{0x03FC, 12},
252 {0x00FC, 10},{0x0BFC, 13},{0x00FD, 10},{0x37FD, 15},
253 {0x01FC, 11},{0x07FC, 13},{0x07FD, 13},{0x0FFC, 14},
254 {0x0FFD, 14},{0x17FC, 14},{0x3BFC, 15},
255 {0x000B, 4},{0x0078, 8},{0x03F5, 11},{0x0FEC, 13},
256 {0x1FEC, 14},{0x0012, 5},{0x00ED, 9},{0x07DC, 12},
257 {0x1FED, 14},{0x3BFD, 15},{0x0013, 5},{0x03F8, 11},
258 {0x3DFC, 15},{0x0018, 6},{0x07DD, 12},{0x0019, 6},
259 {0x07EC, 12},{0x0022, 6},{0x0FED, 13},{0x0023, 6},
260 {0x0FF4, 13},{0x0035, 7},{0x0FF5, 13},{0x0038, 7},
261 {0x0FF8, 13},{0x0039, 7},{0x0FF9, 13},{0x0042, 7},
262 {0x1FF4, 14},{0x0043, 7},{0x1FF5, 14},{0x0079, 8},
263 {0x1FF8, 14},{0x0082, 8},{0x3DFD, 15},{0x0083, 8},
264 {0x00F4, 9},{0x00F5, 9},{0x00F8, 9},{0x00F9, 9},
265 {0x0102, 9},{0x0103, 9},{0x01F5, 10},{0x01F8, 10},
266 {0x01F9, 10},{0x0202, 10},{0x0203, 10},{0x03F9, 11},
267 {0x0402, 11},{0x0403, 11},{0x07ED, 12},{0x07F4, 12},
268 {0x07F5, 12},{0x07F8, 12},{0x07F9, 12},{0x0802, 12},
269 {0x0803, 12},{0x1002, 13},{0x1003, 13},{0x1FF9, 14},
270 {0x2002, 14},{0x2003, 14},{0x3EFC, 15},{0x3EFD, 15},
271 {0x3F7C, 15},{0x3F7D, 15},{0x0000, 4}
272 };
273
274 static const uint8_t intra_rvlc_run[169]={
275 0, 0, 0, 0, 0, 0, 0, 0,
276 0, 0, 0, 0, 0, 0, 0, 0,
277 0, 0, 0, 0, 0, 0, 0, 0,
278 0, 0, 0, 1, 1, 1, 1, 1,
279 1, 1, 1, 1, 1, 1, 1, 1,
280 2, 2, 2, 2, 2, 2, 2, 2,
281 2, 2, 2, 3, 3, 3, 3, 3,
282 3, 3, 3, 3, 4, 4, 4, 4,
283 4, 4, 5, 5, 5, 5, 5, 5,
284 6, 6, 6, 6, 6, 7, 7, 7,
285 7, 7, 8, 8, 8, 8, 9, 9,
286 9, 9, 10, 10, 11, 11, 12, 12,
287 13, 14, 15, 16, 17, 18, 19,
288 0, 0, 0, 0, 0, 1, 1, 1,
289 1, 1, 2, 2, 2, 3, 3, 4,
290 4, 5, 5, 6, 6, 7, 7, 8,
291 8, 9, 9, 10, 10, 11, 11, 12,
292 12, 13, 13, 14, 15, 16, 17, 18,
293 19, 20, 21, 22, 23, 24, 25, 26,
294 27, 28, 29, 30, 31, 32, 33, 34,
295 35, 36, 37, 38, 39, 40, 41, 42,
296 43, 44,
297 };
298
299 static const uint8_t intra_rvlc_level[169]={
300 1, 2, 3, 4, 5, 6, 7, 8,
301 9, 10, 11, 12, 13, 14, 15, 16,
302 17, 18, 19, 20, 21, 22, 23, 24,
303 25, 26, 27, 1, 2, 3, 4, 5,
304 6, 7, 8, 9, 10, 11, 12, 13,
305 1, 2, 3, 4, 5, 6, 7, 8,
306 9, 10, 11, 1, 2, 3, 4, 5,
307 6, 7, 8, 9, 1, 2, 3, 4,
308 5, 6, 1, 2, 3, 4, 5, 6,
309 1, 2, 3, 4, 5, 1, 2, 3,
310 4, 5, 1, 2, 3, 4, 1, 2,
311 3, 4, 1, 2, 1, 2, 1, 2,
312 1, 1, 1, 1, 1, 1, 1,
313 1, 2, 3, 4, 5, 1, 2, 3,
314 4, 5, 1, 2, 3, 1, 2, 1,
315 2, 1, 2, 1, 2, 1, 2, 1,
316 2, 1, 2, 1, 2, 1, 2, 1,
317 2, 1, 2, 1, 1, 1, 1, 1,
318 1, 1, 1, 1, 1, 1, 1, 1,
319 1, 1, 1, 1, 1, 1, 1, 1,
320 1, 1, 1, 1, 1, 1, 1, 1,
321 1, 1,
322 };
323
324 static RLTable rvlc_rl_intra = {
325 169,
326 103,
327 intra_rvlc,
328 intra_rvlc_run,
329 intra_rvlc_level,
330 };
331
124 static const uint16_t sprite_trajectory_tab[15][2] = { 332 static const uint16_t sprite_trajectory_tab[15][2] = {
125 {0x00, 2}, {0x02, 3}, {0x03, 3}, {0x04, 3}, {0x05, 3}, {0x06, 3}, 333 {0x00, 2}, {0x02, 3}, {0x03, 3}, {0x04, 3}, {0x05, 3}, {0x06, 3},
126 {0x0E, 4}, {0x1E, 5}, {0x3E, 6}, {0x7E, 7}, {0xFE, 8}, 334 {0x0E, 4}, {0x1E, 5}, {0x3E, 6}, {0x7E, 7}, {0xFE, 8},
127 {0x1FE, 9},{0x3FE, 10},{0x7FE, 11},{0xFFE, 12}, 335 {0x1FE, 9},{0x3FE, 10},{0x7FE, 11},{0xFFE, 12},
128 }; 336 };