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 
33 static const uint8_t vp8_pred4x4_mode[] =
34 {
35  [DC_PRED8x8] = DC_PRED,
39 };
40 
41 static const int8_t vp8_pred16x16_tree_intra[4][2] =
42 {
43  { -MODE_I4x4, 1 }, // '0'
44  { 2, 3 },
45  { -DC_PRED8x8, -VERT_PRED8x8 }, // '100', '101'
46  { -HOR_PRED8x8, -PLANE_PRED8x8 }, // '110', '111'
47 };
48 
49 static const int8_t vp8_pred16x16_tree_inter[4][2] =
50 {
51  { -DC_PRED8x8, 1 }, // '0'
52  { 2, 3 },
53  { -VERT_PRED8x8, -HOR_PRED8x8 }, // '100', '101'
54  { -PLANE_PRED8x8, -MODE_I4x4 }, // '110', '111'
55 };
56 
57 static const int vp8_mode_contexts[6][4] = {
58  { 7, 1, 1, 143 },
59  { 14, 18, 14, 107 },
60  { 135, 64, 57, 68 },
61  { 60, 56, 128, 65 },
62  { 159, 134, 128, 34 },
63  { 234, 188, 128, 28 },
64 };
65 
66 static const uint8_t vp8_mbsplits[5][16] = {
67  { 0, 0, 0, 0, 0, 0, 0, 0,
68  1, 1, 1, 1, 1, 1, 1, 1 },
69  { 0, 0, 1, 1, 0, 0, 1, 1,
70  0, 0, 1, 1, 0, 0, 1, 1 },
71  { 0, 0, 1, 1, 0, 0, 1, 1,
72  2, 2, 3, 3, 2, 2, 3, 3 },
73  { 0, 1, 2, 3, 4, 5, 6, 7,
74  8, 9, 10, 11, 12, 13, 14, 15 },
75  { 0, 0, 0, 0, 0, 0, 0, 0,
76  0, 0, 0, 0, 0, 0, 0, 0 }
77 };
78 
79 static const uint8_t vp8_mbfirstidx[4][16] = {
80  { 0, 8 }, { 0, 2 }, { 0, 2, 8, 10 },
81  { 0, 1, 2, 3, 4, 5, 6, 7,
82  8, 9, 10, 11, 12, 13, 14, 15 }
83 };
84 
85 static const uint8_t vp8_mbsplit_count[4] = { 2, 2, 4, 16 };
86 static const uint8_t vp8_mbsplit_prob[3] = { 110, 111, 150 };
87 
88 static const uint8_t vp8_submv_prob[5][3] = {
89  { 147, 136, 18 },
90  { 106, 145, 1 },
91  { 179, 121, 1 },
92  { 223, 1, 34 },
93  { 208, 1, 1 }
94 };
95 
96 static const uint8_t vp8_pred16x16_prob_intra[4] = { 145, 156, 163, 128 };
97 static const uint8_t vp8_pred16x16_prob_inter[4] = { 112, 86, 140, 37 };
98 
99 static const int8_t vp8_pred4x4_tree[9][2] =
100 {
101  { -DC_PRED, 1 }, // '0'
102  { -TM_VP8_PRED, 2 }, // '10'
103  { -VERT_PRED, 3 }, // '110'
104  { 4, 6 },
105  { -HOR_PRED, 5 }, // '11100'
106  { -DIAG_DOWN_RIGHT_PRED, -VERT_RIGHT_PRED }, // '111010', '111011'
107  { -DIAG_DOWN_LEFT_PRED, 7 }, // '11110'
108  { -VERT_LEFT_PRED, 8 }, // '111110'
109  { -HOR_DOWN_PRED, -HOR_UP_PRED }, // '1111110', '1111111'
110 };
111 
112 static const int8_t vp8_pred8x8c_tree[3][2] =
113 {
114  { -DC_PRED8x8, 1 }, // '0'
115  { -VERT_PRED8x8, 2 }, // '10
116  { -HOR_PRED8x8, -PLANE_PRED8x8 }, // '110', '111'
117 };
118 
119 static const uint8_t vp8_pred8x8c_prob_intra[3] = { 142, 114, 183 };
120 static const uint8_t vp8_pred8x8c_prob_inter[3] = { 162, 101, 204 };
121 
122 static const uint8_t vp8_pred4x4_prob_inter[9] =
123 {
124  120, 90, 79, 133, 87, 85, 80, 111, 151
125 };
126 
127 static const uint8_t vp8_pred4x4_prob_intra[10][10][9] =
128 {
129  {
130  { 39, 53, 200, 87, 26, 21, 43, 232, 171 },
131  { 56, 34, 51, 104, 114, 102, 29, 93, 77 },
132  { 88, 88, 147, 150, 42, 46, 45, 196, 205 },
133  { 107, 54, 32, 26, 51, 1, 81, 43, 31 },
134  { 39, 28, 85, 171, 58, 165, 90, 98, 64 },
135  { 34, 22, 116, 206, 23, 34, 43, 166, 73 },
136  { 34, 19, 21, 102, 132, 188, 16, 76, 124 },
137  { 68, 25, 106, 22, 64, 171, 36, 225, 114 },
138  { 62, 18, 78, 95, 85, 57, 50, 48, 51 },
139  { 43, 97, 183, 117, 85, 38, 35, 179, 61 },
140  },
141  {
142  { 112, 113, 77, 85, 179, 255, 38, 120, 114 },
143  { 40, 42, 1, 196, 245, 209, 10, 25, 109 },
144  { 193, 101, 35, 159, 215, 111, 89, 46, 111 },
145  { 100, 80, 8, 43, 154, 1, 51, 26, 71 },
146  { 88, 43, 29, 140, 166, 213, 37, 43, 154 },
147  { 61, 63, 30, 155, 67, 45, 68, 1, 209 },
148  { 41, 40, 5, 102, 211, 183, 4, 1, 221 },
149  { 142, 78, 78, 16, 255, 128, 34, 197, 171 },
150  { 51, 50, 17, 168, 209, 192, 23, 25, 82 },
151  { 60, 148, 31, 172, 219, 228, 21, 18, 111 },
152  },
153  {
154  { 175, 69, 143, 80, 85, 82, 72, 155, 103 },
155  { 56, 58, 10, 171, 218, 189, 17, 13, 152 },
156  { 231, 120, 48, 89, 115, 113, 120, 152, 112 },
157  { 144, 71, 10, 38, 171, 213, 144, 34, 26 },
158  { 114, 26, 17, 163, 44, 195, 21, 10, 173 },
159  { 121, 24, 80, 195, 26, 62, 44, 64, 85 },
160  { 63, 20, 8, 114, 114, 208, 12, 9, 226 },
161  { 170, 46, 55, 19, 136, 160, 33, 206, 71 },
162  { 81, 40, 11, 96, 182, 84, 29, 16, 36 },
163  { 152, 179, 64, 126, 170, 118, 46, 70, 95 },
164  },
165  {
166  { 75, 79, 123, 47, 51, 128, 81, 171, 1 },
167  { 57, 17, 5, 71, 102, 57, 53, 41, 49 },
168  { 125, 98, 42, 88, 104, 85, 117, 175, 82 },
169  { 115, 21, 2, 10, 102, 255, 166, 23, 6 },
170  { 38, 33, 13, 121, 57, 73, 26, 1, 85 },
171  { 41, 10, 67, 138, 77, 110, 90, 47, 114 },
172  { 57, 18, 10, 102, 102, 213, 34, 20, 43 },
173  { 101, 29, 16, 10, 85, 128, 101, 196, 26 },
174  { 117, 20, 15, 36, 163, 128, 68, 1, 26 },
175  { 95, 84, 53, 89, 128, 100, 113, 101, 45 },
176  },
177  {
178  { 63, 59, 90, 180, 59, 166, 93, 73, 154 },
179  { 40, 40, 21, 116, 143, 209, 34, 39, 175 },
180  { 138, 31, 36, 171, 27, 166, 38, 44, 229 },
181  { 57, 46, 22, 24, 128, 1, 54, 17, 37 },
182  { 47, 15, 16, 183, 34, 223, 49, 45, 183 },
183  { 46, 17, 33, 183, 6, 98, 15, 32, 183 },
184  { 40, 3, 9, 115, 51, 192, 18, 6, 223 },
185  { 65, 32, 73, 115, 28, 128, 23, 128, 205 },
186  { 87, 37, 9, 115, 59, 77, 64, 21, 47 },
187  { 67, 87, 58, 169, 82, 115, 26, 59, 179 },
188  },
189  {
190  { 54, 57, 112, 184, 5, 41, 38, 166, 213 },
191  { 30, 34, 26, 133, 152, 116, 10, 32, 134 },
192  { 104, 55, 44, 218, 9, 54, 53, 130, 226 },
193  { 75, 32, 12, 51, 192, 255, 160, 43, 51 },
194  { 39, 19, 53, 221, 26, 114, 32, 73, 255 },
195  { 31, 9, 65, 234, 2, 15, 1, 118, 73 },
196  { 56, 21, 23, 111, 59, 205, 45, 37, 192 },
197  { 88, 31, 35, 67, 102, 85, 55, 186, 85 },
198  { 55, 38, 70, 124, 73, 102, 1, 34, 98 },
199  { 64, 90, 70, 205, 40, 41, 23, 26, 57 },
200  },
201  {
202  { 86, 40, 64, 135, 148, 224, 45, 183, 128 },
203  { 22, 26, 17, 131, 240, 154, 14, 1, 209 },
204  { 164, 50, 31, 137, 154, 133, 25, 35, 218 },
205  { 83, 12, 13, 54, 192, 255, 68, 47, 28 },
206  { 45, 16, 21, 91, 64, 222, 7, 1, 197 },
207  { 56, 21, 39, 155, 60, 138, 23, 102, 213 },
208  { 18, 11, 7, 63, 144, 171, 4, 4, 246 },
209  { 85, 26, 85, 85, 128, 128, 32, 146, 171 },
210  { 35, 27, 10, 146, 174, 171, 12, 26, 128 },
211  { 51, 103, 44, 131, 131, 123, 31, 6, 158 },
212  },
213  {
214  { 68, 45, 128, 34, 1, 47, 11, 245, 171 },
215  { 62, 17, 19, 70, 146, 85, 55, 62, 70 },
216  { 102, 61, 71, 37, 34, 53, 31, 243, 192 },
217  { 75, 15, 9, 9, 64, 255, 184, 119, 16 },
218  { 37, 43, 37, 154, 100, 163, 85, 160, 1 },
219  { 63, 9, 92, 136, 28, 64, 32, 201, 85 },
220  { 56, 8, 17, 132, 137, 255, 55, 116, 128 },
221  { 86, 6, 28, 5, 64, 255, 25, 248, 1 },
222  { 58, 15, 20, 82, 135, 57, 26, 121, 40 },
223  { 69, 60, 71, 38, 73, 119, 28, 222, 37 },
224  },
225  {
226  { 101, 75, 128, 139, 118, 146, 116, 128, 85 },
227  { 56, 41, 15, 176, 236, 85, 37, 9, 62 },
228  { 190, 80, 35, 99, 180, 80, 126, 54, 45 },
229  { 146, 36, 19, 30, 171, 255, 97, 27, 20 },
230  { 71, 30, 17, 119, 118, 255, 17, 18, 138 },
231  { 101, 38, 60, 138, 55, 70, 43, 26, 142 },
232  { 32, 41, 20, 117, 151, 142, 20, 21, 163 },
233  { 138, 45, 61, 62, 219, 1, 81, 188, 64 },
234  { 112, 19, 12, 61, 195, 128, 48, 4, 24 },
235  { 85, 126, 47, 87, 176, 51, 41, 20, 32 },
236  },
237  {
238  { 66, 102, 167, 99, 74, 62, 40, 234, 128 },
239  { 41, 53, 9, 178, 241, 141, 26, 8, 107 },
240  { 134, 183, 89, 137, 98, 101, 106, 165, 148 },
241  { 104, 79, 12, 27, 217, 255, 87, 17, 7 },
242  { 74, 43, 26, 146, 73, 166, 49, 23, 157 },
243  { 65, 38, 105, 160, 51, 52, 31, 115, 128 },
244  { 47, 41, 14, 110, 182, 183, 21, 17, 194 },
245  { 87, 68, 71, 44, 114, 51, 15, 186, 23 },
246  { 66, 45, 25, 102, 197, 189, 23, 18, 22 },
247  { 72, 187, 100, 130, 157, 111, 32, 75, 80 },
248  },
249 };
250 
251 static const int8_t vp8_segmentid_tree[][2] =
252 {
253  { 1, 2 },
254  { -0, -1 }, // '00', '01'
255  { -2, -3 }, // '10', '11'
256 };
257 
258 static const uint8_t vp8_coeff_band[16] =
259 {
260  0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7
261 };
262 
263 /* Inverse of vp8_coeff_band: mappings of bands to coefficient indexes.
264  * Each list is -1-terminated. */
265 static const int8_t vp8_coeff_band_indexes[8][10] =
266 {
267  {0, -1},
268  {1, -1},
269  {2, -1},
270  {3, -1},
271  {5, -1},
272  {6, -1},
273  {4, 7, 8, 9, 10, 11, 12, 13, 14, -1},
274  {15, -1}
275 };
276 
277 static const uint8_t vp8_dct_cat1_prob[] = { 159, 0 };
278 static const uint8_t vp8_dct_cat2_prob[] = { 165, 145, 0 };
279 static const uint8_t vp8_dct_cat3_prob[] = { 173, 148, 140, 0 };
280 static const uint8_t vp8_dct_cat4_prob[] = { 176, 155, 140, 135, 0 };
281 static const uint8_t vp8_dct_cat5_prob[] = { 180, 157, 141, 134, 130, 0 };
282 static const uint8_t vp8_dct_cat6_prob[] = { 254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 0 };
283 
284 // only used for cat3 and above; cat 1 and 2 are referenced directly
285 const uint8_t * const ff_vp8_dct_cat_prob[] =
286 {
291 };
292 
293 static const uint8_t vp8_token_default_probs[4][8][3][NUM_DCT_TOKENS-1] =
294 {
295  {
296  {
297  { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
298  { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
299  { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
300  },
301  {
302  { 253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128 },
303  { 189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128 },
304  { 106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128 },
305  },
306  {
307  { 1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128 },
308  { 181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128 },
309  { 78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128 },
310  },
311  {
312  { 1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128 },
313  { 184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128 },
314  { 77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128 },
315  },
316  {
317  { 1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128 },
318  { 170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128 },
319  { 37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128 },
320  },
321  {
322  { 1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128 },
323  { 207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128 },
324  { 102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128 },
325  },
326  {
327  { 1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128 },
328  { 177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128 },
329  { 80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128 },
330  },
331  {
332  { 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
333  { 246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
334  { 255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
335  },
336  },
337  {
338  {
339  { 198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62 },
340  { 131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1 },
341  { 68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128 },
342  },
343  {
344  { 1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128 },
345  { 184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128 },
346  { 81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128 },
347  },
348  {
349  { 1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128 },
350  { 99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128 },
351  { 23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128 },
352  },
353  {
354  { 1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128 },
355  { 109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128 },
356  { 44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128 },
357  },
358  {
359  { 1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128 },
360  { 94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128 },
361  { 22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128 },
362  },
363  {
364  { 1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128 },
365  { 124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128 },
366  { 35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128 },
367  },
368  {
369  { 1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128 },
370  { 121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128 },
371  { 45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128 },
372  },
373  {
374  { 1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128 },
375  { 203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
376  { 137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128 },
377  },
378  },
379  {
380  {
381  { 253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128 },
382  { 175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128 },
383  { 73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128 },
384  },
385  {
386  { 1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128 },
387  { 239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128 },
388  { 155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128 },
389  },
390  {
391  { 1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128 },
392  { 201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128 },
393  { 69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128 },
394  },
395  {
396  { 1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128 },
397  { 223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128 },
398  { 141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
399  },
400  {
401  { 1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
402  { 190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128 },
403  { 149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
404  },
405  {
406  { 1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
407  { 247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
408  { 240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
409  },
410  {
411  { 1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128 },
412  { 213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128 },
413  { 55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
414  },
415  {
416  { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
417  { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
418  { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
419  },
420  },
421  {
422  {
423  { 202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255 },
424  { 126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128 },
425  { 61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128 },
426  },
427  {
428  { 1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128 },
429  { 166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128 },
430  { 39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128 },
431  },
432  {
433  { 1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128 },
434  { 124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128 },
435  { 24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128 },
436  },
437  {
438  { 1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128 },
439  { 149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128 },
440  { 28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128 },
441  },
442  {
443  { 1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128 },
444  { 123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128 },
445  { 20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128 },
446  },
447  {
448  { 1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128 },
449  { 168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128 },
450  { 47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128 },
451  },
452  {
453  { 1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128 },
454  { 141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128 },
455  { 42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128 },
456  },
457  {
458  { 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
459  { 244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
460  { 238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
461  },
462  },
463 };
464 
465 static const uint8_t vp8_token_update_probs[4][8][3][NUM_DCT_TOKENS-1] =
466 {
467  {
468  {
469  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
470  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
471  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
472  },
473  {
474  { 176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
475  { 223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255 },
476  { 249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
477  },
478  {
479  { 255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255 },
480  { 234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
481  { 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
482  },
483  {
484  { 255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
485  { 239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
486  { 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
487  },
488  {
489  { 255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
490  { 251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
491  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
492  },
493  {
494  { 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
495  { 251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
496  { 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
497  },
498  {
499  { 255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255 },
500  { 250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255 },
501  { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
502  },
503  {
504  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
505  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
506  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
507  },
508  },
509  {
510  {
511  { 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
512  { 225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255 },
513  { 234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255 },
514  },
515  {
516  { 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
517  { 223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
518  { 238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255 },
519  },
520  {
521  { 255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
522  { 249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
523  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
524  },
525  {
526  { 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
527  { 247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
528  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
529  },
530  {
531  { 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
532  { 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
533  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
534  },
535  {
536  { 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
537  { 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
538  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
539  },
540  {
541  { 255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
542  { 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
543  { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
544  },
545  {
546  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
547  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
548  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
549  },
550  },
551  {
552  {
553  { 186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255 },
554  { 234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255 },
555  { 251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255 },
556  },
557  {
558  { 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
559  { 236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
560  { 251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255 },
561  },
562  {
563  { 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
564  { 254, 254, 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, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
569  { 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
570  { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
571  },
572  {
573  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
574  { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
575  { 255, 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  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
584  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
585  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
586  },
587  {
588  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
589  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
590  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
591  },
592  },
593  {
594  {
595  { 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
596  { 250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255 },
597  { 248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255 },
598  },
599  {
600  { 255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
601  { 246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
602  { 252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255 },
603  },
604  {
605  { 255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255 },
606  { 248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
607  { 253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255 },
608  },
609  {
610  { 255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
611  { 245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
612  { 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
613  },
614  {
615  { 255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
616  { 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
617  { 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
618  },
619  {
620  { 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
621  { 249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
622  { 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
623  },
624  {
625  { 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
626  { 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
627  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
628  },
629  {
630  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
631  { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
632  { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
633  },
634  },
635 };
636 
637 // fixme: copied from h264data.h
638 static const uint8_t zigzag_scan[16]={
639  0+0*4, 1+0*4, 0+1*4, 0+2*4,
640  1+1*4, 2+0*4, 3+0*4, 2+1*4,
641  1+2*4, 0+3*4, 1+3*4, 2+2*4,
642  3+1*4, 3+2*4, 2+3*4, 3+3*4,
643 };
644 
645 static const uint8_t vp8_dc_qlookup[VP8_MAX_QUANT+1] =
646 {
647  4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, 15, 16, 17, 17,
648  18, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 25, 25, 26, 27, 28,
649  29, 30, 31, 32, 33, 34, 35, 36, 37, 37, 38, 39, 40, 41, 42, 43,
650  44, 45, 46, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
651  59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
652  75, 76, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
653  91, 93, 95, 96, 98, 100, 101, 102, 104, 106, 108, 110, 112, 114, 116, 118,
654  122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 143, 145, 148, 151, 154, 157,
655 };
656 
657 static const uint16_t vp8_ac_qlookup[VP8_MAX_QUANT+1] =
658 {
659  4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
660  20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
661  36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
662  52, 53, 54, 55, 56, 57, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76,
663  78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108,
664  110, 112, 114, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143, 146, 149, 152,
665  155, 158, 161, 164, 167, 170, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209,
666  213, 217, 221, 225, 229, 234, 239, 245, 249, 254, 259, 264, 269, 274, 279, 284,
667 };
668 
669 static const uint8_t vp8_mv_update_prob[2][19] = {
670  { 237,
671  246,
672  253, 253, 254, 254, 254, 254, 254,
673  254, 254, 254, 254, 254, 250, 250, 252, 254, 254 },
674  { 231,
675  243,
676  245, 253, 254, 254, 254, 254, 254,
677  254, 254, 254, 254, 254, 251, 251, 254, 254, 254 }
678 };
679 
680 static const uint8_t vp8_mv_default_prob[2][19] = {
681  { 162,
682  128,
683  225, 146, 172, 147, 214, 39, 156,
684  128, 129, 132, 75, 145, 178, 206, 239, 254, 254 },
685  { 164,
686  128,
687  204, 170, 119, 235, 140, 230, 228,
688  128, 130, 130, 74, 148, 180, 203, 236, 254, 254 }
689 };
690 
691 #endif /* AVCODEC_VP8DATA_H */
#define VERT_PRED8x8
Definition: h264pred.h:70
static const uint8_t vp8_submv_prob[5][3]
Definition: vp8data.h:88
#define VP8_MAX_QUANT
Definition: vp8.h:44
#define VERT_LEFT_PRED
Definition: h264pred.h:45
static const int8_t vp8_pred8x8c_tree[3][2]
Definition: vp8data.h:112
#define HOR_PRED8x8
Definition: h264pred.h:69
static const uint8_t vp8_pred8x8c_prob_inter[3]
Definition: vp8data.h:120
static const uint8_t vp8_mbsplits[5][16]
Definition: vp8data.h:66
static const int8_t vp8_pred16x16_tree_intra[4][2]
Definition: vp8data.h:41
#define PLANE_PRED8x8
Definition: h264pred.h:71
#define DC_PRED8x8
Definition: h264pred.h:68
#define TM_VP8_PRED
"True Motion", used instead of plane
Definition: h264pred.h:59
#define DIAG_DOWN_LEFT_PRED
Definition: h264pred.h:41
static const uint8_t vp8_mv_update_prob[2][19]
Definition: vp8data.h:669
static const uint8_t zigzag_scan[16]
Definition: vp8data.h:638
static const uint8_t vp8_token_default_probs[4][8][3][NUM_DCT_TOKENS-1]
Definition: vp8data.h:293
static const uint16_t vp8_ac_qlookup[127+1]
Definition: vp8data.h:657
static const uint8_t vp8_mbsplit_count[4]
Definition: vp8data.h:85
static const int8_t vp8_coeff_band_indexes[8][10]
Definition: vp8data.h:265
static const uint8_t vp8_pred4x4_mode[]
Definition: vp8data.h:33
static const uint8_t vp8_dct_cat2_prob[]
Definition: vp8data.h:278
static const uint8_t vp8_mv_default_prob[2][19]
Definition: vp8data.h:680
static const uint8_t vp8_mbfirstidx[4][16]
Definition: vp8data.h:79
static const uint8_t vp8_pred4x4_prob_inter[9]
Definition: vp8data.h:122
static const uint8_t vp8_pred16x16_prob_inter[4]
Definition: vp8data.h:97
#define HOR_UP_PRED
Definition: h264pred.h:46
static const uint8_t vp8_pred4x4_prob_intra[10][10][9]
Definition: vp8data.h:127
static const uint8_t vp8_dct_cat4_prob[]
Definition: vp8data.h:280
#define VERT_PRED
Prediction types.
Definition: h264pred.h:38
#define DIAG_DOWN_RIGHT_PRED
Definition: h264pred.h:42
static const uint8_t vp8_pred8x8c_prob_intra[3]
Definition: vp8data.h:119
#define HOR_PRED
Definition: h264pred.h:39
#define HOR_DOWN_PRED
Definition: h264pred.h:44
static const uint8_t vp8_mbsplit_prob[3]
Definition: vp8data.h:86
static const uint8_t vp8_dc_qlookup[127+1]
Definition: vp8data.h:645
static const int8_t vp8_pred16x16_tree_inter[4][2]
Definition: vp8data.h:49
static const uint8_t vp8_dct_cat5_prob[]
Definition: vp8data.h:281
static const int8_t vp8_pred4x4_tree[9][2]
Definition: vp8data.h:99
static const uint8_t vp8_coeff_band[16]
Definition: vp8data.h:258
static const uint8_t vp8_pred16x16_prob_intra[4]
Definition: vp8data.h:96
static const int8_t vp8_segmentid_tree[][2]
Definition: vp8data.h:251
H.264 / AVC / MPEG4 prediction functions.
#define VERT_RIGHT_PRED
Definition: h264pred.h:43
static const uint8_t vp8_dct_cat3_prob[]
Definition: vp8data.h:279
#define MODE_I4x4
Definition: vp8.h:64
static const uint8_t vp8_dct_cat6_prob[]
Definition: vp8data.h:282
static const uint8_t vp8_token_update_probs[4][8][3][NUM_DCT_TOKENS-1]
Definition: vp8data.h:465
static const int vp8_mode_contexts[6][4]
Definition: vp8data.h:57
#define DC_PRED
Definition: h264pred.h:40
static const uint8_t vp8_dct_cat1_prob[]
Definition: vp8data.h:277
const uint8_t *const ff_vp8_dct_cat_prob[]
Definition: vp8data.h:285