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