OSDN Git Service

test: check whether MVC encoding is support
[android-x86/hardware-intel-common-vaapi.git] / src / vp8_probs.c
1 /*
2  * Copyright © 2014-2017 Intel Corporation
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and associated documentation files (the
6  * "Software"), to deal in the Software without restriction, including
7  * without limitation the rights to use, copy, modify, merge, publish,
8  * distribute, sub license, and/or sell copies of the Software, and to
9  * permit persons to whom the Software is furnished to do so, subject to
10  * the following conditions:
11  *
12  * The above copyright notice and this permission notice (including the
13  * next paragraph) shall be included in all copies or substantial portions
14  * of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
19  * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
20  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23  *
24  */
25
26 /*
27  * This file defines some vp8 probability tables, and
28  * they are ported from libvpx (https://github.com/mrchapp/libvpx/).
29  * The original copyright and licence statement as below.
30  */
31
32 /*
33  *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
34  *
35  *  Use of this source code is governed by a BSD-style license
36  *  that can be found in the LICENSE file in the root of the source
37  *  tree. An additional intellectual property rights grant can be found
38  *  in the file PATENTS.  All contributing project authors may
39  *  be found in the AUTHORS file in the root of the source tree.
40  */
41
42 const unsigned char vp8_ymode_prob[4] =
43 {
44     112, 86, 140, 37
45 };
46
47 const unsigned char vp8_kf_ymode_prob[4] =
48 {
49     145, 156, 163, 128
50 };
51
52 const unsigned char vp8_uv_mode_prob[3] =
53 {
54     162, 101, 204
55 };
56
57 const unsigned char vp8_kf_uv_mode_prob[3] =
58 {
59     142, 114, 183
60 };
61
62 const unsigned char vp8_base_skip_false_prob[128] =
63 {
64     255, 255, 255, 255, 255, 255, 255, 255,
65     255, 255, 255, 255, 255, 255, 255, 255,
66     255, 255, 255, 255, 255, 255, 255, 255,
67     255, 255, 255, 255, 255, 255, 255, 255,
68     255, 255, 255, 255, 255, 255, 255, 255,
69     255, 255, 255, 255, 255, 255, 255, 255,
70     255, 255, 255, 255, 255, 255, 255, 255,
71     251, 248, 244, 240, 236, 232, 229, 225,
72     221, 217, 213, 208, 204, 199, 194, 190,
73     187, 183, 179, 175, 172, 168, 164, 160,
74     157, 153, 149, 145, 142, 138, 134, 130,
75     127, 124, 120, 117, 114, 110, 107, 104,
76     101, 98,  95,  92,  89,  86,  83, 80,
77     77,  74,  71,  68,  65,  62,  59, 56,
78     53,  50,  47,  44,  41,  38,  35, 32,
79     30,  28,  26,  24,  22,  20,  18, 16,
80 };
81
82 const unsigned char vp8_mv_update_probs[2][19] =
83 {
84     {
85         237,
86         246,
87         253, 253, 254, 254, 254, 254, 254,
88         254, 254, 254, 254, 254, 250, 250, 252, 254, 254
89     },
90     {
91         231,
92         243,
93         245, 253, 254, 254, 254, 254, 254,
94         254, 254, 254, 254, 254, 251, 251, 254, 254, 254
95     }
96 };
97
98 const unsigned char vp8_default_mv_context[2][19] =
99 {
100     {
101         162,                                        /* is short */
102         128,                                        /* sign */
103         225, 146, 172, 147, 214,  39, 156,          /* short tree */
104         128, 129, 132,  75, 145, 178, 206, 239, 254, 254 /* long bits */
105     },
106
107     {
108         164,
109         128,
110         204, 170, 119, 235, 140, 230, 228,
111         128, 130, 130,  74, 148, 180, 203, 236, 254, 254
112
113     }
114 };
115
116 const unsigned char vp8_default_coef_probs[4][8][3][11] =
117 {
118     { /* Block Type ( 0 ) */
119         { /* Coeff Band ( 0 )*/
120             { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
121             { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
122             { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }
123         },
124         { /* Coeff Band ( 1 )*/
125             { 253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128 },
126             { 189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128 },
127             { 106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128 }
128         },
129         { /* Coeff Band ( 2 )*/
130             {   1,  98, 248, 255, 236, 226, 255, 255, 128, 128, 128 },
131             { 181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128 },
132             {  78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128 }
133         },
134         { /* Coeff Band ( 3 )*/
135             {   1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128 },
136             { 184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128 },
137             {  77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128 }
138         },
139         { /* Coeff Band ( 4 )*/
140             {   1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128 },
141             { 170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128 },
142             {  37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128 }
143         },
144         { /* Coeff Band ( 5 )*/
145             {   1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128 },
146             { 207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128 },
147             { 102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128 }
148         },
149         { /* Coeff Band ( 6 )*/
150             {   1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128 },
151             { 177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128 },
152             {  80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128 }
153         },
154         { /* Coeff Band ( 7 )*/
155             {   1,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
156             { 246,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
157             { 255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }
158         }
159     },
160     { /* Block Type ( 1 ) */
161         { /* Coeff Band ( 0 )*/
162             { 198,  35, 237, 223, 193, 187, 162, 160, 145, 155,  62 },
163             { 131,  45, 198, 221, 172, 176, 220, 157, 252, 221,   1 },
164             {  68,  47, 146, 208, 149, 167, 221, 162, 255, 223, 128 }
165         },
166         { /* Coeff Band ( 1 )*/
167             {   1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128 },
168             { 184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128 },
169             {  81,  99, 181, 242, 176, 190, 249, 202, 255, 255, 128 }
170         },
171         { /* Coeff Band ( 2 )*/
172             {   1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128 },
173             {  99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128 },
174             {  23,  91, 163, 242, 170, 187, 247, 210, 255, 255, 128 }
175         },
176         { /* Coeff Band ( 3 )*/
177             {   1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128 },
178             { 109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128 },
179             {  44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128 }
180         },
181         { /* Coeff Band ( 4 )*/
182             {   1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128 },
183             {  94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128 },
184             {  22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128 }
185         },
186         { /* Coeff Band ( 5 )*/
187             {   1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128 },
188             { 124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128 },
189             {  35,  77, 181, 251, 193, 211, 255, 205, 128, 128, 128 }
190         },
191         { /* Coeff Band ( 6 )*/
192             {   1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128 },
193             { 121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128 },
194             {  45,  99, 188, 251, 195, 217, 255, 224, 128, 128, 128 }
195         },
196         { /* Coeff Band ( 7 )*/
197             {   1,   1, 251, 255, 213, 255, 128, 128, 128, 128, 128 },
198             { 203,   1, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
199             { 137,   1, 177, 255, 224, 255, 128, 128, 128, 128, 128 }
200         }
201     },
202     { /* Block Type ( 2 ) */
203         { /* Coeff Band ( 0 )*/
204             { 253,   9, 248, 251, 207, 208, 255, 192, 128, 128, 128 },
205             { 175,  13, 224, 243, 193, 185, 249, 198, 255, 255, 128 },
206             {  73,  17, 171, 221, 161, 179, 236, 167, 255, 234, 128 }
207         },
208         { /* Coeff Band ( 1 )*/
209             {   1,  95, 247, 253, 212, 183, 255, 255, 128, 128, 128 },
210             { 239,  90, 244, 250, 211, 209, 255, 255, 128, 128, 128 },
211             { 155,  77, 195, 248, 188, 195, 255, 255, 128, 128, 128 }
212         },
213         { /* Coeff Band ( 2 )*/
214             {   1,  24, 239, 251, 218, 219, 255, 205, 128, 128, 128 },
215             { 201,  51, 219, 255, 196, 186, 128, 128, 128, 128, 128 },
216             {  69,  46, 190, 239, 201, 218, 255, 228, 128, 128, 128 }
217         },
218         { /* Coeff Band ( 3 )*/
219             {   1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128 },
220             { 223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128 },
221             { 141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128 }
222         },
223         { /* Coeff Band ( 4 )*/
224             {   1,  16, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
225             { 190,  36, 230, 255, 236, 255, 128, 128, 128, 128, 128 },
226             { 149,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 }
227         },
228         { /* Coeff Band ( 5 )*/
229             {   1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
230             { 247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
231             { 240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128 }
232         },
233         { /* Coeff Band ( 6 )*/
234             {   1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128 },
235             { 213,  62, 250, 255, 255, 128, 128, 128, 128, 128, 128 },
236             {  55,  93, 255, 128, 128, 128, 128, 128, 128, 128, 128 }
237         },
238         { /* Coeff Band ( 7 )*/
239             { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
240             { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
241             { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }
242         }
243     },
244     { /* Block Type ( 3 ) */
245         { /* Coeff Band ( 0 )*/
246             { 202,  24, 213, 235, 186, 191, 220, 160, 240, 175, 255 },
247             { 126,  38, 182, 232, 169, 184, 228, 174, 255, 187, 128 },
248             {  61,  46, 138, 219, 151, 178, 240, 170, 255, 216, 128 }
249         },
250         { /* Coeff Band ( 1 )*/
251             {   1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128 },
252             { 166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128 },
253             {  39,  77, 162, 232, 172, 180, 245, 178, 255, 255, 128 }
254         },
255         { /* Coeff Band ( 2 )*/
256             {   1,  52, 220, 246, 198, 199, 249, 220, 255, 255, 128 },
257             { 124,  74, 191, 243, 183, 193, 250, 221, 255, 255, 128 },
258             {  24,  71, 130, 219, 154, 170, 243, 182, 255, 255, 128 }
259         },
260         { /* Coeff Band ( 3 )*/
261             {   1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128 },
262             { 149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128 },
263             {  28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128 }
264         },
265         { /* Coeff Band ( 4 )*/
266             {   1,  81, 230, 252, 204, 203, 255, 192, 128, 128, 128 },
267             { 123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128 },
268             {  20,  95, 153, 243, 164, 173, 255, 203, 128, 128, 128 }
269         },
270         { /* Coeff Band ( 5 )*/
271             {   1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128 },
272             { 168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128 },
273             {  47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128 }
274         },
275         { /* Coeff Band ( 6 )*/
276             {   1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128 },
277             { 141,  84, 213, 252, 201, 202, 255, 219, 128, 128, 128 },
278             {  42,  80, 160, 240, 162, 185, 255, 205, 128, 128, 128 }
279         },
280         { /* Coeff Band ( 7 )*/
281             {   1,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
282             { 244,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
283             { 238,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 }
284         }
285     }
286 };
287
288 /* Work in progress recalibration of baseline rate tables based on
289  * the assumption that bits per mb is inversely proportional to the
290  * quantizer value.
291  * Note: this table value multiplied by 512
292  */
293 const int vp8_bits_per_mb[2][128] =
294 {
295     /* Intra case 450000/Qintra */
296     {
297         1125000,900000, 750000, 642857, 562500, 500000, 450000, 450000,
298         409090, 375000, 346153, 321428, 300000, 281250, 264705, 264705,
299         250000, 236842, 225000, 225000, 214285, 214285, 204545, 204545,
300         195652, 195652, 187500, 180000, 180000, 173076, 166666, 160714,
301         155172, 150000, 145161, 140625, 136363, 132352, 128571, 125000,
302         121621, 121621, 118421, 115384, 112500, 109756, 107142, 104651,
303         102272, 100000, 97826,  97826,  95744,  93750,  91836,  90000,
304         88235,  86538,  84905,  83333,  81818,  80357,  78947,  77586,
305         76271,  75000,  73770,  72580,  71428,  70312,  69230,  68181,
306         67164,  66176,  65217,  64285,  63380,  62500,  61643,  60810,
307         60000,  59210,  59210,  58441,  57692,  56962,  56250,  55555,
308         54878,  54216,  53571,  52941,  52325,  51724,  51136,  50561,
309         49450,  48387,  47368,  46875,  45918,  45000,  44554,  44117,
310         43269,  42452,  41666,  40909,  40178,  39473,  38793,  38135,
311         36885,  36290,  35714,  35156,  34615,  34090,  33582,  33088,
312         32608,  32142,  31468,  31034,  30405,  29801,  29220,  28662,
313     },
314
315     /* Inter case 285000/Qinter */
316     {
317         712500, 570000, 475000, 407142, 356250, 316666, 285000, 259090,
318         237500, 219230, 203571, 190000, 178125, 167647, 158333, 150000,
319         142500, 135714, 129545, 123913, 118750, 114000, 109615, 105555,
320         101785, 98275,  95000,  91935,  89062,  86363,  83823,  81428,
321         79166,  77027,  75000,  73076,  71250,  69512,  67857,  66279,
322         64772,  63333,  61956,  60638,  59375,  58163,  57000,  55882,
323         54807,  53773,  52777,  51818,  50892,  50000,  49137,  47500,
324         45967,  44531,  43181,  41911,  40714,  39583,  38513,  37500,
325         36538,  35625,  34756,  33928,  33139,  32386,  31666,  30978,
326         30319,  29687,  29081,  28500,  27941,  27403,  26886,  26388,
327         25909,  25446,  25000,  24568,  23949,  23360,  22800,  22265,
328         21755,  21268,  20802,  20357,  19930,  19520,  19127,  18750,
329         18387,  18037,  17701,  17378,  17065,  16764,  16473,  16101,
330         15745,  15405,  15079,  14766,  14467,  14179,  13902,  13636,
331         13380,  13133,  12895,  12666,  12445,  12179,  11924,  11632,
332         11445,  11220,  11003,  10795,  10594,  10401,  10215,  10035,
333     }
334 };
335
336 const unsigned short vp8_prob_cost[256] =
337 {
338     2047, 2047, 1791, 1641, 1535, 1452, 1385, 1328, 1279, 1235, 1196, 1161, 1129, 1099, 1072, 1046,
339     1023, 1000,  979,  959,  940,  922,  905,  889,  873,  858,  843,  829,  816,  803,  790,  778,
340     767,  755,  744,  733,  723,  713,  703,  693,  684,  675,  666,  657,  649,  641,  633,  625,
341     617,  609,  602,  594,  587,  580,  573,  567,  560,  553,  547,  541,  534,  528,  522,  516,
342     511,  505,  499,  494,  488,  483,  477,  472,  467,  462,  457,  452,  447,  442,  437,  433,
343     428,  424,  419,  415,  410,  406,  401,  397,  393,  389,  385,  381,  377,  373,  369,  365,
344     361,  357,  353,  349,  346,  342,  338,  335,  331,  328,  324,  321,  317,  314,  311,  307,
345     304,  301,  297,  294,  291,  288,  285,  281,  278,  275,  272,  269,  266,  263,  260,  257,
346     255,  252,  249,  246,  243,  240,  238,  235,  232,  229,  227,  224,  221,  219,  216,  214,
347     211,  208,  206,  203,  201,  198,  196,  194,  191,  189,  186,  184,  181,  179,  177,  174,
348     172,  170,  168,  165,  163,  161,  159,  156,  154,  152,  150,  148,  145,  143,  141,  139,
349     137,  135,  133,  131,  129,  127,  125,  123,  121,  119,  117,  115,  113,  111,  109,  107,
350     105,  103,  101,   99,   97,   95,   93,   92,   90,   88,   86,   84,   82,   81,   79,   77,
351     75,   73,   72,   70,   68,   66,   65,   63,   61,   60,   58,   56,   55,   53,   51,   50,
352     48,   46,   45,   43,   41,   40,   38,   37,   35,   33,   32,   30,   29,   27,   25,   24,
353     22,   21,   19,   18,   16,   15,   13,   12,   10,    9,    7,    6,    4,    3,    1,   1
354 };
355
356 const unsigned char vp8_coef_update_probs[4][8][3][11] =
357 {
358     {
359         {
360             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
361             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
362             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
363         },
364         {
365             {176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
366             {223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255, },
367             {249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, },
368         },
369         {
370             {255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255, },
371             {234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
372             {253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
373         },
374         {
375             {255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
376             {239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
377             {254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
378         },
379         {
380             {255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
381             {251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
382             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
383         },
384         {
385             {255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
386             {251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
387             {254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
388         },
389         {
390             {255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255, },
391             {250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255, },
392             {254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
393         },
394         {
395             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
396             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
397             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
398         },
399     },
400     {
401         {
402             {217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
403             {225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255, },
404             {234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255, },
405         },
406         {
407             {255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
408             {223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
409             {238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, },
410         },
411         {
412             {255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
413             {249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
414             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
415         },
416         {
417             {255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
418             {247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
419             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
420         },
421         {
422             {255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
423             {252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
424             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
425         },
426         {
427             {255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
428             {253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
429             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
430         },
431         {
432             {255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, },
433             {250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
434             {254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
435         },
436         {
437             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
438             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
439             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
440         },
441     },
442     {
443         {
444             {186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255, },
445             {234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255, },
446             {251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255, },
447         },
448         {
449             {255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
450             {236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
451             {251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255, },
452         },
453         {
454             {255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
455             {254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
456             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
457         },
458         {
459             {255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
460             {254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
461             {254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
462         },
463         {
464             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
465             {254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
466             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
467         },
468         {
469             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
470             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
471             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
472         },
473         {
474             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
475             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
476             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
477         },
478         {
479             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
480             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
481             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
482         },
483     },
484     {
485         {
486             {248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
487             {250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255, },
488             {248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255, },
489         },
490         {
491             {255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, },
492             {246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, },
493             {252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255, },
494         },
495         {
496             {255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255, },
497             {248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, },
498             {253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, },
499         },
500         {
501             {255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
502             {245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
503             {253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
504         },
505         {
506             {255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255, },
507             {252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
508             {255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
509         },
510         {
511             {255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
512             {249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
513             {255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
514         },
515         {
516             {255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, },
517             {250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
518             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
519         },
520         {
521             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
522             {254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
523             {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
524         },
525     },
526 };
527
528 const unsigned char vp8_probs_update_flag[4][8][3][11] =
529 {
530     {
531         {{0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}},
532         {{1,1,1,0,0,0,0,0,0,0,0}, {1,1,1,1,0,0,0,0,0,0,0}, {1,1,1,1,1,0,0,0,0,0,0}},
533         {{0,1,1,1,0,0,0,0,0,0,0}, {1,1,1,0,0,0,0,0,0,0,0}, {1,1,1,0,0,0,0,0,0,0,0}},
534         {{0,1,1,1,0,0,0,0,0,0,0}, {1,1,1,0,0,0,0,0,0,0,0}, {1,1,1,0,0,0,0,0,0,0,0}},
535         {{0,1,1,1,0,0,0,0,0,0,0}, {1,1,1,0,0,0,0,0,0,0,0}, {1,1,1,0,0,0,0,0,0,0,0}},
536         {{0,1,1,1,0,0,0,0,0,0,0}, {1,1,1,0,0,0,0,0,0,0,0}, {1,1,1,0,0,0,0,0,0,0,0}},
537         {{0,1,1,1,0,0,0,0,0,0,0}, {1,1,1,0,0,0,0,0,0,0,0}, {1,1,1,0,0,0,0,0,0,0,0}},
538         {{0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}},
539     },
540     {
541         {{1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}},
542         {{0,1,1,0,0,0,0,0,0,0,0}, {1,1,1,0,0,0,0,0,0,0,0}, {1,1,1,1,0,0,0,0,0,0,0}},
543         {{0,1,1,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}},
544         {{0,1,1,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}},
545         {{0,1,1,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}},
546         {{0,1,1,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}},
547         {{0,1,1,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}},
548         {{0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}},
549     },
550     {
551         {{1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}},
552         {{0,1,1,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}},
553         {{0,1,1,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}},
554         {{0,1,1,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}},
555         {{0,1,1,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}},
556         {{0,1,1,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}},
557         {{0,1,1,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}},
558         {{0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}},
559     },
560     {
561         {{1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}},
562         {{0,1,1,0,0,0,0,0,0,0,0}, {1,1,1,0,0,0,0,0,0,0,0}, {1,1,1,1,0,0,0,0,0,0,0}},
563         {{0,1,1,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}},
564         {{0,1,1,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}},
565         {{0,1,1,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}},
566         {{0,1,1,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}},
567         {{0,1,1,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0}},
568         {{0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}}
569     }
570 };