OSDN Git Service

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