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