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;
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 
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 
161 static const uint8_t vp8_pred16x16_prob_intra[4] = {
162  145, 156, 163, 128
163 };
164 static const uint8_t vp8_pred16x16_prob_inter[4] = {
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 
343 extern const uint8_t *const ff_vp8_dct_cat_prob[];
344 
345 static 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 
516 extern const uint8_t ff_vp8_token_update_probs[4][8][3][11];
517 
518 static 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 
529 static 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 
540 static 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 
551 static 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 
562 static 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 
573 static const uint8_t vp7_feature_value_size[2][4] = {
574  { 7, 6, 0, 8 },
575  { 7, 6, 0, 5 },
576 };
577 
578 static 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 
585 static 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 
597 static 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 
610 static 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 
623 static 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 */
vp8_mode_contexts
static const int vp8_mode_contexts[6][4]
Definition: vp8data.h:118
vp8_dct_cat1_prob
static const uint8_t vp8_dct_cat1_prob[]
Definition: vp8data.h:336
VP7_MV_PRED_COUNT
#define VP7_MV_PRED_COUNT
Definition: vp8data.h:68
vp7_pred4x4_mode
static const uint8_t vp7_pred4x4_mode[]
Definition: vp8data.h:33
HOR_PRED8x8
#define HOR_PRED8x8
Definition: h264pred.h:69
vp7_mv_pred
static const VP7MVPred vp7_mv_pred[VP7_MV_PRED_COUNT]
Definition: vp8data.h:69
VP7MVPred::subblock
uint8_t subblock
Definition: vp8data.h:64
ff_vp8_token_update_probs
const uint8_t ff_vp8_token_update_probs[4][8][3][11]
Definition: vp8data.c:43
DC_PRED8x8
#define DC_PRED8x8
Definition: h264pred.h:68
vp8_submv_prob
static const uint8_t vp8_submv_prob[5][3]
Definition: vp8data.h:153
vp7_ydc_qlookup
static const uint16_t vp7_ydc_qlookup[]
Definition: vp8data.h:585
vp7_mv_default_prob
static const uint8_t vp7_mv_default_prob[2][17]
Definition: vp8data.h:551
ff_vp8_dct_cat_prob
const uint8_t *const ff_vp8_dct_cat_prob[]
Definition: vp8data.c:36
vp7_y2dc_qlookup
static const uint16_t vp7_y2dc_qlookup[]
Definition: vp8data.h:610
TM_VP8_PRED
@ TM_VP8_PRED
Definition: vp9.h:55
DC_PRED
@ DC_PRED
Definition: vp9.h:48
VERT_LEFT_PRED
@ VERT_LEFT_PRED
Definition: vp9.h:53
vp8_pred8x8c_tree
static const int8_t vp8_pred8x8c_tree[3][2]
Definition: vp8data.h:180
vp8_mv_update_prob
static const uint8_t vp8_mv_update_prob[2][19]
Definition: vp8data.h:540
VERT_PRED
@ VERT_PRED
Definition: vp9.h:46
DIAG_DOWN_RIGHT_PRED
@ DIAG_DOWN_RIGHT_PRED
Definition: vp9.h:50
HOR_PRED
@ HOR_PRED
Definition: vp9.h:47
vp8_dct_cat2_prob
static const uint8_t vp8_dct_cat2_prob[]
Definition: vp8data.h:339
vp8_pred4x4_mode
static const uint8_t vp8_pred4x4_mode[]
Definition: vp8data.h:40
vp8_pred8x8c_prob_inter
static const uint8_t vp8_pred8x8c_prob_inter[3]
Definition: vp8data.h:189
VP8_MAX_QUANT
#define VP8_MAX_QUANT
Definition: vp8.h:40
vp8_pred16x16_tree_intra
static const int8_t vp8_pred16x16_tree_intra[4][2]
Definition: vp8data.h:47
vp8_pred4x4_prob_inter
static const uint8_t vp8_pred4x4_prob_inter[9]
Definition: vp8data.h:192
vp8_mbsplits
static const uint8_t vp8_mbsplits[5][16]
Definition: vp8data.h:127
vp7_mode_contexts
static const int vp7_mode_contexts[31][4]
Definition: vp8data.h:84
vp8_mv_default_prob
static const uint8_t vp8_mv_default_prob[2][19]
Definition: vp8data.h:562
vp8_coeff_band_indexes
static const int8_t vp8_coeff_band_indexes[8][10]
Definition: vp8data.h:325
vp8_pred16x16_prob_inter
static const uint8_t vp8_pred16x16_prob_inter[4]
Definition: vp8data.h:164
VP7MVPred::yoffset
int8_t yoffset
Definition: vp8data.h:62
NUM_DCT_TOKENS
@ NUM_DCT_TOKENS
Definition: vp8.h:64
VP7MVPred
Definition: vp8data.h:61
vp7_yac_qlookup
static const uint16_t vp7_yac_qlookup[]
Definition: vp8data.h:597
vp8_token_default_probs
static const uint8_t vp8_token_default_probs[4][8][3][NUM_DCT_TOKENS - 1]
Definition: vp8data.h:345
VERT_PRED8x8
#define VERT_PRED8x8
Definition: h264pred.h:70
vp8_mbsplit_count
static const uint8_t vp8_mbsplit_count[4]
Definition: vp8data.h:142
vp7_feature_value_size
static const uint8_t vp7_feature_value_size[2][4]
Definition: vp8data.h:573
vp8.h
vp8_mbfirstidx
static const uint8_t vp8_mbfirstidx[4][16]
Definition: vp8data.h:135
vp8_pred4x4_tree
static const int8_t vp8_pred4x4_tree[9][2]
Definition: vp8data.h:168
vp8_coeff_band
static const uint8_t vp8_coeff_band[16]
Definition: vp8data.h:319
VERT_RIGHT_PRED
@ VERT_RIGHT_PRED
Definition: vp9.h:51
vp8_pred8x8c_prob_intra
static const uint8_t vp8_pred8x8c_prob_intra[3]
Definition: vp8data.h:186
vp8_pred4x4_prob_intra
static const uint8_t vp8_pred4x4_prob_intra[10][10][9]
Definition: vp8data.h:196
vp8_mbsplit_prob
static const uint8_t vp8_mbsplit_prob[3]
Definition: vp8data.h:145
vp8_pred16x16_tree_inter
static const int8_t vp8_pred16x16_tree_inter[4][2]
Definition: vp8data.h:54
vp7_feature_index_tree
static const int8_t vp7_feature_index_tree[4][2]
Definition: vp8data.h:578
PLANE_PRED8x8
#define PLANE_PRED8x8
Definition: h264pred.h:71
MODE_I4x4
#define MODE_I4x4
Definition: vp8.h:68
VP7MVPred::xoffset
int8_t xoffset
Definition: vp8data.h:63
vp8_pred16x16_prob_intra
static const uint8_t vp8_pred16x16_prob_intra[4]
Definition: vp8data.h:161
vp8_ac_qlookup
static const uint16_t vp8_ac_qlookup[VP8_MAX_QUANT+1]
Definition: vp8data.h:529
h264pred.h
HOR_UP_PRED
@ HOR_UP_PRED
Definition: vp9.h:54
HOR_DOWN_PRED
@ HOR_DOWN_PRED
Definition: vp9.h:52
VP7MVPred::score
uint8_t score
Definition: vp8data.h:65
DIAG_DOWN_LEFT_PRED
@ DIAG_DOWN_LEFT_PRED
Definition: vp9.h:49
vp7_y2ac_qlookup
static const uint16_t vp7_y2ac_qlookup[]
Definition: vp8data.h:623
vp7_submv_prob
static const uint8_t vp7_submv_prob[3]
Definition: vp8data.h:149
vp8_dc_qlookup
static const uint8_t vp8_dc_qlookup[VP8_MAX_QUANT+1]
Definition: vp8data.h:518