FFmpeg
Loading...
Searching...
No Matches
vp8data.h
Go to the documentation of this file.
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[] = {
38};
39
40static const uint8_t vp8_pred4x4_mode[] = {
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
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 uint8_t vp8_coeff_band[16] = {
320 0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7
321};
322
323/* Inverse of vp8_coeff_band: mappings of bands to coefficient indexes.
324 * Each list is -1-terminated. */
325static const int8_t vp8_coeff_band_indexes[8][10] = {
326 { 0, -1 },
327 { 1, -1 },
328 { 2, -1 },
329 { 3, -1 },
330 { 5, -1 },
331 { 6, -1 },
332 { 4, 7, 8, 9, 10, 11, 12, 13, 14, -1 },
333 { 15, -1 }
334};
335
336static const uint8_t vp8_dct_cat1_prob[] = {
337 159, 0
338};
339static const uint8_t vp8_dct_cat2_prob[] = {
340 165, 145, 0
341};
342
343extern const uint8_t *const ff_vp8_dct_cat_prob[];
344
345static const uint8_t vp8_token_default_probs[4][8][3][NUM_DCT_TOKENS - 1] = {
346 {
347 {
348 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
349 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
350 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
351 },
352 {
353 { 253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128 },
354 { 189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128 },
355 { 106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128 },
356 },
357 {
358 { 1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128 },
359 { 181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128 },
360 { 78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128 },
361 },
362 {
363 { 1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128 },
364 { 184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128 },
365 { 77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128 },
366 },
367 {
368 { 1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128 },
369 { 170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128 },
370 { 37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128 },
371 },
372 {
373 { 1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128 },
374 { 207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128 },
375 { 102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128 },
376 },
377 {
378 { 1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128 },
379 { 177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128 },
380 { 80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128 },
381 },
382 {
383 { 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
384 { 246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
385 { 255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
386 },
387 },
388 {
389 {
390 { 198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62 },
391 { 131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1 },
392 { 68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128 },
393 },
394 {
395 { 1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128 },
396 { 184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128 },
397 { 81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128 },
398 },
399 {
400 { 1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128 },
401 { 99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128 },
402 { 23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128 },
403 },
404 {
405 { 1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128 },
406 { 109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128 },
407 { 44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128 },
408 },
409 {
410 { 1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128 },
411 { 94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128 },
412 { 22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128 },
413 },
414 {
415 { 1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128 },
416 { 124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128 },
417 { 35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128 },
418 },
419 {
420 { 1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128 },
421 { 121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128 },
422 { 45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128 },
423 },
424 {
425 { 1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128 },
426 { 203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
427 { 137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128 },
428 },
429 },
430 {
431 {
432 { 253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128 },
433 { 175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128 },
434 { 73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128 },
435 },
436 {
437 { 1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128 },
438 { 239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128 },
439 { 155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128 },
440 },
441 {
442 { 1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128 },
443 { 201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128 },
444 { 69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128 },
445 },
446 {
447 { 1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128 },
448 { 223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128 },
449 { 141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
450 },
451 {
452 { 1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
453 { 190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128 },
454 { 149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
455 },
456 {
457 { 1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
458 { 247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
459 { 240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
460 },
461 {
462 { 1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128 },
463 { 213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128 },
464 { 55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
465 },
466 {
467 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
468 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
469 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
470 },
471 },
472 {
473 {
474 { 202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255 },
475 { 126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128 },
476 { 61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128 },
477 },
478 {
479 { 1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128 },
480 { 166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128 },
481 { 39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128 },
482 },
483 {
484 { 1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128 },
485 { 124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128 },
486 { 24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128 },
487 },
488 {
489 { 1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128 },
490 { 149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128 },
491 { 28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128 },
492 },
493 {
494 { 1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128 },
495 { 123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128 },
496 { 20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128 },
497 },
498 {
499 { 1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128 },
500 { 168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128 },
501 { 47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128 },
502 },
503 {
504 { 1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128 },
505 { 141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128 },
506 { 42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128 },
507 },
508 {
509 { 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
510 { 244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
511 { 238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
512 },
513 },
514};
515
516extern const uint8_t ff_vp8_token_update_probs[4][8][3][11];
517
518static const uint8_t vp8_dc_qlookup[VP8_MAX_QUANT + 1] = {
519 4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, 15, 16, 17, 17,
520 18, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 25, 25, 26, 27, 28,
521 29, 30, 31, 32, 33, 34, 35, 36, 37, 37, 38, 39, 40, 41, 42, 43,
522 44, 45, 46, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
523 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
524 75, 76, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
525 91, 93, 95, 96, 98, 100, 101, 102, 104, 106, 108, 110, 112, 114, 116, 118,
526 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 143, 145, 148, 151, 154, 157,
527};
528
529static const uint16_t vp8_ac_qlookup[VP8_MAX_QUANT + 1] = {
530 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
531 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
532 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
533 52, 53, 54, 55, 56, 57, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76,
534 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108,
535 110, 112, 114, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143, 146, 149, 152,
536 155, 158, 161, 164, 167, 170, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209,
537 213, 217, 221, 225, 229, 234, 239, 245, 249, 254, 259, 264, 269, 274, 279, 284,
538};
539
540static const uint8_t vp8_mv_update_prob[2][19] = {
541 { 237,
542 246,
543 253, 253, 254, 254, 254, 254, 254,
544 254, 254, 254, 254, 254, 250, 250, 252, /* VP8 only: */ 254, 254 },
545 { 231,
546 243,
547 245, 253, 254, 254, 254, 254, 254,
548 254, 254, 254, 254, 254, 251, 251, 254, /* VP8 only: */ 254, 254 }
549};
550
551static const uint8_t vp7_mv_default_prob[2][17] = {
552 { 162,
553 128,
554 225, 146, 172, 147, 214, 39, 156,
555 247, 210, 135, 68, 138, 220, 239, 246 },
556 { 164,
557 128,
558 204, 170, 119, 235, 140, 230, 228,
559 244, 184, 201, 44, 173, 221, 239, 253 }
560};
561
562static const uint8_t vp8_mv_default_prob[2][19] = {
563 { 162,
564 128,
565 225, 146, 172, 147, 214, 39, 156,
566 128, 129, 132, 75, 145, 178, 206, 239, 254, 254 },
567 { 164,
568 128,
569 204, 170, 119, 235, 140, 230, 228,
570 128, 130, 130, 74, 148, 180, 203, 236, 254, 254 }
571};
572
573static const uint8_t vp7_feature_value_size[2][4] = {
574 { 7, 6, 0, 8 },
575 { 7, 6, 0, 5 },
576};
577
578static const int8_t vp7_feature_index_tree[4][2] =
579{
580 { 1, 2 },
581 { -0, -1 }, // '00', '01'
582 { -2, -3 }, // '10', '11'
583};
584
585static const uint16_t vp7_ydc_qlookup[] = {
586 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, 15,
587 16, 17, 18, 19, 20, 21, 22, 23, 23, 24, 25, 26, 27, 28, 29,
588 30, 31, 32, 33, 33, 34, 35, 36, 36, 37, 38, 39, 39, 40, 41,
589 41, 42, 43, 43, 44, 45, 45, 46, 47, 48, 48, 49, 50, 51, 52,
590 53, 53, 54, 56, 57, 58, 59, 60, 62, 63, 65, 66, 68, 70, 72,
591 74, 76, 79, 81, 84, 87, 90, 93, 96, 100, 104, 108, 112, 116, 121,
592 126, 131, 136, 142, 148, 154, 160, 167, 174, 182, 189, 198, 206, 215, 224,
593 234, 244, 254, 265, 277, 288, 301, 313, 327, 340, 355, 370, 385, 401, 417,
594 434, 452, 470, 489, 509, 529, 550, 572,
595};
596
597static const uint16_t vp7_yac_qlookup[] = {
598 4, 4, 5, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 15,
599 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 32, 34, 35,
600 37, 38, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 53, 54,
601 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 67, 68, 69, 70,
602 72, 73, 75, 76, 78, 80, 82, 84, 86, 88, 91, 93, 96, 99,
603 102, 105, 109, 112, 116, 121, 125, 130, 135, 140, 146, 152, 158, 165,
604 172, 180, 188, 196, 205, 214, 224, 234, 245, 256, 268, 281, 294, 308,
605 322, 337, 353, 369, 386, 404, 423, 443, 463, 484, 506, 529, 553, 578,
606 604, 631, 659, 688, 718, 749, 781, 814, 849, 885, 922, 960, 1000, 1041,
607 1083, 1127,
608};
609
610static const uint16_t vp7_y2dc_qlookup[] = {
611 7, 9, 11, 13, 15, 17, 19, 21, 23, 26, 28, 30, 33, 35,
612 37, 39, 42, 44, 46, 48, 51, 53, 55, 57, 59, 61, 63, 65,
613 67, 69, 70, 72, 74, 75, 77, 78, 80, 81, 83, 84, 85, 87,
614 88, 89, 90, 92, 93, 94, 95, 96, 97, 99, 100, 101, 102, 104,
615 105, 106, 108, 109, 111, 113, 114, 116, 118, 120, 123, 125, 128, 131,
616 134, 137, 140, 144, 148, 152, 156, 161, 166, 171, 176, 182, 188, 195,
617 202, 209, 217, 225, 234, 243, 253, 263, 274, 285, 297, 309, 322, 336,
618 350, 365, 381, 397, 414, 432, 450, 470, 490, 511, 533, 556, 579, 604,
619 630, 656, 684, 713, 742, 773, 805, 838, 873, 908, 945, 983, 1022, 1063,
620 1105, 1148,
621};
622
623static const uint16_t vp7_y2ac_qlookup[] = {
624 7, 9, 11, 13, 16, 18, 21, 24, 26, 29, 32, 35,
625 38, 41, 43, 46, 49, 52, 55, 58, 61, 64, 66, 69,
626 72, 74, 77, 79, 82, 84, 86, 88, 91, 93, 95, 97,
627 98, 100, 102, 104, 105, 107, 109, 110, 112, 113, 115, 116,
628 117, 119, 120, 122, 123, 125, 127, 128, 130, 132, 134, 136,
629 138, 141, 143, 146, 149, 152, 155, 158, 162, 166, 171, 175,
630 180, 185, 191, 197, 204, 210, 218, 226, 234, 243, 252, 262,
631 273, 284, 295, 308, 321, 335, 350, 365, 381, 398, 416, 435,
632 455, 476, 497, 520, 544, 569, 595, 622, 650, 680, 711, 743,
633 776, 811, 848, 885, 925, 965, 1008, 1052, 1097, 1144, 1193, 1244,
634 1297, 1351, 1407, 1466, 1526, 1588, 1652, 1719,
635};
636
637#endif /* AVCODEC_VP8DATA_H */
const uint8_t ff_vp8_token_update_probs[4][8][3][11]
Definition vp8data.c:43
H.264 / AVC / MPEG-4 prediction functions.
#define VERT_PRED
Prediction types.
Definition h264pred.h:38
#define HOR_PRED8x8
Definition h264pred.h:69
#define VERT_LEFT_PRED
Definition h264pred.h:45
#define HOR_DOWN_PRED
Definition h264pred.h:44
#define VERT_PRED8x8
Definition h264pred.h:70
#define DIAG_DOWN_LEFT_PRED
Definition h264pred.h:41
#define TM_VP8_PRED
"True Motion", used instead of plane
Definition h264pred.h:59
#define DC_PRED8x8
Definition h264pred.h:68
#define HOR_UP_PRED
Definition h264pred.h:46
#define DIAG_DOWN_RIGHT_PRED
Definition h264pred.h:42
#define HOR_PRED
Definition h264pred.h:39
#define DC_PRED
Definition h264pred.h:40
#define PLANE_PRED8x8
Definition h264pred.h:71
#define VERT_RIGHT_PRED
Definition h264pred.h:43
int8_t yoffset
Definition vp8data.h:62
uint8_t score
Definition vp8data.h:65
uint8_t subblock
Definition vp8data.h:64
int8_t xoffset
Definition vp8data.h:63
#define VP8_MAX_QUANT
Definition vp8.h:41
#define MODE_I4x4
Definition vp8.h:69
@ NUM_DCT_TOKENS
Definition vp8.h:65
const uint8_t *const ff_vp8_dct_cat_prob[]
Definition vp8data.c:36
static const int vp7_mode_contexts[31][4]
Definition vp8data.h:84
static const int8_t vp8_pred8x8c_tree[3][2]
Definition vp8data.h:180
static const uint16_t vp7_y2dc_qlookup[]
Definition vp8data.h:610
static const uint16_t vp8_ac_qlookup[VP8_MAX_QUANT+1]
Definition vp8data.h:529
static const uint8_t vp8_pred4x4_mode[]
Definition vp8data.h:40
static const uint8_t vp8_mv_update_prob[2][19]
Definition vp8data.h:540
static const uint8_t vp7_feature_value_size[2][4]
Definition vp8data.h:573
static const int8_t vp8_pred16x16_tree_intra[4][2]
Definition vp8data.h:47
static const uint8_t vp8_mbsplit_prob[3]
Definition vp8data.h:145
static const uint16_t vp7_y2ac_qlookup[]
Definition vp8data.h:623
static const int8_t vp8_pred16x16_tree_inter[4][2]
Definition vp8data.h:54
static const int8_t vp8_coeff_band_indexes[8][10]
Definition vp8data.h:325
static const uint8_t vp8_pred16x16_prob_inter[4]
Definition vp8data.h:164
static const uint8_t vp8_dct_cat2_prob[]
Definition vp8data.h:339
static const uint8_t vp8_pred16x16_prob_intra[4]
Definition vp8data.h:161
static const int8_t vp7_feature_index_tree[4][2]
Definition vp8data.h:578
static const uint16_t vp7_ydc_qlookup[]
Definition vp8data.h:585
static const uint8_t vp8_pred8x8c_prob_intra[3]
Definition vp8data.h:186
static const uint8_t vp8_mv_default_prob[2][19]
Definition vp8data.h:562
static const uint8_t vp8_mbsplits[5][16]
Definition vp8data.h:127
static const int vp8_mode_contexts[6][4]
Definition vp8data.h:118
#define VP7_MV_PRED_COUNT
Definition vp8data.h:68
static const uint8_t vp7_mv_default_prob[2][17]
Definition vp8data.h:551
static const uint8_t vp8_mbfirstidx[4][16]
Definition vp8data.h:135
static const uint8_t vp8_pred8x8c_prob_inter[3]
Definition vp8data.h:189
static const uint16_t vp7_yac_qlookup[]
Definition vp8data.h:597
static const uint8_t vp8_mbsplit_count[4]
Definition vp8data.h:142
static const uint8_t vp8_pred4x4_prob_intra[10][10][9]
Definition vp8data.h:196
static const uint8_t vp7_pred4x4_mode[]
Definition vp8data.h:33
static const uint8_t vp8_dct_cat1_prob[]
Definition vp8data.h:336
static const uint8_t vp8_submv_prob[5][3]
Definition vp8data.h:153
static const uint8_t vp7_submv_prob[3]
Definition vp8data.h:149
static const VP7MVPred vp7_mv_pred[VP7_MV_PRED_COUNT]
Definition vp8data.h:69
static const uint8_t vp8_token_default_probs[4][8][3][NUM_DCT_TOKENS - 1]
Definition vp8data.h:345
static const int8_t vp8_pred4x4_tree[9][2]
Definition vp8data.h:168
static const uint8_t vp8_dc_qlookup[VP8_MAX_QUANT+1]
Definition vp8data.h:518
static const uint8_t vp8_coeff_band[16]
Definition vp8data.h:319
static const uint8_t vp8_pred4x4_prob_inter[9]
Definition vp8data.h:192