Statistics
| Branch: | Revision:

ffmpeg / libavcodec / vp8data.h @ 2912e87a

History | View | Annotate | Download (27.9 KB)

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