Imported Debian version 2.4.3~trusty1
[deb_ffmpeg.git] / ffmpeg / libavcodec / vp8data.h
CommitLineData
2ba45a60
DM
1/*
2 * Copyright (C) 2010 David Conrad
3 * Copyright (C) 2010 Ronald S. Bultje
4 *
5 * This file is part of FFmpeg.
6 *
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.
11 *
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.
16 *
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
20 */
21
22/**
23 * @file
24 * VP8 compatible video decoder
25 */
26
27#ifndef AVCODEC_VP8DATA_H
28#define AVCODEC_VP8DATA_H
29
30#include "vp8.h"
31#include "h264pred.h"
32
33static const uint8_t vp7_pred4x4_mode[] = {
34 [DC_PRED8x8] = DC_PRED,
35 [VERT_PRED8x8] = TM_VP8_PRED,
36 [HOR_PRED8x8] = TM_VP8_PRED,
37 [PLANE_PRED8x8] = TM_VP8_PRED,
38};
39
40static const uint8_t vp8_pred4x4_mode[] = {
41 [DC_PRED8x8] = DC_PRED,
42 [VERT_PRED8x8] = VERT_PRED,
43 [HOR_PRED8x8] = HOR_PRED,
44 [PLANE_PRED8x8] = TM_VP8_PRED,
45};
46
47static const int8_t vp8_pred16x16_tree_intra[4][2] = {
48 { -MODE_I4x4, 1 }, // '0'
49 { 2, 3 },
50 { -DC_PRED8x8, -VERT_PRED8x8 }, // '100', '101'
51 { -HOR_PRED8x8, -PLANE_PRED8x8 }, // '110', '111'
52};
53
54static const int8_t vp8_pred16x16_tree_inter[4][2] = {
55 { -DC_PRED8x8, 1 }, // '0'
56 { 2, 3 },
57 { -VERT_PRED8x8, -HOR_PRED8x8 }, // '100', '101'
58 { -PLANE_PRED8x8, -MODE_I4x4 }, // '110', '111'
59};
60
61typedef struct VP7MVPred {
62 int8_t yoffset;
63 int8_t xoffset;
64 uint8_t subblock;
65 uint8_t score;
66} VP7MVPred;
67
68#define VP7_MV_PRED_COUNT 12
69static const VP7MVPred vp7_mv_pred[VP7_MV_PRED_COUNT] = {
70 { -1, 0, 12, 8 },
71 { 0, -1, 3, 8 },
72 { -1, -1, 15, 2 },
73 { -1, 1, 12, 2 },
74 { -2, 0, 12, 2 },
75 { 0, -2, 3, 2 },
76 { -1, -2, 15, 1 },
77 { -2, -1, 15, 1 },
78 { -2, 1, 12, 1 },
79 { -1, 2, 12, 1 },
80 { -2, -2, 15, 1 },
81 { -2, 2, 12, 1 },
82};
83
84static const int vp7_mode_contexts[31][4] = {
85 { 3, 3, 1, 246 },
86 { 7, 89, 66, 239 },
87 { 10, 90, 78, 238 },
88 { 14, 118, 95, 241 },
89 { 14, 123, 106, 238 },
90 { 20, 140, 109, 240 },
91 { 13, 155, 103, 238 },
92 { 21, 158, 99, 240 },
93 { 27, 82, 108, 232 },
94 { 19, 99, 123, 217 },
95 { 45, 139, 148, 236 },
96 { 50, 117, 144, 235 },
97 { 57, 128, 164, 238 },
98 { 69, 139, 171, 239 },
99 { 74, 154, 179, 238 },
100 { 112, 165, 186, 242 },
101 { 98, 143, 185, 245 },
102 { 105, 153, 190, 250 },
103 { 124, 167, 192, 245 },
104 { 131, 186, 203, 246 },
105 { 59, 184, 222, 224 },
106 { 148, 215, 214, 213 },
107 { 137, 211, 210, 219 },
108 { 190, 227, 128, 228 },
109 { 183, 228, 128, 228 },
110 { 194, 234, 128, 228 },
111 { 202, 236, 128, 228 },
112 { 205, 240, 128, 228 },
113 { 205, 244, 128, 228 },
114 { 225, 246, 128, 228 },
115 { 233, 251, 128, 228 },
116};
117
118static const int vp8_mode_contexts[6][4] = {
119 { 7, 1, 1, 143 },
120 { 14, 18, 14, 107 },
121 { 135, 64, 57, 68 },
122 { 60, 56, 128, 65 },
123 { 159, 134, 128, 34 },
124 { 234, 188, 128, 28 },
125};
126
127static const uint8_t vp8_mbsplits[5][16] = {
128 { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1 },
129 { 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1 },
130 { 0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3 },
131 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
132 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
133};
134
135static const uint8_t vp8_mbfirstidx[4][16] = {
136 { 0, 8 },
137 { 0, 2 },
138 { 0, 2, 8, 10 },
139 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }
140};
141
142static const uint8_t vp8_mbsplit_count[4] = {
143 2, 2, 4, 16
144};
145static const uint8_t vp8_mbsplit_prob[3] = {
146 110, 111, 150
147};
148
149static const uint8_t vp7_submv_prob[3] = {
150 180, 162, 25
151};
152
153static const uint8_t vp8_submv_prob[5][3] = {
154 { 147, 136, 18 },
155 { 106, 145, 1 },
156 { 179, 121, 1 },
157 { 223, 1, 34 },
158 { 208, 1, 1 }
159};
160
161static const uint8_t vp8_pred16x16_prob_intra[4] = {
162 145, 156, 163, 128
163};
164static const uint8_t vp8_pred16x16_prob_inter[4] = {
165 112, 86, 140, 37
166};
167
168static const int8_t vp8_pred4x4_tree[9][2] = {
169 { -DC_PRED, 1 }, // '0'
170 { -TM_VP8_PRED, 2 }, // '10'
171 { -VERT_PRED, 3 }, // '110'
172 { 4, 6 },
173 { -HOR_PRED, 5 }, // '11100'
174 { -DIAG_DOWN_RIGHT_PRED, -VERT_RIGHT_PRED }, // '111010', '111011'
175 { -DIAG_DOWN_LEFT_PRED, 7 }, // '11110'
176 { -VERT_LEFT_PRED, 8 }, // '111110'
177 { -HOR_DOWN_PRED, -HOR_UP_PRED }, // '1111110', '1111111'
178};
179
180static const int8_t vp8_pred8x8c_tree[3][2] = {
181 { -DC_PRED8x8, 1 }, // '0'
182 { -VERT_PRED8x8, 2 }, // '10
183 { -HOR_PRED8x8, -PLANE_PRED8x8 }, // '110', '111'
184};
185
186static const uint8_t vp8_pred8x8c_prob_intra[3] = {
187 142, 114, 183
188};
189static const uint8_t vp8_pred8x8c_prob_inter[3] = {
190 162, 101, 204
191};
192static const uint8_t vp8_pred4x4_prob_inter[9] = {
193 120, 90, 79, 133, 87, 85, 80, 111, 151
194};
195
196static const uint8_t vp8_pred4x4_prob_intra[10][10][9] = {
197 {
198 { 39, 53, 200, 87, 26, 21, 43, 232, 171 },
199 { 56, 34, 51, 104, 114, 102, 29, 93, 77 },
200 { 88, 88, 147, 150, 42, 46, 45, 196, 205 },
201 { 107, 54, 32, 26, 51, 1, 81, 43, 31 },
202 { 39, 28, 85, 171, 58, 165, 90, 98, 64 },
203 { 34, 22, 116, 206, 23, 34, 43, 166, 73 },
204 { 34, 19, 21, 102, 132, 188, 16, 76, 124 },
205 { 68, 25, 106, 22, 64, 171, 36, 225, 114 },
206 { 62, 18, 78, 95, 85, 57, 50, 48, 51 },
207 { 43, 97, 183, 117, 85, 38, 35, 179, 61 },
208 },
209 {
210 { 112, 113, 77, 85, 179, 255, 38, 120, 114 },
211 { 40, 42, 1, 196, 245, 209, 10, 25, 109 },
212 { 193, 101, 35, 159, 215, 111, 89, 46, 111 },
213 { 100, 80, 8, 43, 154, 1, 51, 26, 71 },
214 { 88, 43, 29, 140, 166, 213, 37, 43, 154 },
215 { 61, 63, 30, 155, 67, 45, 68, 1, 209 },
216 { 41, 40, 5, 102, 211, 183, 4, 1, 221 },
217 { 142, 78, 78, 16, 255, 128, 34, 197, 171 },
218 { 51, 50, 17, 168, 209, 192, 23, 25, 82 },
219 { 60, 148, 31, 172, 219, 228, 21, 18, 111 },
220 },
221 {
222 { 175, 69, 143, 80, 85, 82, 72, 155, 103 },
223 { 56, 58, 10, 171, 218, 189, 17, 13, 152 },
224 { 231, 120, 48, 89, 115, 113, 120, 152, 112 },
225 { 144, 71, 10, 38, 171, 213, 144, 34, 26 },
226 { 114, 26, 17, 163, 44, 195, 21, 10, 173 },
227 { 121, 24, 80, 195, 26, 62, 44, 64, 85 },
228 { 63, 20, 8, 114, 114, 208, 12, 9, 226 },
229 { 170, 46, 55, 19, 136, 160, 33, 206, 71 },
230 { 81, 40, 11, 96, 182, 84, 29, 16, 36 },
231 { 152, 179, 64, 126, 170, 118, 46, 70, 95 },
232 },
233 {
234 { 75, 79, 123, 47, 51, 128, 81, 171, 1 },
235 { 57, 17, 5, 71, 102, 57, 53, 41, 49 },
236 { 125, 98, 42, 88, 104, 85, 117, 175, 82 },
237 { 115, 21, 2, 10, 102, 255, 166, 23, 6 },
238 { 38, 33, 13, 121, 57, 73, 26, 1, 85 },
239 { 41, 10, 67, 138, 77, 110, 90, 47, 114 },
240 { 57, 18, 10, 102, 102, 213, 34, 20, 43 },
241 { 101, 29, 16, 10, 85, 128, 101, 196, 26 },
242 { 117, 20, 15, 36, 163, 128, 68, 1, 26 },
243 { 95, 84, 53, 89, 128, 100, 113, 101, 45 },
244 },
245 {
246 { 63, 59, 90, 180, 59, 166, 93, 73, 154 },
247 { 40, 40, 21, 116, 143, 209, 34, 39, 175 },
248 { 138, 31, 36, 171, 27, 166, 38, 44, 229 },
249 { 57, 46, 22, 24, 128, 1, 54, 17, 37 },
250 { 47, 15, 16, 183, 34, 223, 49, 45, 183 },
251 { 46, 17, 33, 183, 6, 98, 15, 32, 183 },
252 { 40, 3, 9, 115, 51, 192, 18, 6, 223 },
253 { 65, 32, 73, 115, 28, 128, 23, 128, 205 },
254 { 87, 37, 9, 115, 59, 77, 64, 21, 47 },
255 { 67, 87, 58, 169, 82, 115, 26, 59, 179 },
256 },
257 {
258 { 54, 57, 112, 184, 5, 41, 38, 166, 213 },
259 { 30, 34, 26, 133, 152, 116, 10, 32, 134 },
260 { 104, 55, 44, 218, 9, 54, 53, 130, 226 },
261 { 75, 32, 12, 51, 192, 255, 160, 43, 51 },
262 { 39, 19, 53, 221, 26, 114, 32, 73, 255 },
263 { 31, 9, 65, 234, 2, 15, 1, 118, 73 },
264 { 56, 21, 23, 111, 59, 205, 45, 37, 192 },
265 { 88, 31, 35, 67, 102, 85, 55, 186, 85 },
266 { 55, 38, 70, 124, 73, 102, 1, 34, 98 },
267 { 64, 90, 70, 205, 40, 41, 23, 26, 57 },
268 },
269 {
270 { 86, 40, 64, 135, 148, 224, 45, 183, 128 },
271 { 22, 26, 17, 131, 240, 154, 14, 1, 209 },
272 { 164, 50, 31, 137, 154, 133, 25, 35, 218 },
273 { 83, 12, 13, 54, 192, 255, 68, 47, 28 },
274 { 45, 16, 21, 91, 64, 222, 7, 1, 197 },
275 { 56, 21, 39, 155, 60, 138, 23, 102, 213 },
276 { 18, 11, 7, 63, 144, 171, 4, 4, 246 },
277 { 85, 26, 85, 85, 128, 128, 32, 146, 171 },
278 { 35, 27, 10, 146, 174, 171, 12, 26, 128 },
279 { 51, 103, 44, 131, 131, 123, 31, 6, 158 },
280 },
281 {
282 { 68, 45, 128, 34, 1, 47, 11, 245, 171 },
283 { 62, 17, 19, 70, 146, 85, 55, 62, 70 },
284 { 102, 61, 71, 37, 34, 53, 31, 243, 192 },
285 { 75, 15, 9, 9, 64, 255, 184, 119, 16 },
286 { 37, 43, 37, 154, 100, 163, 85, 160, 1 },
287 { 63, 9, 92, 136, 28, 64, 32, 201, 85 },
288 { 56, 8, 17, 132, 137, 255, 55, 116, 128 },
289 { 86, 6, 28, 5, 64, 255, 25, 248, 1 },
290 { 58, 15, 20, 82, 135, 57, 26, 121, 40 },
291 { 69, 60, 71, 38, 73, 119, 28, 222, 37 },
292 },
293 {
294 { 101, 75, 128, 139, 118, 146, 116, 128, 85 },
295 { 56, 41, 15, 176, 236, 85, 37, 9, 62 },
296 { 190, 80, 35, 99, 180, 80, 126, 54, 45 },
297 { 146, 36, 19, 30, 171, 255, 97, 27, 20 },
298 { 71, 30, 17, 119, 118, 255, 17, 18, 138 },
299 { 101, 38, 60, 138, 55, 70, 43, 26, 142 },
300 { 32, 41, 20, 117, 151, 142, 20, 21, 163 },
301 { 138, 45, 61, 62, 219, 1, 81, 188, 64 },
302 { 112, 19, 12, 61, 195, 128, 48, 4, 24 },
303 { 85, 126, 47, 87, 176, 51, 41, 20, 32 },
304 },
305 {
306 { 66, 102, 167, 99, 74, 62, 40, 234, 128 },
307 { 41, 53, 9, 178, 241, 141, 26, 8, 107 },
308 { 134, 183, 89, 137, 98, 101, 106, 165, 148 },
309 { 104, 79, 12, 27, 217, 255, 87, 17, 7 },
310 { 74, 43, 26, 146, 73, 166, 49, 23, 157 },
311 { 65, 38, 105, 160, 51, 52, 31, 115, 128 },
312 { 47, 41, 14, 110, 182, 183, 21, 17, 194 },
313 { 87, 68, 71, 44, 114, 51, 15, 186, 23 },
314 { 66, 45, 25, 102, 197, 189, 23, 18, 22 },
315 { 72, 187, 100, 130, 157, 111, 32, 75, 80 },
316 },
317};
318
319static const int8_t vp8_segmentid_tree[][2] = {
320 { 1, 2 },
321 { -0, -1 }, // '00', '01'
322 { -2, -3 }, // '10', '11'
323};
324
325static const uint8_t vp8_coeff_band[16] = {
326 0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7
327};
328
329/* Inverse of vp8_coeff_band: mappings of bands to coefficient indexes.
330 * Each list is -1-terminated. */
331static const int8_t vp8_coeff_band_indexes[8][10] = {
332 { 0, -1 },
333 { 1, -1 },
334 { 2, -1 },
335 { 3, -1 },
336 { 5, -1 },
337 { 6, -1 },
338 { 4, 7, 8, 9, 10, 11, 12, 13, 14, -1 },
339 { 15, -1 }
340};
341
342static const uint8_t vp8_dct_cat1_prob[] = {
343 159, 0
344};
345static const uint8_t vp8_dct_cat2_prob[] = {
346 165, 145, 0
347};
348static const uint8_t vp8_dct_cat3_prob[] = {
349 173, 148, 140, 0
350};
351static const uint8_t vp8_dct_cat4_prob[] = {
352 176, 155, 140, 135, 0
353};
354static const uint8_t vp8_dct_cat5_prob[] = {
355 180, 157, 141, 134, 130, 0
356};
357static const uint8_t vp8_dct_cat6_prob[] = {
358 254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 0
359};
360
361// only used for cat3 and above; cat 1 and 2 are referenced directly
362const uint8_t *const ff_vp8_dct_cat_prob[] = {
363 vp8_dct_cat3_prob,
364 vp8_dct_cat4_prob,
365 vp8_dct_cat5_prob,
366 vp8_dct_cat6_prob,
367};
368
369static const uint8_t vp8_token_default_probs[4][8][3][NUM_DCT_TOKENS - 1] = {
370 {
371 {
372 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
373 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
374 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
375 },
376 {
377 { 253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128 },
378 { 189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128 },
379 { 106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128 },
380 },
381 {
382 { 1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128 },
383 { 181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128 },
384 { 78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128 },
385 },
386 {
387 { 1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128 },
388 { 184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128 },
389 { 77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128 },
390 },
391 {
392 { 1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128 },
393 { 170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128 },
394 { 37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128 },
395 },
396 {
397 { 1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128 },
398 { 207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128 },
399 { 102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128 },
400 },
401 {
402 { 1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128 },
403 { 177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128 },
404 { 80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128 },
405 },
406 {
407 { 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
408 { 246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
409 { 255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
410 },
411 },
412 {
413 {
414 { 198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62 },
415 { 131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1 },
416 { 68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128 },
417 },
418 {
419 { 1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128 },
420 { 184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128 },
421 { 81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128 },
422 },
423 {
424 { 1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128 },
425 { 99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128 },
426 { 23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128 },
427 },
428 {
429 { 1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128 },
430 { 109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128 },
431 { 44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128 },
432 },
433 {
434 { 1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128 },
435 { 94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128 },
436 { 22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128 },
437 },
438 {
439 { 1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128 },
440 { 124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128 },
441 { 35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128 },
442 },
443 {
444 { 1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128 },
445 { 121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128 },
446 { 45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128 },
447 },
448 {
449 { 1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128 },
450 { 203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
451 { 137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128 },
452 },
453 },
454 {
455 {
456 { 253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128 },
457 { 175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128 },
458 { 73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128 },
459 },
460 {
461 { 1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128 },
462 { 239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128 },
463 { 155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128 },
464 },
465 {
466 { 1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128 },
467 { 201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128 },
468 { 69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128 },
469 },
470 {
471 { 1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128 },
472 { 223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128 },
473 { 141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
474 },
475 {
476 { 1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
477 { 190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128 },
478 { 149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
479 },
480 {
481 { 1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
482 { 247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
483 { 240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
484 },
485 {
486 { 1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128 },
487 { 213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128 },
488 { 55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
489 },
490 {
491 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
492 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
493 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
494 },
495 },
496 {
497 {
498 { 202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255 },
499 { 126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128 },
500 { 61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128 },
501 },
502 {
503 { 1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128 },
504 { 166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128 },
505 { 39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128 },
506 },
507 {
508 { 1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128 },
509 { 124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128 },
510 { 24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128 },
511 },
512 {
513 { 1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128 },
514 { 149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128 },
515 { 28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128 },
516 },
517 {
518 { 1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128 },
519 { 123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128 },
520 { 20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128 },
521 },
522 {
523 { 1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128 },
524 { 168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128 },
525 { 47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128 },
526 },
527 {
528 { 1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128 },
529 { 141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128 },
530 { 42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128 },
531 },
532 {
533 { 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
534 { 244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
535 { 238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
536 },
537 },
538};
539
540static const uint8_t vp8_token_update_probs[4][8][3][NUM_DCT_TOKENS - 1] = {
541 {
542 {
543 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
544 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
545 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
546 },
547 {
548 { 176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
549 { 223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255 },
550 { 249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
551 },
552 {
553 { 255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255 },
554 { 234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
555 { 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
556 },
557 {
558 { 255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
559 { 239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
560 { 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
561 },
562 {
563 { 255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
564 { 251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
565 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
566 },
567 {
568 { 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
569 { 251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
570 { 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
571 },
572 {
573 { 255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255 },
574 { 250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255 },
575 { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
576 },
577 {
578 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
579 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
580 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
581 },
582 },
583 {
584 {
585 { 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
586 { 225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255 },
587 { 234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255 },
588 },
589 {
590 { 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
591 { 223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
592 { 238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255 },
593 },
594 {
595 { 255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
596 { 249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
597 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
598 },
599 {
600 { 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
601 { 247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
602 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
603 },
604 {
605 { 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
606 { 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
607 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
608 },
609 {
610 { 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
611 { 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
612 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
613 },
614 {
615 { 255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
616 { 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
617 { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
618 },
619 {
620 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
621 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
622 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
623 },
624 },
625 {
626 {
627 { 186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255 },
628 { 234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255 },
629 { 251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255 },
630 },
631 {
632 { 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
633 { 236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
634 { 251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255 },
635 },
636 {
637 { 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
638 { 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
639 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
640 },
641 {
642 { 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
643 { 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
644 { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
645 },
646 {
647 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
648 { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
649 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
650 },
651 {
652 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
653 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
654 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
655 },
656 {
657 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
658 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
659 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
660 },
661 {
662 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
663 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
664 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
665 },
666 },
667 {
668 {
669 { 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
670 { 250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255 },
671 { 248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255 },
672 },
673 {
674 { 255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
675 { 246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
676 { 252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255 },
677 },
678 {
679 { 255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255 },
680 { 248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
681 { 253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255 },
682 },
683 {
684 { 255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
685 { 245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
686 { 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
687 },
688 {
689 { 255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
690 { 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
691 { 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
692 },
693 {
694 { 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
695 { 249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
696 { 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
697 },
698 {
699 { 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
700 { 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
701 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
702 },
703 {
704 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
705 { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
706 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
707 },
708 },
709};
710
711// fixme: copied from h264data.h
712static const uint8_t zigzag_scan[16]={
713 0 + 0 * 4, 1 + 0 * 4, 0 + 1 * 4, 0 + 2 * 4,
714 1 + 1 * 4, 2 + 0 * 4, 3 + 0 * 4, 2 + 1 * 4,
715 1 + 2 * 4, 0 + 3 * 4, 1 + 3 * 4, 2 + 2 * 4,
716 3 + 1 * 4, 3 + 2 * 4, 2 + 3 * 4, 3 + 3 * 4,
717};
718
719static const uint8_t vp8_dc_qlookup[VP8_MAX_QUANT + 1] = {
720 4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, 15, 16, 17, 17,
721 18, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 25, 25, 26, 27, 28,
722 29, 30, 31, 32, 33, 34, 35, 36, 37, 37, 38, 39, 40, 41, 42, 43,
723 44, 45, 46, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
724 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
725 75, 76, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
726 91, 93, 95, 96, 98, 100, 101, 102, 104, 106, 108, 110, 112, 114, 116, 118,
727 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 143, 145, 148, 151, 154, 157,
728};
729
730static const uint16_t vp8_ac_qlookup[VP8_MAX_QUANT + 1] = {
731 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
732 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
733 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
734 52, 53, 54, 55, 56, 57, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76,
735 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108,
736 110, 112, 114, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143, 146, 149, 152,
737 155, 158, 161, 164, 167, 170, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209,
738 213, 217, 221, 225, 229, 234, 239, 245, 249, 254, 259, 264, 269, 274, 279, 284,
739};
740
741static const uint8_t vp8_mv_update_prob[2][19] = {
742 { 237,
743 246,
744 253, 253, 254, 254, 254, 254, 254,
745 254, 254, 254, 254, 254, 250, 250, 252, /* VP8 only: */ 254, 254 },
746 { 231,
747 243,
748 245, 253, 254, 254, 254, 254, 254,
749 254, 254, 254, 254, 254, 251, 251, 254, /* VP8 only: */ 254, 254 }
750};
751
752static const uint8_t vp7_mv_default_prob[2][17] = {
753 { 162,
754 128,
755 225, 146, 172, 147, 214, 39, 156,
756 247, 210, 135, 68, 138, 220, 239, 246 },
757 { 164,
758 128,
759 204, 170, 119, 235, 140, 230, 228,
760 244, 184, 201, 44, 173, 221, 239, 253 }
761};
762
763static const uint8_t vp8_mv_default_prob[2][19] = {
764 { 162,
765 128,
766 225, 146, 172, 147, 214, 39, 156,
767 128, 129, 132, 75, 145, 178, 206, 239, 254, 254 },
768 { 164,
769 128,
770 204, 170, 119, 235, 140, 230, 228,
771 128, 130, 130, 74, 148, 180, 203, 236, 254, 254 }
772};
773
774static const uint8_t vp7_feature_value_size[2][4] = {
775 { 7, 6, 0, 8 },
776 { 7, 6, 0, 5 },
777};
778
779static const int8_t vp7_feature_index_tree[4][2] =
780{
781 { 1, 2 },
782 { -0, -1 }, // '00', '01'
783 { -2, -3 }, // '10', '11'
784};
785
786static const uint16_t vp7_ydc_qlookup[] = {
787 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, 15,
788 16, 17, 18, 19, 20, 21, 22, 23, 23, 24, 25, 26, 27, 28, 29,
789 30, 31, 32, 33, 33, 34, 35, 36, 36, 37, 38, 39, 39, 40, 41,
790 41, 42, 43, 43, 44, 45, 45, 46, 47, 48, 48, 49, 50, 51, 52,
791 53, 53, 54, 56, 57, 58, 59, 60, 62, 63, 65, 66, 68, 70, 72,
792 74, 76, 79, 81, 84, 87, 90, 93, 96, 100, 104, 108, 112, 116, 121,
793 126, 131, 136, 142, 148, 154, 160, 167, 174, 182, 189, 198, 206, 215, 224,
794 234, 244, 254, 265, 277, 288, 301, 313, 327, 340, 355, 370, 385, 401, 417,
795 434, 452, 470, 489, 509, 529, 550, 572,
796};
797
798static const uint16_t vp7_yac_qlookup[] = {
799 4, 4, 5, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 15,
800 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 32, 34, 35,
801 37, 38, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 53, 54,
802 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 67, 68, 69, 70,
803 72, 73, 75, 76, 78, 80, 82, 84, 86, 88, 91, 93, 96, 99,
804 102, 105, 109, 112, 116, 121, 125, 130, 135, 140, 146, 152, 158, 165,
805 172, 180, 188, 196, 205, 214, 224, 234, 245, 256, 268, 281, 294, 308,
806 322, 337, 353, 369, 386, 404, 423, 443, 463, 484, 506, 529, 553, 578,
807 604, 631, 659, 688, 718, 749, 781, 814, 849, 885, 922, 960, 1000, 1041,
808 1083, 1127,
809};
810
811static const uint16_t vp7_y2dc_qlookup[] = {
812 7, 9, 11, 13, 15, 17, 19, 21, 23, 26, 28, 30, 33, 35,
813 37, 39, 42, 44, 46, 48, 51, 53, 55, 57, 59, 61, 63, 65,
814 67, 69, 70, 72, 74, 75, 77, 78, 80, 81, 83, 84, 85, 87,
815 88, 89, 90, 92, 93, 94, 95, 96, 97, 99, 100, 101, 102, 104,
816 105, 106, 108, 109, 111, 113, 114, 116, 118, 120, 123, 125, 128, 131,
817 134, 137, 140, 144, 148, 152, 156, 161, 166, 171, 176, 182, 188, 195,
818 202, 209, 217, 225, 234, 243, 253, 263, 274, 285, 297, 309, 322, 336,
819 350, 365, 381, 397, 414, 432, 450, 470, 490, 511, 533, 556, 579, 604,
820 630, 656, 684, 713, 742, 773, 805, 838, 873, 908, 945, 983, 1022, 1063,
821 1105, 1148,
822};
823
824static const uint16_t vp7_y2ac_qlookup[] = {
825 7, 9, 11, 13, 16, 18, 21, 24, 26, 29, 32, 35,
826 38, 41, 43, 46, 49, 52, 55, 58, 61, 64, 66, 69,
827 72, 74, 77, 79, 82, 84, 86, 88, 91, 93, 95, 97,
828 98, 100, 102, 104, 105, 107, 109, 110, 112, 113, 115, 116,
829 117, 119, 120, 122, 123, 125, 127, 128, 130, 132, 134, 136,
830 138, 141, 143, 146, 149, 152, 155, 158, 162, 166, 171, 175,
831 180, 185, 191, 197, 204, 210, 218, 226, 234, 243, 252, 262,
832 273, 284, 295, 308, 321, 335, 350, 365, 381, 398, 416, 435,
833 455, 476, 497, 520, 544, 569, 595, 622, 650, 680, 711, 743,
834 776, 811, 848, 885, 925, 965, 1008, 1052, 1097, 1144, 1193, 1244,
835 1297, 1351, 1407, 1466, 1526, 1588, 1652, 1719,
836};
837
838#endif /* AVCODEC_VP8DATA_H */