xref: /rockchip-linux_mpp/mpp/codec/dec/vp9/vp9data.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1 /*
2 *
3 * Copyright 2015 Rockchip Electronics Co. LTD
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *      http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 
18 
19 #ifndef VP9DATA_H
20 #define VP9DATA_H
21 
22 #include <stdint.h>
23 #include "vp9.h"
24 
25 enum BlockPartition {
26     PARTITION_NONE,    // [ ] <-.
27     PARTITION_H,       // [-]   |
28     PARTITION_V,       // [|]   |
29     PARTITION_SPLIT,   // [+] --'
30 };
31 
32 static const RK_S8 vp9_partition_tree[3][2] = {
33     { -PARTITION_NONE, 1 },               // '0'
34     { -PARTITION_H, 2 },                 // '10'
35     { -PARTITION_V, -PARTITION_SPLIT }, // '110', '111'
36 };
37 
38 static const RK_U8 vp9_default_kf_partition_probs[4][4][3] = {
39     { /* 64x64 -> 32x32 */
40         { 174,  35,  49 } /* a/l both not split */,
41         {  68,  11,  27 } /* a split, l not split */,
42         {  57,  15,   9 } /* l split, a not split */,
43         {  12,   3,   3 } /* a/l both split */
44     }, { /* 32x32 -> 16x16 */
45         { 150,  40,  39 } /* a/l both not split */,
46         {  78,  12,  26 } /* a split, l not split */,
47         {  67,  33,  11 } /* l split, a not split */,
48         {  24,   7,   5 } /* a/l both split */,
49     }, { /* 16x16 -> 8x8 */
50         { 149,  53,  53 } /* a/l both not split */,
51         {  94,  20,  48 } /* a split, l not split */,
52         {  83,  53,  24 } /* l split, a not split */,
53         {  52,  18,  18 } /* a/l both split */,
54     }, { /* 8x8 -> 4x4 */
55         { 158,  97,  94 } /* a/l both not split */,
56         {  93,  24,  99 } /* a split, l not split */,
57         {  85, 119,  44 } /* l split, a not split */,
58         {  62,  59,  67 } /* a/l both split */,
59     },
60 };
61 
62 static const RK_S8 vp9_segmentation_tree[7][2] = {
63     { 1, 2 },
64     { 3, 4 },
65     { 5, 6 },
66     { -0, -1 }, // '00x'
67     { -2, -3 }, // '01x'
68     { -4, -5 }, // '10x'
69     { -6, -7 }, // '11x'
70 };
71 
72 static const RK_S8 vp9_intramode_tree[9][2] = {
73     { -DC_PRED, 1 },                                  // '0'
74     { -TM_VP8_PRED, 2 },                             // '10'
75     { -VERT_PRED, 3 },                              // '110'
76     { 4, 6 },
77     { -HOR_PRED, 5 },                             // '11100'
78     { -DIAG_DOWN_RIGHT_PRED, -VERT_RIGHT_PRED }, // '11101x'
79     { -DIAG_DOWN_LEFT_PRED, 7 },                  // '11110'
80     { -VERT_LEFT_PRED, 8 },                      // '111110'
81     { -HOR_DOWN_PRED, -HOR_UP_PRED },           // '111111x'
82 };
83 
84 static const RK_U8 vp9_default_kf_ymode_probs[10][10][9] = {
85     { /* above = v */
86         {  43,  46, 168, 134, 107, 128,  69, 142,  92 } /* left = v */,
87         {  44,  29,  68, 159, 201, 177,  50,  57,  77 } /* left = h */,
88         {  63,  36, 126, 146, 123, 158,  60,  90,  96 } /* left = dc */,
89         {  58,  38,  76, 114,  97, 172,  78, 133,  92 } /* left = d45 */,
90         {  46,  41,  76, 140,  63, 184,  69, 112,  57 } /* left = d135 */,
91         {  38,  32,  85, 140,  46, 112,  54, 151, 133 } /* left = d117 */,
92         {  39,  27,  61, 131, 110, 175,  44,  75, 136 } /* left = d153 */,
93         {  47,  35,  80, 100,  74, 143,  64, 163,  74 } /* left = d63 */,
94         {  52,  30,  74, 113, 130, 175,  51,  64,  58 } /* left = d27 */,
95         {  36,  61, 116, 114, 128, 162,  80, 125,  82 } /* left = tm */
96     }, { /* above = h */
97         {  55,  44,  68, 166, 179, 192,  57,  57, 108 } /* left = v */,
98         {  42,  26,  11, 199, 241, 228,  23,  15,  85 } /* left = h */,
99         {  82,  26,  26, 171, 208, 204,  44,  32, 105 } /* left = dc */,
100         {  68,  42,  19, 131, 160, 199,  55,  52,  83 } /* left = d45 */,
101         {  58,  50,  25, 139, 115, 232,  39,  52, 118 } /* left = d135 */,
102         {  50,  35,  33, 153, 104, 162,  64,  59, 131 } /* left = d117 */,
103         {  44,  24,  16, 150, 177, 202,  33,  19, 156 } /* left = d153 */,
104         {  53,  49,  21, 110, 116, 168,  59,  80,  76 } /* left = d63 */,
105         {  55,  27,  12, 153, 203, 218,  26,  27,  49 } /* left = d27 */,
106         {  38,  72,  19, 168, 203, 212,  50,  50, 107 } /* left = tm */
107     }, { /* above = dc */
108         {  92,  45, 102, 136, 116, 180,  74,  90, 100 } /* left = v */,
109         {  73,  32,  19, 187, 222, 215,  46,  34, 100 } /* left = h */,
110         { 137,  30,  42, 148, 151, 207,  70,  52,  91 } /* left = dc */,
111         {  91,  30,  32, 116, 121, 186,  93,  86,  94 } /* left = d45 */,
112         {  72,  35,  36, 149,  68, 206,  68,  63, 105 } /* left = d135 */,
113         {  73,  31,  28, 138,  57, 124,  55, 122, 151 } /* left = d117 */,
114         {  67,  23,  21, 140, 126, 197,  40,  37, 171 } /* left = d153 */,
115         {  74,  32,  27, 107,  86, 160,  63, 134, 102 } /* left = d63 */,
116         {  86,  27,  28, 128, 154, 212,  45,  43,  53 } /* left = d27 */,
117         {  59,  67,  44, 140, 161, 202,  78,  67, 119 } /* left = tm */
118     }, { /* above = d45 */
119         {  59,  38,  83, 112, 103, 162,  98, 136,  90 } /* left = v */,
120         {  62,  30,  23, 158, 200, 207,  59,  57,  50 } /* left = h */,
121         { 103,  26,  36, 129, 132, 201,  83,  80,  93 } /* left = dc */,
122         {  67,  30,  29,  84,  86, 191, 102,  91,  59 } /* left = d45 */,
123         {  60,  32,  33, 112,  71, 220,  64,  89, 104 } /* left = d135 */,
124         {  53,  26,  34, 130,  56, 149,  84, 120, 103 } /* left = d117 */,
125         {  53,  21,  23, 133, 109, 210,  56,  77, 172 } /* left = d153 */,
126         {  61,  29,  29,  93,  97, 165,  83, 175, 162 } /* left = d63 */,
127         {  77,  19,  29, 112, 142, 228,  55,  66,  36 } /* left = d27 */,
128         {  47,  47,  43, 114, 137, 181, 100,  99,  95 } /* left = tm */
129     }, { /* above = d135 */
130         {  53,  40,  55, 139,  69, 183,  61,  80, 110 } /* left = v */,
131         {  40,  29,  19, 161, 180, 207,  43,  24,  91 } /* left = h */,
132         {  69,  23,  29, 128,  83, 199,  46,  44, 101 } /* left = dc */,
133         {  60,  34,  19, 105,  61, 198,  53,  64,  89 } /* left = d45 */,
134         {  52,  31,  22, 158,  40, 209,  58,  62,  89 } /* left = d135 */,
135         {  44,  31,  29, 147,  46, 158,  56, 102, 198 } /* left = d117 */,
136         {  35,  19,  12, 135,  87, 209,  41,  45, 167 } /* left = d153 */,
137         {  51,  38,  25, 113,  58, 164,  70,  93,  97 } /* left = d63 */,
138         {  55,  25,  21, 118,  95, 215,  38,  39,  66 } /* left = d27 */,
139         {  47,  54,  34, 146, 108, 203,  72, 103, 151 } /* left = tm */
140     }, { /* above = d117 */
141         {  46,  27,  80, 150,  55, 124,  55, 121, 135 } /* left = v */,
142         {  36,  23,  27, 165, 149, 166,  54,  64, 118 } /* left = h */,
143         {  64,  19,  37, 156,  66, 138,  49,  95, 133 } /* left = dc */,
144         {  53,  21,  36, 131,  63, 163,  60, 109,  81 } /* left = d45 */,
145         {  40,  26,  35, 154,  40, 185,  51,  97, 123 } /* left = d135 */,
146         {  35,  19,  34, 179,  19,  97,  48, 129, 124 } /* left = d117 */,
147         {  36,  20,  26, 136,  62, 164,  33,  77, 154 } /* left = d153 */,
148         {  45,  26,  28, 129,  45, 129,  49, 147, 123 } /* left = d63 */,
149         {  45,  18,  32, 130,  90, 157,  40,  79,  91 } /* left = d27 */,
150         {  38,  44,  51, 136,  74, 162,  57,  97, 121 } /* left = tm */
151     }, { /* above = d153 */
152         {  56,  39,  58, 133, 117, 173,  48,  53, 187 } /* left = v */,
153         {  35,  21,  12, 161, 212, 207,  20,  23, 145 } /* left = h */,
154         {  75,  17,  22, 136, 138, 185,  32,  34, 166 } /* left = dc */,
155         {  56,  29,  19, 117, 109, 181,  55,  68, 112 } /* left = d45 */,
156         {  47,  29,  17, 153,  64, 220,  59,  51, 114 } /* left = d135 */,
157         {  46,  16,  24, 136,  76, 147,  41,  64, 172 } /* left = d117 */,
158         {  34,  17,  11, 108, 152, 187,  13,  15, 209 } /* left = d153 */,
159         {  55,  30,  18, 122,  79, 179,  44,  88, 116 } /* left = d63 */,
160         {  51,  24,  14, 115, 133, 209,  32,  26, 104 } /* left = d27 */,
161         {  37,  49,  25, 129, 168, 164,  41,  54, 148 } /* left = tm */
162     }, { /* above = d63 */
163         {  48,  34,  86, 101,  92, 146,  78, 179, 134 } /* left = v */,
164         {  47,  22,  24, 138, 187, 178,  68,  69,  59 } /* left = h */,
165         {  78,  23,  39, 111, 117, 170,  74, 124,  94 } /* left = dc */,
166         {  56,  25,  33, 105, 112, 187,  95, 177, 129 } /* left = d45 */,
167         {  48,  31,  27, 114,  63, 183,  82, 116,  56 } /* left = d135 */,
168         {  43,  28,  37, 121,  63, 123,  61, 192, 169 } /* left = d117 */,
169         {  42,  17,  24, 109,  97, 177,  56,  76, 122 } /* left = d153 */,
170         {  46,  23,  32,  74,  86, 150,  67, 183,  88 } /* left = d63 */,
171         {  58,  18,  28, 105, 139, 182,  70,  92,  63 } /* left = d27 */,
172         {  36,  38,  48,  92, 122, 165,  88, 137,  91 } /* left = tm */
173     }, { /* above = d27 */
174         {  62,  44,  61, 123, 105, 189,  48,  57,  64 } /* left = v */,
175         {  47,  25,  17, 175, 222, 220,  24,  30,  86 } /* left = h */,
176         {  82,  22,  32, 127, 143, 213,  39,  41,  70 } /* left = dc */,
177         {  68,  36,  17, 106, 102, 206,  59,  74,  74 } /* left = d45 */,
178         {  57,  39,  23, 151,  68, 216,  55,  63,  58 } /* left = d135 */,
179         {  49,  30,  35, 141,  70, 168,  82,  40, 115 } /* left = d117 */,
180         {  51,  25,  15, 136, 129, 202,  38,  35, 139 } /* left = d153 */,
181         {  59,  39,  19, 114,  75, 180,  77, 104,  42 } /* left = d63 */,
182         {  68,  26,  16, 111, 141, 215,  29,  28,  28 } /* left = d27 */,
183         {  40,  61,  26, 126, 152, 206,  61,  59,  93 } /* left = tm */
184     }, { /* above = tm */
185         {  44,  78, 115, 132, 119, 173,  71, 112,  93 } /* left = v */,
186         {  39,  38,  21, 184, 227, 206,  42,  32,  64 } /* left = h */,
187         {  65,  70,  60, 155, 159, 199,  61,  60,  81 } /* left = dc */,
188         {  58,  47,  36, 124, 137, 193,  80,  82,  78 } /* left = d45 */,
189         {  49,  50,  35, 144,  95, 205,  63,  78,  59 } /* left = d135 */,
190         {  41,  53,  52, 148,  71, 142,  65, 128,  51 } /* left = d117 */,
191         {  40,  36,  28, 143, 143, 202,  40,  55, 137 } /* left = d153 */,
192         {  42,  44,  44, 104, 105, 164,  64, 130,  80 } /* left = d63 */,
193         {  52,  34,  29, 129, 183, 227,  42,  35,  43 } /* left = d27 */,
194         {  43,  81,  53, 140, 169, 204,  68,  84,  72 } /* left = tm */
195     }
196 };
197 
198 static const RK_U8 vp9_default_kf_uvmode_probs[10][9] = {
199     { 118,  15, 123, 148, 131, 101,  44,  93, 131 } /* y = v */,
200     { 113,  12,  23, 188, 226, 142,  26,  32, 125 } /* y = h */,
201     { 144,  11,  54, 157, 195, 130,  46,  58, 108 } /* y = dc */,
202     { 120,  11,  50, 123, 163, 135,  64,  77, 103 } /* y = d45 */,
203     { 113,   9,  36, 155, 111, 157,  32,  44, 161 } /* y = d135 */,
204     { 116,   9,  55, 176,  76,  96,  37,  61, 149 } /* y = d117 */,
205     { 115,   9,  28, 141, 161, 167,  21,  25, 193 } /* y = d153 */,
206     { 116,  12,  64, 120, 140, 125,  49, 115, 121 } /* y = d63 */,
207     { 120,  12,  32, 145, 195, 142,  32,  38,  86 } /* y = d27 */,
208     { 102,  19,  66, 162, 182, 122,  35,  59, 128 } /* y = tm */
209 };
210 
211 enum InterPredMode {
212     NEARESTMV = 10,
213     NEARMV = 11,
214     ZEROMV = 12,
215     NEWMV = 13,
216 };
217 
218 
219 static const RK_S16 vp9_dc_qlookup[3][256] = {
220     {
221         4,     8,     8,     9,    10,    11,    12,    12,
222         13,    14,    15,    16,    17,    18,    19,    19,
223         20,    21,    22,    23,    24,    25,    26,    26,
224         27,    28,    29,    30,    31,    32,    32,    33,
225         34,    35,    36,    37,    38,    38,    39,    40,
226         41,    42,    43,    43,    44,    45,    46,    47,
227         48,    48,    49,    50,    51,    52,    53,    53,
228         54,    55,    56,    57,    57,    58,    59,    60,
229         61,    62,    62,    63,    64,    65,    66,    66,
230         67,    68,    69,    70,    70,    71,    72,    73,
231         74,    74,    75,    76,    77,    78,    78,    79,
232         80,    81,    81,    82,    83,    84,    85,    85,
233         87,    88,    90,    92,    93,    95,    96,    98,
234         99,   101,   102,   104,   105,   107,   108,   110,
235         111,   113,   114,   116,   117,   118,   120,   121,
236         123,   125,   127,   129,   131,   134,   136,   138,
237         140,   142,   144,   146,   148,   150,   152,   154,
238         156,   158,   161,   164,   166,   169,   172,   174,
239         177,   180,   182,   185,   187,   190,   192,   195,
240         199,   202,   205,   208,   211,   214,   217,   220,
241         223,   226,   230,   233,   237,   240,   243,   247,
242         250,   253,   257,   261,   265,   269,   272,   276,
243         280,   284,   288,   292,   296,   300,   304,   309,
244         313,   317,   322,   326,   330,   335,   340,   344,
245         349,   354,   359,   364,   369,   374,   379,   384,
246         389,   395,   400,   406,   411,   417,   423,   429,
247         435,   441,   447,   454,   461,   467,   475,   482,
248         489,   497,   505,   513,   522,   530,   539,   549,
249         559,   569,   579,   590,   602,   614,   626,   640,
250         654,   668,   684,   700,   717,   736,   755,   775,
251         796,   819,   843,   869,   896,   925,   955,   988,
252         1022,  1058,  1098,  1139,  1184,  1232,  1282,  1336,
253     }, {
254         4,     9,    10,    13,    15,    17,    20,    22,
255         25,    28,    31,    34,    37,    40,    43,    47,
256         50,    53,    57,    60,    64,    68,    71,    75,
257         78,    82,    86,    90,    93,    97,   101,   105,
258         109,   113,   116,   120,   124,   128,   132,   136,
259         140,   143,   147,   151,   155,   159,   163,   166,
260         170,   174,   178,   182,   185,   189,   193,   197,
261         200,   204,   208,   212,   215,   219,   223,   226,
262         230,   233,   237,   241,   244,   248,   251,   255,
263         259,   262,   266,   269,   273,   276,   280,   283,
264         287,   290,   293,   297,   300,   304,   307,   310,
265         314,   317,   321,   324,   327,   331,   334,   337,
266         343,   350,   356,   362,   369,   375,   381,   387,
267         394,   400,   406,   412,   418,   424,   430,   436,
268         442,   448,   454,   460,   466,   472,   478,   484,
269         490,   499,   507,   516,   525,   533,   542,   550,
270         559,   567,   576,   584,   592,   601,   609,   617,
271         625,   634,   644,   655,   666,   676,   687,   698,
272         708,   718,   729,   739,   749,   759,   770,   782,
273         795,   807,   819,   831,   844,   856,   868,   880,
274         891,   906,   920,   933,   947,   961,   975,   988,
275         1001,  1015,  1030,  1045,  1061,  1076,  1090,  1105,
276         1120,  1137,  1153,  1170,  1186,  1202,  1218,  1236,
277         1253,  1271,  1288,  1306,  1323,  1342,  1361,  1379,
278         1398,  1416,  1436,  1456,  1476,  1496,  1516,  1537,
279         1559,  1580,  1601,  1624,  1647,  1670,  1692,  1717,
280         1741,  1766,  1791,  1817,  1844,  1871,  1900,  1929,
281         1958,  1990,  2021,  2054,  2088,  2123,  2159,  2197,
282         2236,  2276,  2319,  2363,  2410,  2458,  2508,  2561,
283         2616,  2675,  2737,  2802,  2871,  2944,  3020,  3102,
284         3188,  3280,  3375,  3478,  3586,  3702,  3823,  3953,
285         4089,  4236,  4394,  4559,  4737,  4929,  5130,  5347,
286     }, {
287         4,    12,    18,    25,    33,    41,    50,    60,
288         70,    80,    91,   103,   115,   127,   140,   153,
289         166,   180,   194,   208,   222,   237,   251,   266,
290         281,   296,   312,   327,   343,   358,   374,   390,
291         405,   421,   437,   453,   469,   484,   500,   516,
292         532,   548,   564,   580,   596,   611,   627,   643,
293         659,   674,   690,   706,   721,   737,   752,   768,
294         783,   798,   814,   829,   844,   859,   874,   889,
295         904,   919,   934,   949,   964,   978,   993,  1008,
296         1022,  1037,  1051,  1065,  1080,  1094,  1108,  1122,
297         1136,  1151,  1165,  1179,  1192,  1206,  1220,  1234,
298         1248,  1261,  1275,  1288,  1302,  1315,  1329,  1342,
299         1368,  1393,  1419,  1444,  1469,  1494,  1519,  1544,
300         1569,  1594,  1618,  1643,  1668,  1692,  1717,  1741,
301         1765,  1789,  1814,  1838,  1862,  1885,  1909,  1933,
302         1957,  1992,  2027,  2061,  2096,  2130,  2165,  2199,
303         2233,  2267,  2300,  2334,  2367,  2400,  2434,  2467,
304         2499,  2532,  2575,  2618,  2661,  2704,  2746,  2788,
305         2830,  2872,  2913,  2954,  2995,  3036,  3076,  3127,
306         3177,  3226,  3275,  3324,  3373,  3421,  3469,  3517,
307         3565,  3621,  3677,  3733,  3788,  3843,  3897,  3951,
308         4005,  4058,  4119,  4181,  4241,  4301,  4361,  4420,
309         4479,  4546,  4612,  4677,  4742,  4807,  4871,  4942,
310         5013,  5083,  5153,  5222,  5291,  5367,  5442,  5517,
311         5591,  5665,  5745,  5825,  5905,  5984,  6063,  6149,
312         6234,  6319,  6404,  6495,  6587,  6678,  6769,  6867,
313         6966,  7064,  7163,  7269,  7376,  7483,  7599,  7715,
314         7832,  7958,  8085,  8214,  8352,  8492,  8635,  8788,
315         8945,  9104,  9275,  9450,  9639,  9832, 10031, 10245,
316         10465, 10702, 10946, 11210, 11482, 11776, 12081, 12409,
317         12750, 13118, 13501, 13913, 14343, 14807, 15290, 15812,
318         16356, 16943, 17575, 18237, 18949, 19718, 20521, 21387,
319     }
320 };
321 
322 static const RK_S16 vp9_ac_qlookup[3][256] = {
323     {
324         4,     8,     9,    10,    11,    12,    13,    14,
325         15,    16,    17,    18,    19,    20,    21,    22,
326         23,    24,    25,    26,    27,    28,    29,    30,
327         31,    32,    33,    34,    35,    36,    37,    38,
328         39,    40,    41,    42,    43,    44,    45,    46,
329         47,    48,    49,    50,    51,    52,    53,    54,
330         55,    56,    57,    58,    59,    60,    61,    62,
331         63,    64,    65,    66,    67,    68,    69,    70,
332         71,    72,    73,    74,    75,    76,    77,    78,
333         79,    80,    81,    82,    83,    84,    85,    86,
334         87,    88,    89,    90,    91,    92,    93,    94,
335         95,    96,    97,    98,    99,   100,   101,   102,
336         104,   106,   108,   110,   112,   114,   116,   118,
337         120,   122,   124,   126,   128,   130,   132,   134,
338         136,   138,   140,   142,   144,   146,   148,   150,
339         152,   155,   158,   161,   164,   167,   170,   173,
340         176,   179,   182,   185,   188,   191,   194,   197,
341         200,   203,   207,   211,   215,   219,   223,   227,
342         231,   235,   239,   243,   247,   251,   255,   260,
343         265,   270,   275,   280,   285,   290,   295,   300,
344         305,   311,   317,   323,   329,   335,   341,   347,
345         353,   359,   366,   373,   380,   387,   394,   401,
346         408,   416,   424,   432,   440,   448,   456,   465,
347         474,   483,   492,   501,   510,   520,   530,   540,
348         550,   560,   571,   582,   593,   604,   615,   627,
349         639,   651,   663,   676,   689,   702,   715,   729,
350         743,   757,   771,   786,   801,   816,   832,   848,
351         864,   881,   898,   915,   933,   951,   969,   988,
352         1007,  1026,  1046,  1066,  1087,  1108,  1129,  1151,
353         1173,  1196,  1219,  1243,  1267,  1292,  1317,  1343,
354         1369,  1396,  1423,  1451,  1479,  1508,  1537,  1567,
355         1597,  1628,  1660,  1692,  1725,  1759,  1793,  1828,
356     }, {
357         4,     9,    11,    13,    16,    18,    21,    24,
358         27,    30,    33,    37,    40,    44,    48,    51,
359         55,    59,    63,    67,    71,    75,    79,    83,
360         88,    92,    96,   100,   105,   109,   114,   118,
361         122,   127,   131,   136,   140,   145,   149,   154,
362         158,   163,   168,   172,   177,   181,   186,   190,
363         195,   199,   204,   208,   213,   217,   222,   226,
364         231,   235,   240,   244,   249,   253,   258,   262,
365         267,   271,   275,   280,   284,   289,   293,   297,
366         302,   306,   311,   315,   319,   324,   328,   332,
367         337,   341,   345,   349,   354,   358,   362,   367,
368         371,   375,   379,   384,   388,   392,   396,   401,
369         409,   417,   425,   433,   441,   449,   458,   466,
370         474,   482,   490,   498,   506,   514,   523,   531,
371         539,   547,   555,   563,   571,   579,   588,   596,
372         604,   616,   628,   640,   652,   664,   676,   688,
373         700,   713,   725,   737,   749,   761,   773,   785,
374         797,   809,   825,   841,   857,   873,   889,   905,
375         922,   938,   954,   970,   986,  1002,  1018,  1038,
376         1058,  1078,  1098,  1118,  1138,  1158,  1178,  1198,
377         1218,  1242,  1266,  1290,  1314,  1338,  1362,  1386,
378         1411,  1435,  1463,  1491,  1519,  1547,  1575,  1603,
379         1631,  1663,  1695,  1727,  1759,  1791,  1823,  1859,
380         1895,  1931,  1967,  2003,  2039,  2079,  2119,  2159,
381         2199,  2239,  2283,  2327,  2371,  2415,  2459,  2507,
382         2555,  2603,  2651,  2703,  2755,  2807,  2859,  2915,
383         2971,  3027,  3083,  3143,  3203,  3263,  3327,  3391,
384         3455,  3523,  3591,  3659,  3731,  3803,  3876,  3952,
385         4028,  4104,  4184,  4264,  4348,  4432,  4516,  4604,
386         4692,  4784,  4876,  4972,  5068,  5168,  5268,  5372,
387         5476,  5584,  5692,  5804,  5916,  6032,  6148,  6268,
388         6388,  6512,  6640,  6768,  6900,  7036,  7172,  7312,
389     }, {
390         4,    13,    19,    27,    35,    44,    54,    64,
391         75,    87,    99,   112,   126,   139,   154,   168,
392         183,   199,   214,   230,   247,   263,   280,   297,
393         314,   331,   349,   366,   384,   402,   420,   438,
394         456,   475,   493,   511,   530,   548,   567,   586,
395         604,   623,   642,   660,   679,   698,   716,   735,
396         753,   772,   791,   809,   828,   846,   865,   884,
397         902,   920,   939,   957,   976,   994,  1012,  1030,
398         1049,  1067,  1085,  1103,  1121,  1139,  1157,  1175,
399         1193,  1211,  1229,  1246,  1264,  1282,  1299,  1317,
400         1335,  1352,  1370,  1387,  1405,  1422,  1440,  1457,
401         1474,  1491,  1509,  1526,  1543,  1560,  1577,  1595,
402         1627,  1660,  1693,  1725,  1758,  1791,  1824,  1856,
403         1889,  1922,  1954,  1987,  2020,  2052,  2085,  2118,
404         2150,  2183,  2216,  2248,  2281,  2313,  2346,  2378,
405         2411,  2459,  2508,  2556,  2605,  2653,  2701,  2750,
406         2798,  2847,  2895,  2943,  2992,  3040,  3088,  3137,
407         3185,  3234,  3298,  3362,  3426,  3491,  3555,  3619,
408         3684,  3748,  3812,  3876,  3941,  4005,  4069,  4149,
409         4230,  4310,  4390,  4470,  4550,  4631,  4711,  4791,
410         4871,  4967,  5064,  5160,  5256,  5352,  5448,  5544,
411         5641,  5737,  5849,  5961,  6073,  6185,  6297,  6410,
412         6522,  6650,  6778,  6906,  7034,  7162,  7290,  7435,
413         7579,  7723,  7867,  8011,  8155,  8315,  8475,  8635,
414         8795,  8956,  9132,  9308,  9484,  9660,  9836, 10028,
415         10220, 10412, 10604, 10812, 11020, 11228, 11437, 11661,
416         11885, 12109, 12333, 12573, 12813, 13053, 13309, 13565,
417         13821, 14093, 14365, 14637, 14925, 15213, 15502, 15806,
418         16110, 16414, 16734, 17054, 17390, 17726, 18062, 18414,
419         18766, 19134, 19502, 19886, 20270, 20670, 21070, 21486,
420         21902, 22334, 22766, 23214, 23662, 24126, 24590, 25070,
421         25551, 26047, 26559, 27071, 27599, 28143, 28687, 29247,
422     }
423 };
424 
425 
426 typedef struct {
427     RK_U8 y_mode[4][9];
428     RK_U8 uv_mode[10][9];
429     RK_U8 filter[4][2];
430     RK_U8 mv_mode[7][3];
431     RK_U8 intra[4];
432     RK_U8 comp[5];
433     RK_U8 single_ref[5][2];
434     RK_U8 comp_ref[5];
435     RK_U8 tx32p[2][3];
436     RK_U8 tx16p[2][2];
437     RK_U8 tx8p[2];
438     RK_U8 skip[3];
439     RK_U8 mv_joint[3];
440     struct {
441         RK_U8 sign;
442         RK_U8 classes[10];
443         RK_U8 class0;
444         RK_U8 bits[10];
445         RK_U8 class0_fp[2][3];
446         RK_U8 fp[3];
447         RK_U8 class0_hp;
448         RK_U8 hp;
449     } mv_comp[2];
450     RK_U8 partition[4][4][3];
451 } prob_context;
452 
453 static const prob_context vp9_default_probs = {
454     { /* y_mode */
455         {  65,  32,  18, 144, 162, 194,  41,  51,  98 } /* bsize < 8x8 */,
456         { 132,  68,  18, 165, 217, 196,  45,  40,  78 } /* bsize < 16x16 */,
457         { 173,  80,  19, 176, 240, 193,  64,  35,  46 } /* bsize < 32x32 */,
458         { 221, 135,  38, 194, 248, 121,  96,  85,  29 } /* bsize >= 32x32 */
459     }, { /* uv_mode */
460         {  48,  12, 154, 155, 139,  90,  34, 117, 119 } /* y = v */,
461         {  67,   6,  25, 204, 243, 158,  13,  21,  96 } /* y = h */,
462         { 120,   7,  76, 176, 208, 126,  28,  54, 103 } /* y = dc */,
463         {  97,   5,  44, 131, 176, 139,  48,  68,  97 } /* y = d45 */,
464         {  83,   5,  42, 156, 111, 152,  26,  49, 152 } /* y = d135 */,
465         {  80,   5,  58, 178,  74,  83,  33,  62, 145 } /* y = d117 */,
466         {  86,   5,  32, 154, 192, 168,  14,  22, 163 } /* y = d153 */,
467         {  77,   7,  64, 116, 132, 122,  37, 126, 120 } /* y = d63 */,
468         {  85,   5,  32, 156, 216, 148,  19,  29,  73 } /* y = d207 */,
469         { 101,  21, 107, 181, 192, 103,  19,  67, 125 } /* y = tm */
470     }, { /* filter */
471         { 235, 162, },
472         {  36, 255, },
473         {  34,   3, },
474         { 149, 144, },
475     }, { /* mv_mode */
476         {  2, 173,  34},  // 0 = both zero mv
477         {  7, 145,  85},  // 1 = one zero mv + one a predicted mv
478         {  7, 166,  63},  // 2 = two predicted mvs
479         {  7,  94,  66},  // 3 = one predicted/zero and one new mv
480         {  8,  64,  46},  // 4 = two new mvs
481         { 17,  81,  31},  // 5 = one intra neighbour + x
482         { 25,  29,  30},  // 6 = two intra neighbours
483     }, { /* intra */
484         9, 102, 187, 225
485     }, { /* comp */
486         239, 183, 119,  96,  41
487     }, { /* single_ref */
488         {  33,  16 },
489         {  77,  74 },
490         { 142, 142 },
491         { 172, 170 },
492         { 238, 247 }
493     }, { /* comp_ref */
494         50, 126, 123, 221, 226
495     }, { /* tx32p */
496         { 3, 136, 37, },
497         { 5,  52, 13, },
498     }, { /* tx16p */
499         { 20, 152, },
500         { 15, 101, },
501     }, { /* tx8p */
502         100, 66
503     }, { /* skip */
504         192, 128, 64
505     }, { /* mv_joint */
506         32, 64, 96
507     }, {
508         { /* mv vertical component */
509             128, /* sign */
510             { 224, 144, 192, 168, 192, 176, 192, 198, 198, 245 }, /* class */
511             216, /* class0 */
512             { 136, 140, 148, 160, 176, 192, 224, 234, 234, 240}, /* bits */
513             { /* class0_fp */
514                 { 128, 128, 64 },
515                 {  96, 112, 64 }
516             },
517             { 64, 96, 64 }, /* fp */
518             160, /* class0_hp bit */
519             128, /* hp */
520         }, { /* mv horizontal component */
521             128, /* sign */
522             { 216, 128, 176, 160, 176, 176, 192, 198, 198, 208 }, /* class */
523             208, /* class0 */
524             { 136, 140, 148, 160, 176, 192, 224, 234, 234, 240 }, /* bits */
525             { /* class0_fp */
526                 { 128, 128, 64 },
527                 {  96, 112, 64 }
528             },
529             { 64, 96, 64 }, /* fp */
530             160, /* class0_hp bit */
531             128, /* hp */
532         }
533     }, { /* partition */
534         { /* 64x64 -> 32x32 */
535             { 222,  34,  30 } /* a/l both not split */,
536             {  72,  16,  44 } /* a split, l not split */,
537             {  58,  32,  12 } /* l split, a not split */,
538             {  10,   7,   6 } /* a/l both split */,
539         }, { /* 32x32 -> 16x16 */
540             { 177,  58,  59 } /* a/l both not split */,
541             {  68,  26,  63 } /* a split, l not split */,
542             {  52,  79,  25 } /* l split, a not split */,
543             {  17,  14,  12 } /* a/l both split */,
544         }, { /* 16x16 -> 8x8 */
545             { 174,  73,  87 } /* a/l both not split */,
546             {  92,  41,  83 } /* a split, l not split */,
547             {  82,  99,  50 } /* l split, a not split */,
548             {  53,  39,  39 } /* a/l both split */,
549         }, { /* 8x8 -> 4x4 */
550             { 199, 122, 141 } /* a/l both not split */,
551             { 147,  63, 159 } /* a split, l not split */,
552             { 148, 133, 118 } /* l split, a not split */,
553             { 121, 104, 114 } /* a/l both split */,
554         }
555     },
556 };
557 
558 static const RK_U8 vp9_default_coef_probs[4][2][2][6][6][3] = {
559     { /* tx = 4x4 */
560         { /* block Type 0 */
561             { /* Intra */
562                 { /* Coeff Band 0 */
563                     { 195,  29, 183 },
564                     {  84,  49, 136 },
565                     {   8,  42,  71 }
566                 }, { /* Coeff Band 1 */
567                     {  31, 107, 169 },
568                     {  35,  99, 159 },
569                     {  17,  82, 140 },
570                     {   8,  66, 114 },
571                     {   2,  44,  76 },
572                     {   1,  19,  32 }
573                 }, { /* Coeff Band 2 */
574                     {  40, 132, 201 },
575                     {  29, 114, 187 },
576                     {  13,  91, 157 },
577                     {   7,  75, 127 },
578                     {   3,  58,  95 },
579                     {   1,  28,  47 }
580                 }, { /* Coeff Band 3 */
581                     {  69, 142, 221 },
582                     {  42, 122, 201 },
583                     {  15,  91, 159 },
584                     {   6,  67, 121 },
585                     {   1,  42,  77 },
586                     {   1,  17,  31 }
587                 }, { /* Coeff Band 4 */
588                     { 102, 148, 228 },
589                     {  67, 117, 204 },
590                     {  17,  82, 154 },
591                     {   6,  59, 114 },
592                     {   2,  39,  75 },
593                     {   1,  15,  29 }
594                 }, { /* Coeff Band 5 */
595                     { 156,  57, 233 },
596                     { 119,  57, 212 },
597                     {  58,  48, 163 },
598                     {  29,  40, 124 },
599                     {  12,  30,  81 },
600                     {   3,  12,  31 }
601                 }
602             }, { /* Inter */
603                 { /* Coeff Band 0 */
604                     { 191, 107, 226 },
605                     { 124, 117, 204 },
606                     {  25,  99, 155 }
607                 }, { /* Coeff Band 1 */
608                     {  29, 148, 210 },
609                     {  37, 126, 194 },
610                     {   8,  93, 157 },
611                     {   2,  68, 118 },
612                     {   1,  39,  69 },
613                     {   1,  17,  33 }
614                 }, { /* Coeff Band 2 */
615                     {  41, 151, 213 },
616                     {  27, 123, 193 },
617                     {   3,  82, 144 },
618                     {   1,  58, 105 },
619                     {   1,  32,  60 },
620                     {   1,  13,  26 }
621                 }, { /* Coeff Band 3 */
622                     {  59, 159, 220 },
623                     {  23, 126, 198 },
624                     {   4,  88, 151 },
625                     {   1,  66, 114 },
626                     {   1,  38,  71 },
627                     {   1,  18,  34 }
628                 }, { /* Coeff Band 4 */
629                     { 114, 136, 232 },
630                     {  51, 114, 207 },
631                     {  11,  83, 155 },
632                     {   3,  56, 105 },
633                     {   1,  33,  65 },
634                     {   1,  17,  34 }
635                 }, { /* Coeff Band 5 */
636                     { 149,  65, 234 },
637                     { 121,  57, 215 },
638                     {  61,  49, 166 },
639                     {  28,  36, 114 },
640                     {  12,  25,  76 },
641                     {   3,  16,  42 }
642                 }
643             }
644         }, { /* block Type 1 */
645             { /* Intra */
646                 { /* Coeff Band 0 */
647                     { 214,  49, 220 },
648                     { 132,  63, 188 },
649                     {  42,  65, 137 }
650                 }, { /* Coeff Band 1 */
651                     {  85, 137, 221 },
652                     { 104, 131, 216 },
653                     {  49, 111, 192 },
654                     {  21,  87, 155 },
655                     {   2,  49,  87 },
656                     {   1,  16,  28 }
657                 }, { /* Coeff Band 2 */
658                     {  89, 163, 230 },
659                     {  90, 137, 220 },
660                     {  29, 100, 183 },
661                     {  10,  70, 135 },
662                     {   2,  42,  81 },
663                     {   1,  17,  33 }
664                 }, { /* Coeff Band 3 */
665                     { 108, 167, 237 },
666                     {  55, 133, 222 },
667                     {  15,  97, 179 },
668                     {   4,  72, 135 },
669                     {   1,  45,  85 },
670                     {   1,  19,  38 }
671                 }, { /* Coeff Band 4 */
672                     { 124, 146, 240 },
673                     {  66, 124, 224 },
674                     {  17,  88, 175 },
675                     {   4,  58, 122 },
676                     {   1,  36,  75 },
677                     {   1,  18,  37 }
678                 }, { /* Coeff Band 5 */
679                     { 141,  79, 241 },
680                     { 126,  70, 227 },
681                     {  66,  58, 182 },
682                     {  30,  44, 136 },
683                     {  12,  34,  96 },
684                     {   2,  20,  47 }
685                 }
686             }, { /* Inter */
687                 { /* Coeff Band 0 */
688                     { 229,  99, 249 },
689                     { 143, 111, 235 },
690                     {  46, 109, 192 }
691                 }, { /* Coeff Band 1 */
692                     {  82, 158, 236 },
693                     {  94, 146, 224 },
694                     {  25, 117, 191 },
695                     {   9,  87, 149 },
696                     {   3,  56,  99 },
697                     {   1,  33,  57 }
698                 }, { /* Coeff Band 2 */
699                     {  83, 167, 237 },
700                     {  68, 145, 222 },
701                     {  10, 103, 177 },
702                     {   2,  72, 131 },
703                     {   1,  41,  79 },
704                     {   1,  20,  39 }
705                 }, { /* Coeff Band 3 */
706                     {  99, 167, 239 },
707                     {  47, 141, 224 },
708                     {  10, 104, 178 },
709                     {   2,  73, 133 },
710                     {   1,  44,  85 },
711                     {   1,  22,  47 }
712                 }, { /* Coeff Band 4 */
713                     { 127, 145, 243 },
714                     {  71, 129, 228 },
715                     {  17,  93, 177 },
716                     {   3,  61, 124 },
717                     {   1,  41,  84 },
718                     {   1,  21,  52 }
719                 }, { /* Coeff Band 5 */
720                     { 157,  78, 244 },
721                     { 140,  72, 231 },
722                     {  69,  58, 184 },
723                     {  31,  44, 137 },
724                     {  14,  38, 105 },
725                     {   8,  23,  61 }
726                 }
727             }
728         }
729     }, { /* tx = 8x8 */
730         { /* block Type 0 */
731             { /* Intra */
732                 { /* Coeff Band 0 */
733                     { 125,  34, 187 },
734                     {  52,  41, 133 },
735                     {   6,  31,  56 }
736                 }, { /* Coeff Band 1 */
737                     {  37, 109, 153 },
738                     {  51, 102, 147 },
739                     {  23,  87, 128 },
740                     {   8,  67, 101 },
741                     {   1,  41,  63 },
742                     {   1,  19,  29 }
743                 }, { /* Coeff Band 2 */
744                     {  31, 154, 185 },
745                     {  17, 127, 175 },
746                     {   6,  96, 145 },
747                     {   2,  73, 114 },
748                     {   1,  51,  82 },
749                     {   1,  28,  45 }
750                 }, { /* Coeff Band 3 */
751                     {  23, 163, 200 },
752                     {  10, 131, 185 },
753                     {   2,  93, 148 },
754                     {   1,  67, 111 },
755                     {   1,  41,  69 },
756                     {   1,  14,  24 }
757                 }, { /* Coeff Band 4 */
758                     {  29, 176, 217 },
759                     {  12, 145, 201 },
760                     {   3, 101, 156 },
761                     {   1,  69, 111 },
762                     {   1,  39,  63 },
763                     {   1,  14,  23 }
764                 }, { /* Coeff Band 5 */
765                     {  57, 192, 233 },
766                     {  25, 154, 215 },
767                     {   6, 109, 167 },
768                     {   3,  78, 118 },
769                     {   1,  48,  69 },
770                     {   1,  21,  29 }
771                 }
772             }, { /* Inter */
773                 { /* Coeff Band 0 */
774                     { 202, 105, 245 },
775                     { 108, 106, 216 },
776                     {  18,  90, 144 }
777                 }, { /* Coeff Band 1 */
778                     {  33, 172, 219 },
779                     {  64, 149, 206 },
780                     {  14, 117, 177 },
781                     {   5,  90, 141 },
782                     {   2,  61,  95 },
783                     {   1,  37,  57 }
784                 }, { /* Coeff Band 2 */
785                     {  33, 179, 220 },
786                     {  11, 140, 198 },
787                     {   1,  89, 148 },
788                     {   1,  60, 104 },
789                     {   1,  33,  57 },
790                     {   1,  12,  21 }
791                 }, { /* Coeff Band 3 */
792                     {  30, 181, 221 },
793                     {   8, 141, 198 },
794                     {   1,  87, 145 },
795                     {   1,  58, 100 },
796                     {   1,  31,  55 },
797                     {   1,  12,  20 }
798                 }, { /* Coeff Band 4 */
799                     {  32, 186, 224 },
800                     {   7, 142, 198 },
801                     {   1,  86, 143 },
802                     {   1,  58, 100 },
803                     {   1,  31,  55 },
804                     {   1,  12,  22 }
805                 }, { /* Coeff Band 5 */
806                     {  57, 192, 227 },
807                     {  20, 143, 204 },
808                     {   3,  96, 154 },
809                     {   1,  68, 112 },
810                     {   1,  42,  69 },
811                     {   1,  19,  32 }
812                 }
813             }
814         }, { /* block Type 1 */
815             { /* Intra */
816                 { /* Coeff Band 0 */
817                     { 212,  35, 215 },
818                     { 113,  47, 169 },
819                     {  29,  48, 105 }
820                 }, { /* Coeff Band 1 */
821                     {  74, 129, 203 },
822                     { 106, 120, 203 },
823                     {  49, 107, 178 },
824                     {  19,  84, 144 },
825                     {   4,  50,  84 },
826                     {   1,  15,  25 }
827                 }, { /* Coeff Band 2 */
828                     {  71, 172, 217 },
829                     {  44, 141, 209 },
830                     {  15, 102, 173 },
831                     {   6,  76, 133 },
832                     {   2,  51,  89 },
833                     {   1,  24,  42 }
834                 }, { /* Coeff Band 3 */
835                     {  64, 185, 231 },
836                     {  31, 148, 216 },
837                     {   8, 103, 175 },
838                     {   3,  74, 131 },
839                     {   1,  46,  81 },
840                     {   1,  18,  30 }
841                 }, { /* Coeff Band 4 */
842                     {  65, 196, 235 },
843                     {  25, 157, 221 },
844                     {   5, 105, 174 },
845                     {   1,  67, 120 },
846                     {   1,  38,  69 },
847                     {   1,  15,  30 }
848                 }, { /* Coeff Band 5 */
849                     {  65, 204, 238 },
850                     {  30, 156, 224 },
851                     {   7, 107, 177 },
852                     {   2,  70, 124 },
853                     {   1,  42,  73 },
854                     {   1,  18,  34 }
855                 }
856             }, { /* Inter */
857                 { /* Coeff Band 0 */
858                     { 225,  86, 251 },
859                     { 144, 104, 235 },
860                     {  42,  99, 181 }
861                 }, { /* Coeff Band 1 */
862                     {  85, 175, 239 },
863                     { 112, 165, 229 },
864                     {  29, 136, 200 },
865                     {  12, 103, 162 },
866                     {   6,  77, 123 },
867                     {   2,  53,  84 }
868                 }, { /* Coeff Band 2 */
869                     {  75, 183, 239 },
870                     {  30, 155, 221 },
871                     {   3, 106, 171 },
872                     {   1,  74, 128 },
873                     {   1,  44,  76 },
874                     {   1,  17,  28 }
875                 }, { /* Coeff Band 3 */
876                     {  73, 185, 240 },
877                     {  27, 159, 222 },
878                     {   2, 107, 172 },
879                     {   1,  75, 127 },
880                     {   1,  42,  73 },
881                     {   1,  17,  29 }
882                 }, { /* Coeff Band 4 */
883                     {  62, 190, 238 },
884                     {  21, 159, 222 },
885                     {   2, 107, 172 },
886                     {   1,  72, 122 },
887                     {   1,  40,  71 },
888                     {   1,  18,  32 }
889                 }, { /* Coeff Band 5 */
890                     {  61, 199, 240 },
891                     {  27, 161, 226 },
892                     {   4, 113, 180 },
893                     {   1,  76, 129 },
894                     {   1,  46,  80 },
895                     {   1,  23,  41 }
896                 }
897             }
898         }
899     }, { /* tx = 16x16 */
900         { /* block Type 0 */
901             { /* Intra */
902                 { /* Coeff Band 0 */
903                     {   7,  27, 153 },
904                     {   5,  30,  95 },
905                     {   1,  16,  30 }
906                 }, { /* Coeff Band 1 */
907                     {  50,  75, 127 },
908                     {  57,  75, 124 },
909                     {  27,  67, 108 },
910                     {  10,  54,  86 },
911                     {   1,  33,  52 },
912                     {   1,  12,  18 }
913                 }, { /* Coeff Band 2 */
914                     {  43, 125, 151 },
915                     {  26, 108, 148 },
916                     {   7,  83, 122 },
917                     {   2,  59,  89 },
918                     {   1,  38,  60 },
919                     {   1,  17,  27 }
920                 }, { /* Coeff Band 3 */
921                     {  23, 144, 163 },
922                     {  13, 112, 154 },
923                     {   2,  75, 117 },
924                     {   1,  50,  81 },
925                     {   1,  31,  51 },
926                     {   1,  14,  23 }
927                 }, { /* Coeff Band 4 */
928                     {  18, 162, 185 },
929                     {   6, 123, 171 },
930                     {   1,  78, 125 },
931                     {   1,  51,  86 },
932                     {   1,  31,  54 },
933                     {   1,  14,  23 }
934                 }, { /* Coeff Band 5 */
935                     {  15, 199, 227 },
936                     {   3, 150, 204 },
937                     {   1,  91, 146 },
938                     {   1,  55,  95 },
939                     {   1,  30,  53 },
940                     {   1,  11,  20 }
941                 }
942             }, { /* Inter */
943                 { /* Coeff Band 0 */
944                     {  19,  55, 240 },
945                     {  19,  59, 196 },
946                     {   3,  52, 105 }
947                 }, { /* Coeff Band 1 */
948                     {  41, 166, 207 },
949                     { 104, 153, 199 },
950                     {  31, 123, 181 },
951                     {  14, 101, 152 },
952                     {   5,  72, 106 },
953                     {   1,  36,  52 }
954                 }, { /* Coeff Band 2 */
955                     {  35, 176, 211 },
956                     {  12, 131, 190 },
957                     {   2,  88, 144 },
958                     {   1,  60, 101 },
959                     {   1,  36,  60 },
960                     {   1,  16,  28 }
961                 }, { /* Coeff Band 3 */
962                     {  28, 183, 213 },
963                     {   8, 134, 191 },
964                     {   1,  86, 142 },
965                     {   1,  56,  96 },
966                     {   1,  30,  53 },
967                     {   1,  12,  20 }
968                 }, { /* Coeff Band 4 */
969                     {  20, 190, 215 },
970                     {   4, 135, 192 },
971                     {   1,  84, 139 },
972                     {   1,  53,  91 },
973                     {   1,  28,  49 },
974                     {   1,  11,  20 }
975                 }, { /* Coeff Band 5 */
976                     {  13, 196, 216 },
977                     {   2, 137, 192 },
978                     {   1,  86, 143 },
979                     {   1,  57,  99 },
980                     {   1,  32,  56 },
981                     {   1,  13,  24 }
982                 }
983             }
984         }, { /* block Type 1 */
985             { /* Intra */
986                 { /* Coeff Band 0 */
987                     { 211,  29, 217 },
988                     {  96,  47, 156 },
989                     {  22,  43,  87 }
990                 }, { /* Coeff Band 1 */
991                     {  78, 120, 193 },
992                     { 111, 116, 186 },
993                     {  46, 102, 164 },
994                     {  15,  80, 128 },
995                     {   2,  49,  76 },
996                     {   1,  18,  28 }
997                 }, { /* Coeff Band 2 */
998                     {  71, 161, 203 },
999                     {  42, 132, 192 },
1000                     {  10,  98, 150 },
1001                     {   3,  69, 109 },
1002                     {   1,  44,  70 },
1003                     {   1,  18,  29 }
1004                 }, { /* Coeff Band 3 */
1005                     {  57, 186, 211 },
1006                     {  30, 140, 196 },
1007                     {   4,  93, 146 },
1008                     {   1,  62, 102 },
1009                     {   1,  38,  65 },
1010                     {   1,  16,  27 }
1011                 }, { /* Coeff Band 4 */
1012                     {  47, 199, 217 },
1013                     {  14, 145, 196 },
1014                     {   1,  88, 142 },
1015                     {   1,  57,  98 },
1016                     {   1,  36,  62 },
1017                     {   1,  15,  26 }
1018                 }, { /* Coeff Band 5 */
1019                     {  26, 219, 229 },
1020                     {   5, 155, 207 },
1021                     {   1,  94, 151 },
1022                     {   1,  60, 104 },
1023                     {   1,  36,  62 },
1024                     {   1,  16,  28 }
1025                 }
1026             }, { /* Inter */
1027                 { /* Coeff Band 0 */
1028                     { 233,  29, 248 },
1029                     { 146,  47, 220 },
1030                     {  43,  52, 140 }
1031                 }, { /* Coeff Band 1 */
1032                     { 100, 163, 232 },
1033                     { 179, 161, 222 },
1034                     {  63, 142, 204 },
1035                     {  37, 113, 174 },
1036                     {  26,  89, 137 },
1037                     {  18,  68,  97 }
1038                 }, { /* Coeff Band 2 */
1039                     {  85, 181, 230 },
1040                     {  32, 146, 209 },
1041                     {   7, 100, 164 },
1042                     {   3,  71, 121 },
1043                     {   1,  45,  77 },
1044                     {   1,  18,  30 }
1045                 }, { /* Coeff Band 3 */
1046                     {  65, 187, 230 },
1047                     {  20, 148, 207 },
1048                     {   2,  97, 159 },
1049                     {   1,  68, 116 },
1050                     {   1,  40,  70 },
1051                     {   1,  14,  29 }
1052                 }, { /* Coeff Band 4 */
1053                     {  40, 194, 227 },
1054                     {   8, 147, 204 },
1055                     {   1,  94, 155 },
1056                     {   1,  65, 112 },
1057                     {   1,  39,  66 },
1058                     {   1,  14,  26 }
1059                 }, { /* Coeff Band 5 */
1060                     {  16, 208, 228 },
1061                     {   3, 151, 207 },
1062                     {   1,  98, 160 },
1063                     {   1,  67, 117 },
1064                     {   1,  41,  74 },
1065                     {   1,  17,  31 }
1066                 }
1067             }
1068         }
1069     }, { /* tx = 32x32 */
1070         { /* block Type 0 */
1071             { /* Intra */
1072                 { /* Coeff Band 0 */
1073                     {  17,  38, 140 },
1074                     {   7,  34,  80 },
1075                     {   1,  17,  29 }
1076                 }, { /* Coeff Band 1 */
1077                     {  37,  75, 128 },
1078                     {  41,  76, 128 },
1079                     {  26,  66, 116 },
1080                     {  12,  52,  94 },
1081                     {   2,  32,  55 },
1082                     {   1,  10,  16 }
1083                 }, { /* Coeff Band 2 */
1084                     {  50, 127, 154 },
1085                     {  37, 109, 152 },
1086                     {  16,  82, 121 },
1087                     {   5,  59,  85 },
1088                     {   1,  35,  54 },
1089                     {   1,  13,  20 }
1090                 }, { /* Coeff Band 3 */
1091                     {  40, 142, 167 },
1092                     {  17, 110, 157 },
1093                     {   2,  71, 112 },
1094                     {   1,  44,  72 },
1095                     {   1,  27,  45 },
1096                     {   1,  11,  17 }
1097                 }, { /* Coeff Band 4 */
1098                     {  30, 175, 188 },
1099                     {   9, 124, 169 },
1100                     {   1,  74, 116 },
1101                     {   1,  48,  78 },
1102                     {   1,  30,  49 },
1103                     {   1,  11,  18 }
1104                 }, { /* Coeff Band 5 */
1105                     {  10, 222, 223 },
1106                     {   2, 150, 194 },
1107                     {   1,  83, 128 },
1108                     {   1,  48,  79 },
1109                     {   1,  27,  45 },
1110                     {   1,  11,  17 }
1111                 }
1112             }, { /* Inter */
1113                 { /* Coeff Band 0 */
1114                     {  36,  41, 235 },
1115                     {  29,  36, 193 },
1116                     {  10,  27, 111 }
1117                 }, { /* Coeff Band 1 */
1118                     {  85, 165, 222 },
1119                     { 177, 162, 215 },
1120                     { 110, 135, 195 },
1121                     {  57, 113, 168 },
1122                     {  23,  83, 120 },
1123                     {  10,  49,  61 }
1124                 }, { /* Coeff Band 2 */
1125                     {  85, 190, 223 },
1126                     {  36, 139, 200 },
1127                     {   5,  90, 146 },
1128                     {   1,  60, 103 },
1129                     {   1,  38,  65 },
1130                     {   1,  18,  30 }
1131                 }, { /* Coeff Band 3 */
1132                     {  72, 202, 223 },
1133                     {  23, 141, 199 },
1134                     {   2,  86, 140 },
1135                     {   1,  56,  97 },
1136                     {   1,  36,  61 },
1137                     {   1,  16,  27 }
1138                 }, { /* Coeff Band 4 */
1139                     {  55, 218, 225 },
1140                     {  13, 145, 200 },
1141                     {   1,  86, 141 },
1142                     {   1,  57,  99 },
1143                     {   1,  35,  61 },
1144                     {   1,  13,  22 }
1145                 }, { /* Coeff Band 5 */
1146                     {  15, 235, 212 },
1147                     {   1, 132, 184 },
1148                     {   1,  84, 139 },
1149                     {   1,  57,  97 },
1150                     {   1,  34,  56 },
1151                     {   1,  14,  23 }
1152                 }
1153             }
1154         }, { /* block Type 1 */
1155             { /* Intra */
1156                 { /* Coeff Band 0 */
1157                     { 181,  21, 201 },
1158                     {  61,  37, 123 },
1159                     {  10,  38,  71 }
1160                 }, { /* Coeff Band 1 */
1161                     {  47, 106, 172 },
1162                     {  95, 104, 173 },
1163                     {  42,  93, 159 },
1164                     {  18,  77, 131 },
1165                     {   4,  50,  81 },
1166                     {   1,  17,  23 }
1167                 }, { /* Coeff Band 2 */
1168                     {  62, 147, 199 },
1169                     {  44, 130, 189 },
1170                     {  28, 102, 154 },
1171                     {  18,  75, 115 },
1172                     {   2,  44,  65 },
1173                     {   1,  12,  19 }
1174                 }, { /* Coeff Band 3 */
1175                     {  55, 153, 210 },
1176                     {  24, 130, 194 },
1177                     {   3,  93, 146 },
1178                     {   1,  61,  97 },
1179                     {   1,  31,  50 },
1180                     {   1,  10,  16 }
1181                 }, { /* Coeff Band 4 */
1182                     {  49, 186, 223 },
1183                     {  17, 148, 204 },
1184                     {   1,  96, 142 },
1185                     {   1,  53,  83 },
1186                     {   1,  26,  44 },
1187                     {   1,  11,  17 }
1188                 }, { /* Coeff Band 5 */
1189                     {  13, 217, 212 },
1190                     {   2, 136, 180 },
1191                     {   1,  78, 124 },
1192                     {   1,  50,  83 },
1193                     {   1,  29,  49 },
1194                     {   1,  14,  23 }
1195                 }
1196             }, { /* Inter */
1197                 { /* Coeff Band 0 */
1198                     { 197,  13, 247 },
1199                     {  82,  17, 222 },
1200                     {  25,  17, 162 }
1201                 }, { /* Coeff Band 1 */
1202                     { 126, 186, 247 },
1203                     { 234, 191, 243 },
1204                     { 176, 177, 234 },
1205                     { 104, 158, 220 },
1206                     {  66, 128, 186 },
1207                     {  55,  90, 137 }
1208                 }, { /* Coeff Band 2 */
1209                     { 111, 197, 242 },
1210                     {  46, 158, 219 },
1211                     {   9, 104, 171 },
1212                     {   2,  65, 125 },
1213                     {   1,  44,  80 },
1214                     {   1,  17,  91 }
1215                 }, { /* Coeff Band 3 */
1216                     { 104, 208, 245 },
1217                     {  39, 168, 224 },
1218                     {   3, 109, 162 },
1219                     {   1,  79, 124 },
1220                     {   1,  50, 102 },
1221                     {   1,  43, 102 }
1222                 }, { /* Coeff Band 4 */
1223                     {  84, 220, 246 },
1224                     {  31, 177, 231 },
1225                     {   2, 115, 180 },
1226                     {   1,  79, 134 },
1227                     {   1,  55,  77 },
1228                     {   1,  60,  79 }
1229                 }, { /* Coeff Band 5 */
1230                     {  43, 243, 240 },
1231                     {   8, 180, 217 },
1232                     {   1, 115, 166 },
1233                     {   1,  84, 121 },
1234                     {   1,  51,  67 },
1235                     {   1,  16,   6 }
1236                 }
1237             }
1238         }
1239     }
1240 };
1241 
1242 enum MVJoint {
1243     MV_JOINT_ZERO,
1244     MV_JOINT_H,
1245     MV_JOINT_V,
1246     MV_JOINT_HV,
1247 };
1248 
1249 static const RK_S8 vp9_mv_joint_tree[3][2] = {
1250     { -MV_JOINT_ZERO, 1 },           // '0'
1251     { -MV_JOINT_H, 2 },             // '10'
1252     { -MV_JOINT_V, -MV_JOINT_HV }, // '11x'
1253 };
1254 
1255 static const RK_S8 vp9_mv_class_tree[10][2] = {
1256     { -0, 1 },         // '0'
1257     { -1, 2 },        // '10'
1258     { 3, 4 },
1259     { -2, -3 },     // '110x'
1260     { 5, 6 },
1261     { -4, -5 },    // '1110x'
1262     { -6, 7 },     // '11110'
1263     { 8, 9 },
1264     { -7, -8 },  // '111110x'
1265     { -9, -10 }, // '111111x'
1266 };
1267 
1268 static const RK_S8 vp9_mv_fp_tree[3][2] = {
1269     { -0, 1 },    // '0'
1270     { -1, 2 },   // '10'
1271     { -2, -3 }, // '11x'
1272 };
1273 
1274 #endif /*VP9DATA_H */
1275