2 * Copyright (C) 2010 David Conrad
3 * Copyright (C) 2010 Ronald S. Bultje
5 * This file is part of FFmpeg.
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 * VP8 compatible video decoder
27 #ifndef AVCODEC_VP8DATA_H
28 #define AVCODEC_VP8DATA_H
33 static const uint8_t vp7_pred4x4_mode[] =
35 [DC_PRED8x8] = DC_PRED,
36 [VERT_PRED8x8] = TM_VP8_PRED,
37 [HOR_PRED8x8] = TM_VP8_PRED,
38 [PLANE_PRED8x8] = TM_VP8_PRED,
41 static const uint8_t vp8_pred4x4_mode[] = {
42 [DC_PRED8x8] = DC_PRED,
43 [VERT_PRED8x8] = VERT_PRED,
44 [HOR_PRED8x8] = HOR_PRED,
45 [PLANE_PRED8x8] = TM_VP8_PRED,
48 static const int8_t vp8_pred16x16_tree_intra[4][2] = {
49 { -MODE_I4x4, 1 }, // '0'
51 { -DC_PRED8x8, -VERT_PRED8x8 }, // '100', '101'
52 { -HOR_PRED8x8, -PLANE_PRED8x8 }, // '110', '111'
55 static const int8_t vp8_pred16x16_tree_inter[4][2] = {
56 { -DC_PRED8x8, 1 }, // '0'
58 { -VERT_PRED8x8, -HOR_PRED8x8 }, // '100', '101'
59 { -PLANE_PRED8x8, -MODE_I4x4 }, // '110', '111'
69 #define VP7_MV_PRED_COUNT 12
70 static const VP7MVPred vp7_mv_pred[VP7_MV_PRED_COUNT] = {
85 static const int vp7_mode_contexts[31][4] = {
90 { 14, 123, 106, 238 },
91 { 20, 140, 109, 240 },
92 { 13, 155, 103, 238 },
96 { 45, 139, 148, 236 },
97 { 50, 117, 144, 235 },
98 { 57, 128, 164, 238 },
99 { 69, 139, 171, 239 },
100 { 74, 154, 179, 238 },
101 { 112, 165, 186, 242 },
102 { 98, 143, 185, 245 },
103 { 105, 153, 190, 250 },
104 { 124, 167, 192, 245 },
105 { 131, 186, 203, 246 },
106 { 59, 184, 222, 224 },
107 { 148, 215, 214, 213 },
108 { 137, 211, 210, 219 },
109 { 190, 227, 128, 228 },
110 { 183, 228, 128, 228 },
111 { 194, 234, 128, 228 },
112 { 202, 236, 128, 228 },
113 { 205, 240, 128, 228 },
114 { 205, 244, 128, 228 },
115 { 225, 246, 128, 228 },
116 { 233, 251, 128, 228 },
119 static const int vp8_mode_contexts[6][4] = {
124 { 159, 134, 128, 34 },
125 { 234, 188, 128, 28 },
128 static const uint8_t vp8_mbsplits[5][16] = {
129 { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1 },
130 { 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1 },
131 { 0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3 },
132 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
133 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
136 static const uint8_t vp8_mbfirstidx[4][16] = {
140 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }
143 static const uint8_t vp8_mbsplit_count[4] = {
146 static const uint8_t vp8_mbsplit_prob[3] = {
150 static const uint8_t vp7_submv_prob[3] = { 180, 162, 25 };
152 static const uint8_t vp8_submv_prob[5][3] = {
160 static const uint8_t vp8_pred16x16_prob_intra[4] = {
163 static const uint8_t vp8_pred16x16_prob_inter[4] = {
167 static const int8_t vp8_pred4x4_tree[9][2] = {
168 { -DC_PRED, 1 }, // '0'
169 { -TM_VP8_PRED, 2 }, // '10'
170 { -VERT_PRED, 3 }, // '110'
172 { -HOR_PRED, 5 }, // '11100'
173 { -DIAG_DOWN_RIGHT_PRED, -VERT_RIGHT_PRED }, // '111010', '111011'
174 { -DIAG_DOWN_LEFT_PRED, 7 }, // '11110'
175 { -VERT_LEFT_PRED, 8 }, // '111110'
176 { -HOR_DOWN_PRED, -HOR_UP_PRED }, // '1111110', '1111111'
179 static const int8_t vp8_pred8x8c_tree[3][2] = {
180 { -DC_PRED8x8, 1 }, // '0'
181 { -VERT_PRED8x8, 2 }, // '10
182 { -HOR_PRED8x8, -PLANE_PRED8x8 }, // '110', '111'
185 static const uint8_t vp8_pred8x8c_prob_intra[3] = {
188 static const uint8_t vp8_pred8x8c_prob_inter[3] = {
191 static const uint8_t vp8_pred4x4_prob_inter[9] = {
192 120, 90, 79, 133, 87, 85, 80, 111, 151
195 static const uint8_t vp8_pred4x4_prob_intra[10][10][9] = {
197 { 39, 53, 200, 87, 26, 21, 43, 232, 171 },
198 { 56, 34, 51, 104, 114, 102, 29, 93, 77 },
199 { 88, 88, 147, 150, 42, 46, 45, 196, 205 },
200 { 107, 54, 32, 26, 51, 1, 81, 43, 31 },
201 { 39, 28, 85, 171, 58, 165, 90, 98, 64 },
202 { 34, 22, 116, 206, 23, 34, 43, 166, 73 },
203 { 34, 19, 21, 102, 132, 188, 16, 76, 124 },
204 { 68, 25, 106, 22, 64, 171, 36, 225, 114 },
205 { 62, 18, 78, 95, 85, 57, 50, 48, 51 },
206 { 43, 97, 183, 117, 85, 38, 35, 179, 61 },
209 { 112, 113, 77, 85, 179, 255, 38, 120, 114 },
210 { 40, 42, 1, 196, 245, 209, 10, 25, 109 },
211 { 193, 101, 35, 159, 215, 111, 89, 46, 111 },
212 { 100, 80, 8, 43, 154, 1, 51, 26, 71 },
213 { 88, 43, 29, 140, 166, 213, 37, 43, 154 },
214 { 61, 63, 30, 155, 67, 45, 68, 1, 209 },
215 { 41, 40, 5, 102, 211, 183, 4, 1, 221 },
216 { 142, 78, 78, 16, 255, 128, 34, 197, 171 },
217 { 51, 50, 17, 168, 209, 192, 23, 25, 82 },
218 { 60, 148, 31, 172, 219, 228, 21, 18, 111 },
221 { 175, 69, 143, 80, 85, 82, 72, 155, 103 },
222 { 56, 58, 10, 171, 218, 189, 17, 13, 152 },
223 { 231, 120, 48, 89, 115, 113, 120, 152, 112 },
224 { 144, 71, 10, 38, 171, 213, 144, 34, 26 },
225 { 114, 26, 17, 163, 44, 195, 21, 10, 173 },
226 { 121, 24, 80, 195, 26, 62, 44, 64, 85 },
227 { 63, 20, 8, 114, 114, 208, 12, 9, 226 },
228 { 170, 46, 55, 19, 136, 160, 33, 206, 71 },
229 { 81, 40, 11, 96, 182, 84, 29, 16, 36 },
230 { 152, 179, 64, 126, 170, 118, 46, 70, 95 },
233 { 75, 79, 123, 47, 51, 128, 81, 171, 1 },
234 { 57, 17, 5, 71, 102, 57, 53, 41, 49 },
235 { 125, 98, 42, 88, 104, 85, 117, 175, 82 },
236 { 115, 21, 2, 10, 102, 255, 166, 23, 6 },
237 { 38, 33, 13, 121, 57, 73, 26, 1, 85 },
238 { 41, 10, 67, 138, 77, 110, 90, 47, 114 },
239 { 57, 18, 10, 102, 102, 213, 34, 20, 43 },
240 { 101, 29, 16, 10, 85, 128, 101, 196, 26 },
241 { 117, 20, 15, 36, 163, 128, 68, 1, 26 },
242 { 95, 84, 53, 89, 128, 100, 113, 101, 45 },
245 { 63, 59, 90, 180, 59, 166, 93, 73, 154 },
246 { 40, 40, 21, 116, 143, 209, 34, 39, 175 },
247 { 138, 31, 36, 171, 27, 166, 38, 44, 229 },
248 { 57, 46, 22, 24, 128, 1, 54, 17, 37 },
249 { 47, 15, 16, 183, 34, 223, 49, 45, 183 },
250 { 46, 17, 33, 183, 6, 98, 15, 32, 183 },
251 { 40, 3, 9, 115, 51, 192, 18, 6, 223 },
252 { 65, 32, 73, 115, 28, 128, 23, 128, 205 },
253 { 87, 37, 9, 115, 59, 77, 64, 21, 47 },
254 { 67, 87, 58, 169, 82, 115, 26, 59, 179 },
257 { 54, 57, 112, 184, 5, 41, 38, 166, 213 },
258 { 30, 34, 26, 133, 152, 116, 10, 32, 134 },
259 { 104, 55, 44, 218, 9, 54, 53, 130, 226 },
260 { 75, 32, 12, 51, 192, 255, 160, 43, 51 },
261 { 39, 19, 53, 221, 26, 114, 32, 73, 255 },
262 { 31, 9, 65, 234, 2, 15, 1, 118, 73 },
263 { 56, 21, 23, 111, 59, 205, 45, 37, 192 },
264 { 88, 31, 35, 67, 102, 85, 55, 186, 85 },
265 { 55, 38, 70, 124, 73, 102, 1, 34, 98 },
266 { 64, 90, 70, 205, 40, 41, 23, 26, 57 },
269 { 86, 40, 64, 135, 148, 224, 45, 183, 128 },
270 { 22, 26, 17, 131, 240, 154, 14, 1, 209 },
271 { 164, 50, 31, 137, 154, 133, 25, 35, 218 },
272 { 83, 12, 13, 54, 192, 255, 68, 47, 28 },
273 { 45, 16, 21, 91, 64, 222, 7, 1, 197 },
274 { 56, 21, 39, 155, 60, 138, 23, 102, 213 },
275 { 18, 11, 7, 63, 144, 171, 4, 4, 246 },
276 { 85, 26, 85, 85, 128, 128, 32, 146, 171 },
277 { 35, 27, 10, 146, 174, 171, 12, 26, 128 },
278 { 51, 103, 44, 131, 131, 123, 31, 6, 158 },
281 { 68, 45, 128, 34, 1, 47, 11, 245, 171 },
282 { 62, 17, 19, 70, 146, 85, 55, 62, 70 },
283 { 102, 61, 71, 37, 34, 53, 31, 243, 192 },
284 { 75, 15, 9, 9, 64, 255, 184, 119, 16 },
285 { 37, 43, 37, 154, 100, 163, 85, 160, 1 },
286 { 63, 9, 92, 136, 28, 64, 32, 201, 85 },
287 { 56, 8, 17, 132, 137, 255, 55, 116, 128 },
288 { 86, 6, 28, 5, 64, 255, 25, 248, 1 },
289 { 58, 15, 20, 82, 135, 57, 26, 121, 40 },
290 { 69, 60, 71, 38, 73, 119, 28, 222, 37 },
293 { 101, 75, 128, 139, 118, 146, 116, 128, 85 },
294 { 56, 41, 15, 176, 236, 85, 37, 9, 62 },
295 { 190, 80, 35, 99, 180, 80, 126, 54, 45 },
296 { 146, 36, 19, 30, 171, 255, 97, 27, 20 },
297 { 71, 30, 17, 119, 118, 255, 17, 18, 138 },
298 { 101, 38, 60, 138, 55, 70, 43, 26, 142 },
299 { 32, 41, 20, 117, 151, 142, 20, 21, 163 },
300 { 138, 45, 61, 62, 219, 1, 81, 188, 64 },
301 { 112, 19, 12, 61, 195, 128, 48, 4, 24 },
302 { 85, 126, 47, 87, 176, 51, 41, 20, 32 },
305 { 66, 102, 167, 99, 74, 62, 40, 234, 128 },
306 { 41, 53, 9, 178, 241, 141, 26, 8, 107 },
307 { 134, 183, 89, 137, 98, 101, 106, 165, 148 },
308 { 104, 79, 12, 27, 217, 255, 87, 17, 7 },
309 { 74, 43, 26, 146, 73, 166, 49, 23, 157 },
310 { 65, 38, 105, 160, 51, 52, 31, 115, 128 },
311 { 47, 41, 14, 110, 182, 183, 21, 17, 194 },
312 { 87, 68, 71, 44, 114, 51, 15, 186, 23 },
313 { 66, 45, 25, 102, 197, 189, 23, 18, 22 },
314 { 72, 187, 100, 130, 157, 111, 32, 75, 80 },
318 static const int8_t vp8_segmentid_tree[][2] = {
320 { -0, -1 }, // '00', '01'
321 { -2, -3 }, // '10', '11'
324 static const uint8_t vp8_coeff_band[16] = {
325 0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7
328 /* Inverse of vp8_coeff_band: mappings of bands to coefficient indexes.
329 * Each list is -1-terminated. */
330 static const int8_t vp8_coeff_band_indexes[8][10] = {
337 { 4, 7, 8, 9, 10, 11, 12, 13, 14, -1 },
341 static const uint8_t vp8_dct_cat1_prob[] = {
344 static const uint8_t vp8_dct_cat2_prob[] = {
347 static const uint8_t vp8_dct_cat3_prob[] = {
350 static const uint8_t vp8_dct_cat4_prob[] = {
351 176, 155, 140, 135, 0
353 static const uint8_t vp8_dct_cat5_prob[] = {
354 180, 157, 141, 134, 130, 0
356 static const uint8_t vp8_dct_cat6_prob[] = {
357 254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 0
360 // only used for cat3 and above; cat 1 and 2 are referenced directly
361 const uint8_t *const ff_vp8_dct_cat_prob[] = {
368 static const uint8_t vp8_token_default_probs[4][8][3][NUM_DCT_TOKENS - 1] = {
371 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
372 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
373 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
376 { 253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128 },
377 { 189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128 },
378 { 106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128 },
381 { 1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128 },
382 { 181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128 },
383 { 78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128 },
386 { 1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128 },
387 { 184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128 },
388 { 77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128 },
391 { 1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128 },
392 { 170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128 },
393 { 37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128 },
396 { 1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128 },
397 { 207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128 },
398 { 102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128 },
401 { 1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128 },
402 { 177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128 },
403 { 80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128 },
406 { 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
407 { 246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
408 { 255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
413 { 198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62 },
414 { 131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1 },
415 { 68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128 },
418 { 1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128 },
419 { 184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128 },
420 { 81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128 },
423 { 1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128 },
424 { 99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128 },
425 { 23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128 },
428 { 1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128 },
429 { 109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128 },
430 { 44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128 },
433 { 1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128 },
434 { 94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128 },
435 { 22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128 },
438 { 1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128 },
439 { 124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128 },
440 { 35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128 },
443 { 1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128 },
444 { 121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128 },
445 { 45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128 },
448 { 1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128 },
449 { 203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
450 { 137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128 },
455 { 253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128 },
456 { 175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128 },
457 { 73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128 },
460 { 1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128 },
461 { 239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128 },
462 { 155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128 },
465 { 1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128 },
466 { 201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128 },
467 { 69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128 },
470 { 1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128 },
471 { 223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128 },
472 { 141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
475 { 1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
476 { 190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128 },
477 { 149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
480 { 1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
481 { 247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
482 { 240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
485 { 1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128 },
486 { 213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128 },
487 { 55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
490 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
491 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
492 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
497 { 202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255 },
498 { 126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128 },
499 { 61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128 },
502 { 1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128 },
503 { 166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128 },
504 { 39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128 },
507 { 1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128 },
508 { 124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128 },
509 { 24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128 },
512 { 1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128 },
513 { 149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128 },
514 { 28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128 },
517 { 1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128 },
518 { 123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128 },
519 { 20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128 },
522 { 1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128 },
523 { 168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128 },
524 { 47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128 },
527 { 1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128 },
528 { 141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128 },
529 { 42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128 },
532 { 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
533 { 244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
534 { 238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
539 static const uint8_t vp8_token_update_probs[4][8][3][NUM_DCT_TOKENS - 1] = {
542 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
543 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
544 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
547 { 176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
548 { 223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255 },
549 { 249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
552 { 255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255 },
553 { 234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
554 { 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
557 { 255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
558 { 239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
559 { 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
562 { 255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
563 { 251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
564 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
567 { 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
568 { 251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
569 { 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
572 { 255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255 },
573 { 250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255 },
574 { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
577 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
578 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
579 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
584 { 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
585 { 225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255 },
586 { 234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255 },
589 { 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
590 { 223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
591 { 238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255 },
594 { 255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
595 { 249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
596 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
599 { 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
600 { 247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
601 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
604 { 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
605 { 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
606 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
609 { 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
610 { 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
611 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
614 { 255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
615 { 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
616 { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
619 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
620 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
621 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
626 { 186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255 },
627 { 234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255 },
628 { 251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255 },
631 { 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
632 { 236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
633 { 251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255 },
636 { 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
637 { 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
638 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
641 { 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
642 { 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
643 { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
646 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
647 { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
648 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
651 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
652 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
653 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
656 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
657 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
658 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
661 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
662 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
663 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
668 { 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
669 { 250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255 },
670 { 248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255 },
673 { 255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
674 { 246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
675 { 252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255 },
678 { 255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255 },
679 { 248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
680 { 253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255 },
683 { 255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
684 { 245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
685 { 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
688 { 255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
689 { 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
690 { 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
693 { 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
694 { 249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
695 { 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
698 { 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
699 { 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
700 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
703 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
704 { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
705 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
710 // fixme: copied from h264data.h
711 static const uint8_t zigzag_scan[16] = {
712 0 + 0 * 4, 1 + 0 * 4, 0 + 1 * 4, 0 + 2 * 4,
713 1 + 1 * 4, 2 + 0 * 4, 3 + 0 * 4, 2 + 1 * 4,
714 1 + 2 * 4, 0 + 3 * 4, 1 + 3 * 4, 2 + 2 * 4,
715 3 + 1 * 4, 3 + 2 * 4, 2 + 3 * 4, 3 + 3 * 4,
718 static const uint8_t vp8_dc_qlookup[VP8_MAX_QUANT + 1] = {
719 4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, 15, 16, 17, 17,
720 18, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 25, 25, 26, 27, 28,
721 29, 30, 31, 32, 33, 34, 35, 36, 37, 37, 38, 39, 40, 41, 42, 43,
722 44, 45, 46, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
723 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
724 75, 76, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
725 91, 93, 95, 96, 98, 100, 101, 102, 104, 106, 108, 110, 112, 114, 116, 118,
726 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 143, 145, 148, 151, 154, 157,
729 static const uint16_t vp8_ac_qlookup[VP8_MAX_QUANT + 1] = {
730 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
731 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
732 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
733 52, 53, 54, 55, 56, 57, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76,
734 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108,
735 110, 112, 114, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143, 146, 149, 152,
736 155, 158, 161, 164, 167, 170, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209,
737 213, 217, 221, 225, 229, 234, 239, 245, 249, 254, 259, 264, 269, 274, 279, 284,
740 static const uint8_t vp8_mv_update_prob[2][19] = {
743 253, 253, 254, 254, 254, 254, 254,
744 254, 254, 254, 254, 254, 250, 250, 252, /* VP8 only: */ 254, 254 },
747 245, 253, 254, 254, 254, 254, 254,
748 254, 254, 254, 254, 254, 251, 251, 254, /* VP8 only: */ 254, 254 }
751 static const uint8_t vp7_mv_default_prob[2][17] = {
754 225, 146, 172, 147, 214, 39, 156,
755 247, 210, 135, 68, 138, 220, 239, 246 },
758 204, 170, 119, 235, 140, 230, 228,
759 244, 184, 201, 44, 173, 221, 239, 253 }
762 static const uint8_t vp8_mv_default_prob[2][19] = {
765 225, 146, 172, 147, 214, 39, 156,
766 128, 129, 132, 75, 145, 178, 206, 239, 254, 254 },
769 204, 170, 119, 235, 140, 230, 228,
770 128, 130, 130, 74, 148, 180, 203, 236, 254, 254 }
773 static const uint8_t vp7_feature_value_size[2][4] = {
778 static const int8_t vp7_feature_index_tree[4][2] =
781 { -0, -1 }, // '00', '01'
782 { -2, -3 }, // '10', '11'
785 static const uint16_t vp7_ydc_qlookup[] = {
786 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, 15, 16,
787 17, 18, 19, 20, 21, 22, 23, 23, 24, 25, 26, 27, 28, 29, 30, 31,
788 32, 33, 33, 34, 35, 36, 36, 37, 38, 39, 39, 40, 41, 41, 42, 43,
789 43, 44, 45, 45, 46, 47, 48, 48, 49, 50, 51, 52, 53, 53, 54, 56,
790 57, 58, 59, 60, 62, 63, 65, 66, 68, 70, 72, 74, 76, 79, 81, 84,
791 87, 90, 93, 96, 100, 104, 108, 112, 116, 121, 126, 131, 136, 142, 148, 154,
792 160, 167, 174, 182, 189, 198, 206, 215, 224, 234, 244, 254, 265, 277, 288, 301,
793 313, 327, 340, 355, 370, 385, 401, 417, 434, 452, 470, 489, 509, 529, 550, 572,
796 static const uint16_t vp7_yac_qlookup[] = {
797 4, 4, 5, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17,
798 19, 20, 22, 23, 25, 26, 28, 29, 31, 32, 34, 35, 37, 38, 40, 41,
799 42, 44, 45, 46, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, 61,
800 62, 63, 64, 65, 67, 68, 69, 70, 72, 73, 75, 76, 78, 80, 82, 84,
801 86, 88, 91, 93, 96, 99, 102, 105, 109, 112, 116, 121, 125, 130, 135, 140,
802 146, 152, 158, 165, 172, 180, 188, 196, 205, 214, 224, 234, 245, 256, 268, 281,
803 294, 308, 322, 337, 353, 369, 386, 404, 423, 443, 463, 484, 506, 529, 553, 578,
804 604, 631, 659, 688, 718, 749, 781, 814, 849, 885, 922, 960, 1000, 1041, 1083, 1127,
807 static const uint16_t vp7_y2dc_qlookup[] = {
808 7, 9, 11, 13, 15, 17, 19, 21, 23, 26, 28, 30, 33, 35, 37, 39,
809 42, 44, 46, 48, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 70, 72,
810 74, 75, 77, 78, 80, 81, 83, 84, 85, 87, 88, 89, 90, 92, 93, 94,
811 95, 96, 97, 99, 100, 101, 102, 104, 105, 106, 108, 109, 111, 113, 114, 116,
812 118, 120, 123, 125, 128, 131, 134, 137, 140, 144, 148, 152, 156, 161, 166, 171,
813 176, 182, 188, 195, 202, 209, 217, 225, 234, 243, 253, 263, 274, 285, 297, 309,
814 322, 336, 350, 365, 381, 397, 414, 432, 450, 470, 490, 511, 533, 556, 579, 604,
815 630, 656, 684, 713, 742, 773, 805, 838, 873, 908, 945, 983, 1022, 1063, 1105, 1148,
818 static const uint16_t vp7_y2ac_qlookup[] = {
819 7, 9, 11, 13, 16, 18, 21, 24, 26, 29, 32, 35, 38, 41, 43, 46,
820 49, 52, 55, 58, 61, 64, 66, 69, 72, 74, 77, 79, 82, 84, 86, 88,
821 91, 93, 95, 97, 98, 100, 102, 104, 105, 107, 109, 110, 112, 113, 115, 116,
822 117, 119, 120, 122, 123, 125, 127, 128, 130, 132, 134, 136, 138, 141, 143, 146,
823 149, 152, 155, 158, 162, 166, 171, 175, 180, 185, 191, 197, 204, 210, 218, 226,
824 234, 243, 252, 262, 273, 284, 295, 308, 321, 335, 350, 365, 381, 398, 416, 435,
825 455, 476, 497, 520, 544, 569, 595, 622, 650, 680, 711, 743, 776, 811, 848, 885,
826 925, 965, 1008, 1052, 1097, 1144, 1193, 1244, 1297, 1351, 1407, 1466, 1526, 1588, 1652, 1719,
829 #endif /* AVCODEC_VP8DATA_H */