]> git.sesse.net Git - ffmpeg/blob - libavcodec/vp8data.h
avformat/avio: Add Metacube support
[ffmpeg] / libavcodec / vp8data.h
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,
35     [VERT_PRED8x8]  = TM_VP8_PRED,
36     [HOR_PRED8x8]   = TM_VP8_PRED,
37     [PLANE_PRED8x8] = TM_VP8_PRED,
38 };
39
40 static const uint8_t vp8_pred4x4_mode[] = {
41     [DC_PRED8x8]    = DC_PRED,
42     [VERT_PRED8x8]  = VERT_PRED,
43     [HOR_PRED8x8]   = HOR_PRED,
44     [PLANE_PRED8x8] = TM_VP8_PRED,
45 };
46
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
69 static const VP7MVPred vp7_mv_pred[VP7_MV_PRED_COUNT] = {
70     { -1,  0, 12, 8 },
71     {  0, -1,  3, 8 },
72     { -1, -1, 15, 2 },
73     { -1,  1, 12, 2 },
74     { -2,  0, 12, 2 },
75     {  0, -2,  3, 2 },
76     { -1, -2, 15, 1 },
77     { -2, -1, 15, 1 },
78     { -2,  1, 12, 1 },
79     { -1,  2, 12, 1 },
80     { -2, -2, 15, 1 },
81     { -2,  2, 12, 1 },
82 };
83
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 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[] = {
357     vp8_dct_cat3_prob,
358     vp8_dct_cat4_prob,
359     vp8_dct_cat5_prob,
360     vp8_dct_cat6_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 */