You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2292 lines
112KB

  1. /*
  2. * Copyright (C) 2013 Ronald S. Bultje <rsbultje gmail com>
  3. * Copyright (C) 2013 Clément Bœsch <u pkh me>
  4. *
  5. * This file is part of FFmpeg.
  6. *
  7. * FFmpeg is free software; you can redistribute it and/or
  8. * modify it under the terms of the GNU Lesser General Public
  9. * License as published by the Free Software Foundation; either
  10. * version 2.1 of the License, or (at your option) any later version.
  11. *
  12. * FFmpeg is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15. * Lesser General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU Lesser General Public
  18. * License along with FFmpeg; if not, write to the Free Software
  19. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  20. */
  21. #ifndef AVCODEC_VP9DATA_H
  22. #define AVCODEC_VP9DATA_H
  23. #include <stdint.h>
  24. #include "vp9.h"
  25. enum BlockPartition {
  26. PARTITION_NONE, // [ ] <-.
  27. PARTITION_H, // [-] |
  28. PARTITION_V, // [|] |
  29. PARTITION_SPLIT, // [+] --'
  30. };
  31. static const int8_t vp9_partition_tree[3][2] = {
  32. { -PARTITION_NONE, 1 }, // '0'
  33. { -PARTITION_H, 2 }, // '10'
  34. { -PARTITION_V, -PARTITION_SPLIT }, // '110', '111'
  35. };
  36. static const uint8_t vp9_default_kf_partition_probs[4][4][3] = {
  37. { /* 64x64 -> 32x32 */
  38. { 174, 35, 49 } /* a/l both not split */,
  39. { 68, 11, 27 } /* a split, l not split */,
  40. { 57, 15, 9 } /* l split, a not split */,
  41. { 12, 3, 3 } /* a/l both split */
  42. }, { /* 32x32 -> 16x16 */
  43. { 150, 40, 39 } /* a/l both not split */,
  44. { 78, 12, 26 } /* a split, l not split */,
  45. { 67, 33, 11 } /* l split, a not split */,
  46. { 24, 7, 5 } /* a/l both split */,
  47. }, { /* 16x16 -> 8x8 */
  48. { 149, 53, 53 } /* a/l both not split */,
  49. { 94, 20, 48 } /* a split, l not split */,
  50. { 83, 53, 24 } /* l split, a not split */,
  51. { 52, 18, 18 } /* a/l both split */,
  52. }, { /* 8x8 -> 4x4 */
  53. { 158, 97, 94 } /* a/l both not split */,
  54. { 93, 24, 99 } /* a split, l not split */,
  55. { 85, 119, 44 } /* l split, a not split */,
  56. { 62, 59, 67 } /* a/l both split */,
  57. },
  58. };
  59. static const int8_t vp9_segmentation_tree[7][2] = {
  60. { 1, 2 },
  61. { 3, 4 },
  62. { 5, 6 },
  63. { -0, -1 }, // '00x'
  64. { -2, -3 }, // '01x'
  65. { -4, -5 }, // '10x'
  66. { -6, -7 }, // '11x'
  67. };
  68. static const int8_t vp9_intramode_tree[9][2] = {
  69. { -DC_PRED, 1 }, // '0'
  70. { -TM_VP8_PRED, 2 }, // '10'
  71. { -VERT_PRED, 3 }, // '110'
  72. { 4, 6 },
  73. { -HOR_PRED, 5 }, // '11100'
  74. { -DIAG_DOWN_RIGHT_PRED, -VERT_RIGHT_PRED }, // '11101x'
  75. { -DIAG_DOWN_LEFT_PRED, 7 }, // '11110'
  76. { -VERT_LEFT_PRED, 8 }, // '111110'
  77. { -HOR_DOWN_PRED, -HOR_UP_PRED }, // '111111x'
  78. };
  79. static const uint8_t vp9_default_kf_ymode_probs[10][10][9] = {
  80. { /* above = v */
  81. { 43, 46, 168, 134, 107, 128, 69, 142, 92 } /* left = v */,
  82. { 44, 29, 68, 159, 201, 177, 50, 57, 77 } /* left = h */,
  83. { 63, 36, 126, 146, 123, 158, 60, 90, 96 } /* left = dc */,
  84. { 58, 38, 76, 114, 97, 172, 78, 133, 92 } /* left = d45 */,
  85. { 46, 41, 76, 140, 63, 184, 69, 112, 57 } /* left = d135 */,
  86. { 38, 32, 85, 140, 46, 112, 54, 151, 133 } /* left = d117 */,
  87. { 39, 27, 61, 131, 110, 175, 44, 75, 136 } /* left = d153 */,
  88. { 47, 35, 80, 100, 74, 143, 64, 163, 74 } /* left = d63 */,
  89. { 52, 30, 74, 113, 130, 175, 51, 64, 58 } /* left = d27 */,
  90. { 36, 61, 116, 114, 128, 162, 80, 125, 82 } /* left = tm */
  91. }, { /* above = h */
  92. { 55, 44, 68, 166, 179, 192, 57, 57, 108 } /* left = v */,
  93. { 42, 26, 11, 199, 241, 228, 23, 15, 85 } /* left = h */,
  94. { 82, 26, 26, 171, 208, 204, 44, 32, 105 } /* left = dc */,
  95. { 68, 42, 19, 131, 160, 199, 55, 52, 83 } /* left = d45 */,
  96. { 58, 50, 25, 139, 115, 232, 39, 52, 118 } /* left = d135 */,
  97. { 50, 35, 33, 153, 104, 162, 64, 59, 131 } /* left = d117 */,
  98. { 44, 24, 16, 150, 177, 202, 33, 19, 156 } /* left = d153 */,
  99. { 53, 49, 21, 110, 116, 168, 59, 80, 76 } /* left = d63 */,
  100. { 55, 27, 12, 153, 203, 218, 26, 27, 49 } /* left = d27 */,
  101. { 38, 72, 19, 168, 203, 212, 50, 50, 107 } /* left = tm */
  102. }, { /* above = dc */
  103. { 92, 45, 102, 136, 116, 180, 74, 90, 100 } /* left = v */,
  104. { 73, 32, 19, 187, 222, 215, 46, 34, 100 } /* left = h */,
  105. { 137, 30, 42, 148, 151, 207, 70, 52, 91 } /* left = dc */,
  106. { 91, 30, 32, 116, 121, 186, 93, 86, 94 } /* left = d45 */,
  107. { 72, 35, 36, 149, 68, 206, 68, 63, 105 } /* left = d135 */,
  108. { 73, 31, 28, 138, 57, 124, 55, 122, 151 } /* left = d117 */,
  109. { 67, 23, 21, 140, 126, 197, 40, 37, 171 } /* left = d153 */,
  110. { 74, 32, 27, 107, 86, 160, 63, 134, 102 } /* left = d63 */,
  111. { 86, 27, 28, 128, 154, 212, 45, 43, 53 } /* left = d27 */,
  112. { 59, 67, 44, 140, 161, 202, 78, 67, 119 } /* left = tm */
  113. }, { /* above = d45 */
  114. { 59, 38, 83, 112, 103, 162, 98, 136, 90 } /* left = v */,
  115. { 62, 30, 23, 158, 200, 207, 59, 57, 50 } /* left = h */,
  116. { 103, 26, 36, 129, 132, 201, 83, 80, 93 } /* left = dc */,
  117. { 67, 30, 29, 84, 86, 191, 102, 91, 59 } /* left = d45 */,
  118. { 60, 32, 33, 112, 71, 220, 64, 89, 104 } /* left = d135 */,
  119. { 53, 26, 34, 130, 56, 149, 84, 120, 103 } /* left = d117 */,
  120. { 53, 21, 23, 133, 109, 210, 56, 77, 172 } /* left = d153 */,
  121. { 61, 29, 29, 93, 97, 165, 83, 175, 162 } /* left = d63 */,
  122. { 77, 19, 29, 112, 142, 228, 55, 66, 36 } /* left = d27 */,
  123. { 47, 47, 43, 114, 137, 181, 100, 99, 95 } /* left = tm */
  124. }, { /* above = d135 */
  125. { 53, 40, 55, 139, 69, 183, 61, 80, 110 } /* left = v */,
  126. { 40, 29, 19, 161, 180, 207, 43, 24, 91 } /* left = h */,
  127. { 69, 23, 29, 128, 83, 199, 46, 44, 101 } /* left = dc */,
  128. { 60, 34, 19, 105, 61, 198, 53, 64, 89 } /* left = d45 */,
  129. { 52, 31, 22, 158, 40, 209, 58, 62, 89 } /* left = d135 */,
  130. { 44, 31, 29, 147, 46, 158, 56, 102, 198 } /* left = d117 */,
  131. { 35, 19, 12, 135, 87, 209, 41, 45, 167 } /* left = d153 */,
  132. { 51, 38, 25, 113, 58, 164, 70, 93, 97 } /* left = d63 */,
  133. { 55, 25, 21, 118, 95, 215, 38, 39, 66 } /* left = d27 */,
  134. { 47, 54, 34, 146, 108, 203, 72, 103, 151 } /* left = tm */
  135. }, { /* above = d117 */
  136. { 46, 27, 80, 150, 55, 124, 55, 121, 135 } /* left = v */,
  137. { 36, 23, 27, 165, 149, 166, 54, 64, 118 } /* left = h */,
  138. { 64, 19, 37, 156, 66, 138, 49, 95, 133 } /* left = dc */,
  139. { 53, 21, 36, 131, 63, 163, 60, 109, 81 } /* left = d45 */,
  140. { 40, 26, 35, 154, 40, 185, 51, 97, 123 } /* left = d135 */,
  141. { 35, 19, 34, 179, 19, 97, 48, 129, 124 } /* left = d117 */,
  142. { 36, 20, 26, 136, 62, 164, 33, 77, 154 } /* left = d153 */,
  143. { 45, 26, 28, 129, 45, 129, 49, 147, 123 } /* left = d63 */,
  144. { 45, 18, 32, 130, 90, 157, 40, 79, 91 } /* left = d27 */,
  145. { 38, 44, 51, 136, 74, 162, 57, 97, 121 } /* left = tm */
  146. }, { /* above = d153 */
  147. { 56, 39, 58, 133, 117, 173, 48, 53, 187 } /* left = v */,
  148. { 35, 21, 12, 161, 212, 207, 20, 23, 145 } /* left = h */,
  149. { 75, 17, 22, 136, 138, 185, 32, 34, 166 } /* left = dc */,
  150. { 56, 29, 19, 117, 109, 181, 55, 68, 112 } /* left = d45 */,
  151. { 47, 29, 17, 153, 64, 220, 59, 51, 114 } /* left = d135 */,
  152. { 46, 16, 24, 136, 76, 147, 41, 64, 172 } /* left = d117 */,
  153. { 34, 17, 11, 108, 152, 187, 13, 15, 209 } /* left = d153 */,
  154. { 55, 30, 18, 122, 79, 179, 44, 88, 116 } /* left = d63 */,
  155. { 51, 24, 14, 115, 133, 209, 32, 26, 104 } /* left = d27 */,
  156. { 37, 49, 25, 129, 168, 164, 41, 54, 148 } /* left = tm */
  157. }, { /* above = d63 */
  158. { 48, 34, 86, 101, 92, 146, 78, 179, 134 } /* left = v */,
  159. { 47, 22, 24, 138, 187, 178, 68, 69, 59 } /* left = h */,
  160. { 78, 23, 39, 111, 117, 170, 74, 124, 94 } /* left = dc */,
  161. { 56, 25, 33, 105, 112, 187, 95, 177, 129 } /* left = d45 */,
  162. { 48, 31, 27, 114, 63, 183, 82, 116, 56 } /* left = d135 */,
  163. { 43, 28, 37, 121, 63, 123, 61, 192, 169 } /* left = d117 */,
  164. { 42, 17, 24, 109, 97, 177, 56, 76, 122 } /* left = d153 */,
  165. { 46, 23, 32, 74, 86, 150, 67, 183, 88 } /* left = d63 */,
  166. { 58, 18, 28, 105, 139, 182, 70, 92, 63 } /* left = d27 */,
  167. { 36, 38, 48, 92, 122, 165, 88, 137, 91 } /* left = tm */
  168. }, { /* above = d27 */
  169. { 62, 44, 61, 123, 105, 189, 48, 57, 64 } /* left = v */,
  170. { 47, 25, 17, 175, 222, 220, 24, 30, 86 } /* left = h */,
  171. { 82, 22, 32, 127, 143, 213, 39, 41, 70 } /* left = dc */,
  172. { 68, 36, 17, 106, 102, 206, 59, 74, 74 } /* left = d45 */,
  173. { 57, 39, 23, 151, 68, 216, 55, 63, 58 } /* left = d135 */,
  174. { 49, 30, 35, 141, 70, 168, 82, 40, 115 } /* left = d117 */,
  175. { 51, 25, 15, 136, 129, 202, 38, 35, 139 } /* left = d153 */,
  176. { 59, 39, 19, 114, 75, 180, 77, 104, 42 } /* left = d63 */,
  177. { 68, 26, 16, 111, 141, 215, 29, 28, 28 } /* left = d27 */,
  178. { 40, 61, 26, 126, 152, 206, 61, 59, 93 } /* left = tm */
  179. }, { /* above = tm */
  180. { 44, 78, 115, 132, 119, 173, 71, 112, 93 } /* left = v */,
  181. { 39, 38, 21, 184, 227, 206, 42, 32, 64 } /* left = h */,
  182. { 65, 70, 60, 155, 159, 199, 61, 60, 81 } /* left = dc */,
  183. { 58, 47, 36, 124, 137, 193, 80, 82, 78 } /* left = d45 */,
  184. { 49, 50, 35, 144, 95, 205, 63, 78, 59 } /* left = d135 */,
  185. { 41, 53, 52, 148, 71, 142, 65, 128, 51 } /* left = d117 */,
  186. { 40, 36, 28, 143, 143, 202, 40, 55, 137 } /* left = d153 */,
  187. { 42, 44, 44, 104, 105, 164, 64, 130, 80 } /* left = d63 */,
  188. { 52, 34, 29, 129, 183, 227, 42, 35, 43 } /* left = d27 */,
  189. { 43, 81, 53, 140, 169, 204, 68, 84, 72 } /* left = tm */
  190. }
  191. };
  192. static const uint8_t vp9_default_kf_uvmode_probs[10][9] = {
  193. { 118, 15, 123, 148, 131, 101, 44, 93, 131 } /* y = v */,
  194. { 113, 12, 23, 188, 226, 142, 26, 32, 125 } /* y = h */,
  195. { 144, 11, 54, 157, 195, 130, 46, 58, 108 } /* y = dc */,
  196. { 120, 11, 50, 123, 163, 135, 64, 77, 103 } /* y = d45 */,
  197. { 113, 9, 36, 155, 111, 157, 32, 44, 161 } /* y = d135 */,
  198. { 116, 9, 55, 176, 76, 96, 37, 61, 149 } /* y = d117 */,
  199. { 115, 9, 28, 141, 161, 167, 21, 25, 193 } /* y = d153 */,
  200. { 116, 12, 64, 120, 140, 125, 49, 115, 121 } /* y = d63 */,
  201. { 120, 12, 32, 145, 195, 142, 32, 38, 86 } /* y = d27 */,
  202. { 102, 19, 66, 162, 182, 122, 35, 59, 128 } /* y = tm */
  203. };
  204. enum InterPredMode {
  205. NEARESTMV = 10,
  206. NEARMV = 11,
  207. ZEROMV = 12,
  208. NEWMV = 13,
  209. };
  210. static const int8_t vp9_inter_mode_tree[3][2] = {
  211. { -ZEROMV, 1 }, // '0'
  212. { -NEARESTMV, 2 }, // '10'
  213. { -NEARMV, -NEWMV }, // '11x'
  214. };
  215. static const int8_t vp9_filter_tree[2][2] = {
  216. { -0, 1 }, // '0'
  217. { -1, -2 }, // '1x'
  218. };
  219. static const enum FilterMode vp9_filter_lut[3] = {
  220. FILTER_8TAP_REGULAR,
  221. FILTER_8TAP_SMOOTH,
  222. FILTER_8TAP_SHARP,
  223. };
  224. static const int16_t vp9_dc_qlookup[3][256] = {
  225. {
  226. 4, 8, 8, 9, 10, 11, 12, 12,
  227. 13, 14, 15, 16, 17, 18, 19, 19,
  228. 20, 21, 22, 23, 24, 25, 26, 26,
  229. 27, 28, 29, 30, 31, 32, 32, 33,
  230. 34, 35, 36, 37, 38, 38, 39, 40,
  231. 41, 42, 43, 43, 44, 45, 46, 47,
  232. 48, 48, 49, 50, 51, 52, 53, 53,
  233. 54, 55, 56, 57, 57, 58, 59, 60,
  234. 61, 62, 62, 63, 64, 65, 66, 66,
  235. 67, 68, 69, 70, 70, 71, 72, 73,
  236. 74, 74, 75, 76, 77, 78, 78, 79,
  237. 80, 81, 81, 82, 83, 84, 85, 85,
  238. 87, 88, 90, 92, 93, 95, 96, 98,
  239. 99, 101, 102, 104, 105, 107, 108, 110,
  240. 111, 113, 114, 116, 117, 118, 120, 121,
  241. 123, 125, 127, 129, 131, 134, 136, 138,
  242. 140, 142, 144, 146, 148, 150, 152, 154,
  243. 156, 158, 161, 164, 166, 169, 172, 174,
  244. 177, 180, 182, 185, 187, 190, 192, 195,
  245. 199, 202, 205, 208, 211, 214, 217, 220,
  246. 223, 226, 230, 233, 237, 240, 243, 247,
  247. 250, 253, 257, 261, 265, 269, 272, 276,
  248. 280, 284, 288, 292, 296, 300, 304, 309,
  249. 313, 317, 322, 326, 330, 335, 340, 344,
  250. 349, 354, 359, 364, 369, 374, 379, 384,
  251. 389, 395, 400, 406, 411, 417, 423, 429,
  252. 435, 441, 447, 454, 461, 467, 475, 482,
  253. 489, 497, 505, 513, 522, 530, 539, 549,
  254. 559, 569, 579, 590, 602, 614, 626, 640,
  255. 654, 668, 684, 700, 717, 736, 755, 775,
  256. 796, 819, 843, 869, 896, 925, 955, 988,
  257. 1022, 1058, 1098, 1139, 1184, 1232, 1282, 1336,
  258. }, {
  259. 4, 9, 10, 13, 15, 17, 20, 22,
  260. 25, 28, 31, 34, 37, 40, 43, 47,
  261. 50, 53, 57, 60, 64, 68, 71, 75,
  262. 78, 82, 86, 90, 93, 97, 101, 105,
  263. 109, 113, 116, 120, 124, 128, 132, 136,
  264. 140, 143, 147, 151, 155, 159, 163, 166,
  265. 170, 174, 178, 182, 185, 189, 193, 197,
  266. 200, 204, 208, 212, 215, 219, 223, 226,
  267. 230, 233, 237, 241, 244, 248, 251, 255,
  268. 259, 262, 266, 269, 273, 276, 280, 283,
  269. 287, 290, 293, 297, 300, 304, 307, 310,
  270. 314, 317, 321, 324, 327, 331, 334, 337,
  271. 343, 350, 356, 362, 369, 375, 381, 387,
  272. 394, 400, 406, 412, 418, 424, 430, 436,
  273. 442, 448, 454, 460, 466, 472, 478, 484,
  274. 490, 499, 507, 516, 525, 533, 542, 550,
  275. 559, 567, 576, 584, 592, 601, 609, 617,
  276. 625, 634, 644, 655, 666, 676, 687, 698,
  277. 708, 718, 729, 739, 749, 759, 770, 782,
  278. 795, 807, 819, 831, 844, 856, 868, 880,
  279. 891, 906, 920, 933, 947, 961, 975, 988,
  280. 1001, 1015, 1030, 1045, 1061, 1076, 1090, 1105,
  281. 1120, 1137, 1153, 1170, 1186, 1202, 1218, 1236,
  282. 1253, 1271, 1288, 1306, 1323, 1342, 1361, 1379,
  283. 1398, 1416, 1436, 1456, 1476, 1496, 1516, 1537,
  284. 1559, 1580, 1601, 1624, 1647, 1670, 1692, 1717,
  285. 1741, 1766, 1791, 1817, 1844, 1871, 1900, 1929,
  286. 1958, 1990, 2021, 2054, 2088, 2123, 2159, 2197,
  287. 2236, 2276, 2319, 2363, 2410, 2458, 2508, 2561,
  288. 2616, 2675, 2737, 2802, 2871, 2944, 3020, 3102,
  289. 3188, 3280, 3375, 3478, 3586, 3702, 3823, 3953,
  290. 4089, 4236, 4394, 4559, 4737, 4929, 5130, 5347,
  291. }, {
  292. 4, 12, 18, 25, 33, 41, 50, 60,
  293. 70, 80, 91, 103, 115, 127, 140, 153,
  294. 166, 180, 194, 208, 222, 237, 251, 266,
  295. 281, 296, 312, 327, 343, 358, 374, 390,
  296. 405, 421, 437, 453, 469, 484, 500, 516,
  297. 532, 548, 564, 580, 596, 611, 627, 643,
  298. 659, 674, 690, 706, 721, 737, 752, 768,
  299. 783, 798, 814, 829, 844, 859, 874, 889,
  300. 904, 919, 934, 949, 964, 978, 993, 1008,
  301. 1022, 1037, 1051, 1065, 1080, 1094, 1108, 1122,
  302. 1136, 1151, 1165, 1179, 1192, 1206, 1220, 1234,
  303. 1248, 1261, 1275, 1288, 1302, 1315, 1329, 1342,
  304. 1368, 1393, 1419, 1444, 1469, 1494, 1519, 1544,
  305. 1569, 1594, 1618, 1643, 1668, 1692, 1717, 1741,
  306. 1765, 1789, 1814, 1838, 1862, 1885, 1909, 1933,
  307. 1957, 1992, 2027, 2061, 2096, 2130, 2165, 2199,
  308. 2233, 2267, 2300, 2334, 2367, 2400, 2434, 2467,
  309. 2499, 2532, 2575, 2618, 2661, 2704, 2746, 2788,
  310. 2830, 2872, 2913, 2954, 2995, 3036, 3076, 3127,
  311. 3177, 3226, 3275, 3324, 3373, 3421, 3469, 3517,
  312. 3565, 3621, 3677, 3733, 3788, 3843, 3897, 3951,
  313. 4005, 4058, 4119, 4181, 4241, 4301, 4361, 4420,
  314. 4479, 4546, 4612, 4677, 4742, 4807, 4871, 4942,
  315. 5013, 5083, 5153, 5222, 5291, 5367, 5442, 5517,
  316. 5591, 5665, 5745, 5825, 5905, 5984, 6063, 6149,
  317. 6234, 6319, 6404, 6495, 6587, 6678, 6769, 6867,
  318. 6966, 7064, 7163, 7269, 7376, 7483, 7599, 7715,
  319. 7832, 7958, 8085, 8214, 8352, 8492, 8635, 8788,
  320. 8945, 9104, 9275, 9450, 9639, 9832, 10031, 10245,
  321. 10465, 10702, 10946, 11210, 11482, 11776, 12081, 12409,
  322. 12750, 13118, 13501, 13913, 14343, 14807, 15290, 15812,
  323. 16356, 16943, 17575, 18237, 18949, 19718, 20521, 21387,
  324. }
  325. };
  326. static const int16_t vp9_ac_qlookup[3][256] = {
  327. {
  328. 4, 8, 9, 10, 11, 12, 13, 14,
  329. 15, 16, 17, 18, 19, 20, 21, 22,
  330. 23, 24, 25, 26, 27, 28, 29, 30,
  331. 31, 32, 33, 34, 35, 36, 37, 38,
  332. 39, 40, 41, 42, 43, 44, 45, 46,
  333. 47, 48, 49, 50, 51, 52, 53, 54,
  334. 55, 56, 57, 58, 59, 60, 61, 62,
  335. 63, 64, 65, 66, 67, 68, 69, 70,
  336. 71, 72, 73, 74, 75, 76, 77, 78,
  337. 79, 80, 81, 82, 83, 84, 85, 86,
  338. 87, 88, 89, 90, 91, 92, 93, 94,
  339. 95, 96, 97, 98, 99, 100, 101, 102,
  340. 104, 106, 108, 110, 112, 114, 116, 118,
  341. 120, 122, 124, 126, 128, 130, 132, 134,
  342. 136, 138, 140, 142, 144, 146, 148, 150,
  343. 152, 155, 158, 161, 164, 167, 170, 173,
  344. 176, 179, 182, 185, 188, 191, 194, 197,
  345. 200, 203, 207, 211, 215, 219, 223, 227,
  346. 231, 235, 239, 243, 247, 251, 255, 260,
  347. 265, 270, 275, 280, 285, 290, 295, 300,
  348. 305, 311, 317, 323, 329, 335, 341, 347,
  349. 353, 359, 366, 373, 380, 387, 394, 401,
  350. 408, 416, 424, 432, 440, 448, 456, 465,
  351. 474, 483, 492, 501, 510, 520, 530, 540,
  352. 550, 560, 571, 582, 593, 604, 615, 627,
  353. 639, 651, 663, 676, 689, 702, 715, 729,
  354. 743, 757, 771, 786, 801, 816, 832, 848,
  355. 864, 881, 898, 915, 933, 951, 969, 988,
  356. 1007, 1026, 1046, 1066, 1087, 1108, 1129, 1151,
  357. 1173, 1196, 1219, 1243, 1267, 1292, 1317, 1343,
  358. 1369, 1396, 1423, 1451, 1479, 1508, 1537, 1567,
  359. 1597, 1628, 1660, 1692, 1725, 1759, 1793, 1828,
  360. }, {
  361. 4, 9, 11, 13, 16, 18, 21, 24,
  362. 27, 30, 33, 37, 40, 44, 48, 51,
  363. 55, 59, 63, 67, 71, 75, 79, 83,
  364. 88, 92, 96, 100, 105, 109, 114, 118,
  365. 122, 127, 131, 136, 140, 145, 149, 154,
  366. 158, 163, 168, 172, 177, 181, 186, 190,
  367. 195, 199, 204, 208, 213, 217, 222, 226,
  368. 231, 235, 240, 244, 249, 253, 258, 262,
  369. 267, 271, 275, 280, 284, 289, 293, 297,
  370. 302, 306, 311, 315, 319, 324, 328, 332,
  371. 337, 341, 345, 349, 354, 358, 362, 367,
  372. 371, 375, 379, 384, 388, 392, 396, 401,
  373. 409, 417, 425, 433, 441, 449, 458, 466,
  374. 474, 482, 490, 498, 506, 514, 523, 531,
  375. 539, 547, 555, 563, 571, 579, 588, 596,
  376. 604, 616, 628, 640, 652, 664, 676, 688,
  377. 700, 713, 725, 737, 749, 761, 773, 785,
  378. 797, 809, 825, 841, 857, 873, 889, 905,
  379. 922, 938, 954, 970, 986, 1002, 1018, 1038,
  380. 1058, 1078, 1098, 1118, 1138, 1158, 1178, 1198,
  381. 1218, 1242, 1266, 1290, 1314, 1338, 1362, 1386,
  382. 1411, 1435, 1463, 1491, 1519, 1547, 1575, 1603,
  383. 1631, 1663, 1695, 1727, 1759, 1791, 1823, 1859,
  384. 1895, 1931, 1967, 2003, 2039, 2079, 2119, 2159,
  385. 2199, 2239, 2283, 2327, 2371, 2415, 2459, 2507,
  386. 2555, 2603, 2651, 2703, 2755, 2807, 2859, 2915,
  387. 2971, 3027, 3083, 3143, 3203, 3263, 3327, 3391,
  388. 3455, 3523, 3591, 3659, 3731, 3803, 3876, 3952,
  389. 4028, 4104, 4184, 4264, 4348, 4432, 4516, 4604,
  390. 4692, 4784, 4876, 4972, 5068, 5168, 5268, 5372,
  391. 5476, 5584, 5692, 5804, 5916, 6032, 6148, 6268,
  392. 6388, 6512, 6640, 6768, 6900, 7036, 7172, 7312,
  393. }, {
  394. 4, 13, 19, 27, 35, 44, 54, 64,
  395. 75, 87, 99, 112, 126, 139, 154, 168,
  396. 183, 199, 214, 230, 247, 263, 280, 297,
  397. 314, 331, 349, 366, 384, 402, 420, 438,
  398. 456, 475, 493, 511, 530, 548, 567, 586,
  399. 604, 623, 642, 660, 679, 698, 716, 735,
  400. 753, 772, 791, 809, 828, 846, 865, 884,
  401. 902, 920, 939, 957, 976, 994, 1012, 1030,
  402. 1049, 1067, 1085, 1103, 1121, 1139, 1157, 1175,
  403. 1193, 1211, 1229, 1246, 1264, 1282, 1299, 1317,
  404. 1335, 1352, 1370, 1387, 1405, 1422, 1440, 1457,
  405. 1474, 1491, 1509, 1526, 1543, 1560, 1577, 1595,
  406. 1627, 1660, 1693, 1725, 1758, 1791, 1824, 1856,
  407. 1889, 1922, 1954, 1987, 2020, 2052, 2085, 2118,
  408. 2150, 2183, 2216, 2248, 2281, 2313, 2346, 2378,
  409. 2411, 2459, 2508, 2556, 2605, 2653, 2701, 2750,
  410. 2798, 2847, 2895, 2943, 2992, 3040, 3088, 3137,
  411. 3185, 3234, 3298, 3362, 3426, 3491, 3555, 3619,
  412. 3684, 3748, 3812, 3876, 3941, 4005, 4069, 4149,
  413. 4230, 4310, 4390, 4470, 4550, 4631, 4711, 4791,
  414. 4871, 4967, 5064, 5160, 5256, 5352, 5448, 5544,
  415. 5641, 5737, 5849, 5961, 6073, 6185, 6297, 6410,
  416. 6522, 6650, 6778, 6906, 7034, 7162, 7290, 7435,
  417. 7579, 7723, 7867, 8011, 8155, 8315, 8475, 8635,
  418. 8795, 8956, 9132, 9308, 9484, 9660, 9836, 10028,
  419. 10220, 10412, 10604, 10812, 11020, 11228, 11437, 11661,
  420. 11885, 12109, 12333, 12573, 12813, 13053, 13309, 13565,
  421. 13821, 14093, 14365, 14637, 14925, 15213, 15502, 15806,
  422. 16110, 16414, 16734, 17054, 17390, 17726, 18062, 18414,
  423. 18766, 19134, 19502, 19886, 20270, 20670, 21070, 21486,
  424. 21902, 22334, 22766, 23214, 23662, 24126, 24590, 25070,
  425. 25551, 26047, 26559, 27071, 27599, 28143, 28687, 29247,
  426. }
  427. };
  428. static const enum TxfmType vp9_intra_txfm_type[14] = {
  429. [VERT_PRED] = ADST_DCT,
  430. [HOR_PRED] = DCT_ADST,
  431. [DC_PRED] = DCT_DCT,
  432. [DIAG_DOWN_LEFT_PRED] = DCT_DCT,
  433. [DIAG_DOWN_RIGHT_PRED] = ADST_ADST,
  434. [VERT_RIGHT_PRED] = ADST_DCT,
  435. [HOR_DOWN_PRED] = DCT_ADST,
  436. [VERT_LEFT_PRED] = ADST_DCT,
  437. [HOR_UP_PRED] = DCT_ADST,
  438. [TM_VP8_PRED] = ADST_ADST,
  439. [NEARESTMV] = DCT_DCT,
  440. [NEARMV] = DCT_DCT,
  441. [ZEROMV] = DCT_DCT,
  442. [NEWMV] = DCT_DCT,
  443. };
  444. static const int16_t vp9_default_scan_4x4[16] = {
  445. 0, 1, 4, 5,
  446. 2, 8, 3, 6,
  447. 12, 9, 7, 10,
  448. 13, 11, 14, 15,
  449. };
  450. static const int16_t vp9_col_scan_4x4[16] = {
  451. 0, 1, 2, 4,
  452. 3, 5, 6, 8,
  453. 7, 9, 10, 12,
  454. 13, 11, 14, 15,
  455. };
  456. static const int16_t vp9_row_scan_4x4[16] = {
  457. 0, 4, 1, 8,
  458. 5, 12, 9, 2,
  459. 6, 13, 3, 10,
  460. 7, 14, 11, 15,
  461. };
  462. static const int16_t vp9_default_scan_8x8[64] = {
  463. 0, 1, 8, 2, 9, 16, 10, 3,
  464. 17, 24, 18, 11, 4, 25, 32, 19,
  465. 12, 26, 5, 33, 20, 27, 40, 13,
  466. 34, 6, 41, 28, 21, 35, 42, 48,
  467. 14, 7, 36, 29, 43, 56, 49, 22,
  468. 15, 37, 50, 44, 57, 30, 23, 51,
  469. 45, 58, 38, 31, 52, 59, 39, 46,
  470. 53, 60, 47, 54, 61, 55, 62, 63,
  471. };
  472. static const int16_t vp9_col_scan_8x8[64] = {
  473. 0, 1, 2, 8, 3, 9, 4, 10,
  474. 16, 5, 11, 17, 12, 18, 6, 24,
  475. 19, 13, 25, 7, 26, 20, 32, 14,
  476. 27, 21, 33, 28, 34, 15, 22, 35,
  477. 40, 29, 41, 36, 23, 30, 42, 37,
  478. 48, 43, 31, 44, 49, 38, 50, 56,
  479. 45, 39, 51, 57, 52, 46, 58, 53,
  480. 59, 47, 60, 54, 61, 55, 62, 63,
  481. };
  482. static const int16_t vp9_row_scan_8x8[64] = {
  483. 0, 8, 16, 1, 9, 24, 2, 17,
  484. 32, 10, 25, 3, 40, 18, 11, 33,
  485. 26, 19, 4, 48, 41, 34, 12, 27,
  486. 56, 20, 5, 42, 35, 13, 49, 28,
  487. 6, 21, 43, 36, 14, 50, 29, 57,
  488. 7, 44, 22, 37, 51, 15, 58, 30,
  489. 23, 45, 52, 38, 59, 31, 46, 53,
  490. 39, 60, 47, 61, 54, 62, 55, 63,
  491. };
  492. static const int16_t vp9_default_scan_16x16[256] = {
  493. 0, 1, 16, 2, 17, 32, 3, 18, 33, 48, 4, 34, 19, 49, 20, 5,
  494. 35, 64, 50, 36, 65, 21, 6, 51, 80, 66, 37, 22, 52, 7, 81, 67,
  495. 38, 82, 53, 23, 96, 68, 8, 83, 97, 54, 39, 69, 112, 24, 98, 84,
  496. 70, 55, 9, 40, 85, 99, 113, 128, 25, 114, 100, 71, 86, 56, 10, 41,
  497. 115, 101, 129, 116, 72, 87, 26, 130, 144, 102, 57, 11, 42, 117, 131, 145,
  498. 88, 103, 27, 73, 132, 118, 146, 58, 160, 12, 43, 133, 147, 104, 89, 119,
  499. 161, 74, 148, 134, 28, 162, 59, 13, 176, 120, 149, 90, 135, 105, 163, 44,
  500. 75, 177, 164, 29, 150, 121, 136, 178, 165, 14, 106, 60, 91, 151, 45, 179,
  501. 192, 137, 166, 122, 76, 180, 152, 30, 61, 15, 107, 167, 181, 193, 92, 208,
  502. 46, 138, 123, 153, 194, 77, 168, 182, 31, 195, 209, 183, 108, 139, 62, 154,
  503. 47, 196, 93, 169, 210, 197, 224, 124, 184, 211, 78, 109, 170, 155, 63, 198,
  504. 212, 185, 225, 240, 140, 94, 199, 125, 79, 213, 226, 171, 186, 156, 214, 200,
  505. 110, 227, 141, 95, 241, 215, 228, 201, 126, 242, 187, 172, 157, 229, 111, 216,
  506. 243, 142, 202, 230, 127, 217, 244, 173, 188, 231, 158, 203, 143, 245, 218, 232,
  507. 189, 246, 159, 174, 233, 247, 219, 204, 175, 190, 248, 234, 205, 220, 249, 191,
  508. 235, 221, 250, 206, 222, 251, 236, 207, 237, 223, 252, 238, 253, 239, 254, 255,
  509. };
  510. static const int16_t vp9_col_scan_16x16[256] = {
  511. 0, 1, 2, 3, 16, 4, 17, 5, 18, 6, 19, 32, 20, 7, 33, 21,
  512. 34, 8, 35, 22, 48, 36, 9, 49, 23, 50, 37, 10, 38, 51, 24, 64,
  513. 52, 11, 65, 39, 25, 53, 66, 54, 40, 67, 12, 80, 26, 68, 55, 81,
  514. 41, 69, 13, 27, 82, 56, 70, 83, 42, 14, 84, 96, 71, 28, 57, 85,
  515. 97, 15, 72, 98, 43, 86, 58, 99, 29, 87, 100, 112, 73, 44, 101, 59,
  516. 30, 113, 88, 114, 74, 128, 102, 45, 31, 115, 60, 103, 89, 116, 75, 129,
  517. 117, 46, 104, 90, 61, 130, 118, 131, 132, 105, 76, 47, 119, 144, 91, 62,
  518. 133, 106, 145, 120, 146, 134, 77, 147, 121, 92, 135, 148, 63, 107, 136, 122,
  519. 93, 149, 160, 78, 150, 137, 108, 161, 162, 151, 123, 79, 138, 163, 152, 94,
  520. 164, 109, 165, 153, 124, 139, 176, 166, 95, 177, 167, 110, 154, 178, 125, 179,
  521. 140, 168, 155, 111, 180, 192, 181, 169, 141, 126, 182, 193, 194, 156, 183, 170,
  522. 195, 127, 142, 196, 184, 208, 197, 157, 171, 143, 185, 198, 209, 199, 210, 172,
  523. 158, 186, 211, 224, 212, 200, 240, 159, 213, 225, 187, 201, 173, 226, 214, 215,
  524. 227, 202, 228, 188, 241, 216, 174, 229, 242, 203, 243, 217, 230, 175, 189, 244,
  525. 231, 204, 218, 232, 245, 219, 246, 190, 233, 205, 191, 247, 234, 248, 220, 206,
  526. 249, 235, 221, 207, 250, 236, 222, 251, 223, 237, 238, 252, 239, 253, 254, 255,
  527. };
  528. static const int16_t vp9_row_scan_16x16[256] = {
  529. 0, 16, 32, 1, 48, 17, 64, 33, 2, 80, 18, 49, 96, 34, 3, 65,
  530. 19, 112, 50, 81, 35, 4, 128, 66, 20, 97, 51, 82, 5, 144, 36, 67,
  531. 113, 98, 21, 52, 160, 83, 129, 37, 68, 6, 114, 176, 99, 53, 22, 84,
  532. 145, 38, 69, 130, 7, 115, 192, 100, 54, 23, 85, 161, 146, 131, 39, 70,
  533. 208, 116, 8, 101, 177, 55, 86, 24, 162, 147, 132, 71, 224, 117, 40, 102,
  534. 9, 148, 56, 87, 193, 163, 240, 133, 178, 25, 118, 72, 41, 103, 164, 10,
  535. 149, 88, 134, 209, 179, 57, 119, 194, 26, 73, 165, 150, 104, 42, 135, 11,
  536. 180, 120, 89, 225, 195, 58, 27, 210, 151, 181, 166, 74, 43, 105, 12, 136,
  537. 90, 59, 241, 121, 28, 196, 167, 211, 152, 44, 182, 137, 75, 13, 226, 106,
  538. 122, 60, 197, 91, 168, 29, 183, 153, 14, 76, 212, 138, 45, 107, 15, 198,
  539. 92, 227, 169, 30, 123, 154, 61, 242, 184, 213, 139, 46, 77, 31, 108, 170,
  540. 199, 185, 124, 228, 93, 155, 214, 62, 140, 243, 78, 47, 200, 109, 186, 171,
  541. 201, 94, 63, 215, 229, 156, 79, 125, 141, 110, 216, 187, 172, 244, 202, 230,
  542. 217, 95, 157, 126, 245, 111, 142, 231, 188, 127, 158, 218, 173, 232, 246, 233,
  543. 203, 143, 247, 174, 189, 159, 219, 204, 248, 234, 249, 175, 190, 220, 205, 250,
  544. 235, 191, 221, 251, 236, 206, 252, 222, 207, 237, 223, 253, 238, 254, 239, 255,
  545. };
  546. static const int16_t vp9_default_scan_32x32[1024] = {
  547. 0, 1, 32, 2, 33, 64, 3, 34, 65, 4, 96, 35, 66, 5, 36, 97, 67, 128, 98, 68, 37, 6, 129, 99, 7, 160, 69, 38, 130, 100, 161, 131,
  548. 39, 70, 8, 101, 162, 132, 192, 71, 40, 9, 102, 163, 133, 193, 72, 224, 103, 41, 164, 10, 194, 134, 165, 73, 104, 135, 225, 42, 195, 11, 256, 166,
  549. 226, 196, 74, 105, 136, 43, 12, 167, 197, 227, 257, 75, 106, 137, 228, 44, 198, 168, 258, 288, 13, 229, 76, 107, 199, 138, 259, 169, 289, 45, 230, 260,
  550. 200, 108, 14, 170, 139, 320, 290, 77, 231, 261, 46, 201, 140, 291, 109, 232, 321, 262, 171, 78, 292, 15, 322, 202, 263, 352, 172, 293, 233, 141, 323, 110,
  551. 47, 203, 264, 234, 294, 353, 324, 16, 79, 204, 265, 295, 325, 173, 354, 142, 235, 384, 48, 296, 111, 266, 355, 326, 80, 17, 205, 236, 174, 356, 385, 327,
  552. 143, 297, 267, 357, 386, 112, 49, 328, 298, 206, 416, 237, 358, 387, 81, 175, 18, 329, 359, 388, 299, 330, 389, 113, 417, 238, 360, 50, 207, 418, 390, 331,
  553. 19, 448, 361, 82, 419, 391, 239, 51, 362, 420, 114, 449, 480, 421, 83, 363, 450, 422, 512, 451, 423, 115, 452, 481, 453, 482, 454, 544, 483, 455, 513, 484,
  554. 514, 485, 515, 486, 545, 576, 487, 546, 547, 608, 577, 578, 579, 609, 610, 611, 20, 144, 268, 392, 516, 640, 21, 52, 145, 176, 269, 300, 393, 424, 517, 548,
  555. 641, 672, 22, 53, 84, 146, 177, 208, 270, 301, 332, 394, 425, 456, 518, 549, 580, 642, 673, 704, 23, 54, 85, 116, 147, 178, 209, 240, 271, 302, 333, 364,
  556. 395, 426, 457, 488, 519, 550, 581, 612, 643, 674, 705, 736, 55, 86, 117, 179, 210, 241, 303, 334, 365, 427, 458, 489, 551, 582, 613, 675, 706, 737, 87, 118,
  557. 211, 242, 335, 366, 459, 490, 583, 614, 707, 738, 119, 243, 367, 491, 615, 739, 24, 148, 272, 396, 520, 644, 768, 25, 56, 149, 180, 273, 304, 397, 428, 521,
  558. 552, 645, 676, 769, 800, 26, 57, 88, 150, 181, 212, 274, 305, 336, 398, 429, 460, 522, 553, 584, 646, 677, 708, 770, 801, 832, 27, 58, 89, 120, 151, 182,
  559. 213, 244, 275, 306, 337, 368, 399, 430, 461, 492, 523, 554, 585, 616, 647, 678, 709, 740, 771, 802, 833, 864, 59, 90, 121, 183, 214, 245, 307, 338, 369, 431,
  560. 462, 493, 555, 586, 617, 679, 710, 741, 803, 834, 865, 91, 122, 215, 246, 339, 370, 463, 494, 587, 618, 711, 742, 835, 866, 123, 247, 371, 495, 619, 743, 867,
  561. 28, 152, 276, 400, 524, 648, 772, 896, 29, 60, 153, 184, 277, 308, 401, 432, 525, 556, 649, 680, 773, 804, 897, 928, 30, 61, 92, 154, 185, 216, 278, 309,
  562. 340, 402, 433, 464, 526, 557, 588, 650, 681, 712, 774, 805, 836, 898, 929, 960, 31, 62, 93, 124, 155, 186, 217, 248, 279, 310, 341, 372, 403, 434, 465, 496,
  563. 527, 558, 589, 620, 651, 682, 713, 744, 775, 806, 837, 868, 899, 930, 961, 992, 63, 94, 125, 187, 218, 249, 311, 342, 373, 435, 466, 497, 559, 590, 621, 683,
  564. 714, 745, 807, 838, 869, 931, 962, 993, 95, 126, 219, 250, 343, 374, 467, 498, 591, 622, 715, 746, 839, 870, 963, 994, 127, 251, 375, 499, 623, 747, 871, 995,
  565. 156, 280, 404, 528, 652, 776, 900, 157, 188, 281, 312, 405, 436, 529, 560, 653, 684, 777, 808, 901, 932, 158, 189, 220, 282, 313, 344, 406, 437, 468, 530, 561,
  566. 592, 654, 685, 716, 778, 809, 840, 902, 933, 964, 159, 190, 221, 252, 283, 314, 345, 376, 407, 438, 469, 500, 531, 562, 593, 624, 655, 686, 717, 748, 779, 810,
  567. 841, 872, 903, 934, 965, 996, 191, 222, 253, 315, 346, 377, 439, 470, 501, 563, 594, 625, 687, 718, 749, 811, 842, 873, 935, 966, 997, 223, 254, 347, 378, 471,
  568. 502, 595, 626, 719, 750, 843, 874, 967, 998, 255, 379, 503, 627, 751, 875, 999, 284, 408, 532, 656, 780, 904, 285, 316, 409, 440, 533, 564, 657, 688, 781, 812,
  569. 905, 936, 286, 317, 348, 410, 441, 472, 534, 565, 596, 658, 689, 720, 782, 813, 844, 906, 937, 968, 287, 318, 349, 380, 411, 442, 473, 504, 535, 566, 597, 628,
  570. 659, 690, 721, 752, 783, 814, 845, 876, 907, 938, 969, 1000, 319, 350, 381, 443, 474, 505, 567, 598, 629, 691, 722, 753, 815, 846, 877, 939, 970, 1001, 351, 382,
  571. 475, 506, 599, 630, 723, 754, 847, 878, 971, 1002, 383, 507, 631, 755, 879, 1003, 412, 536, 660, 784, 908, 413, 444, 537, 568, 661, 692, 785, 816, 909, 940, 414,
  572. 445, 476, 538, 569, 600, 662, 693, 724, 786, 817, 848, 910, 941, 972, 415, 446, 477, 508, 539, 570, 601, 632, 663, 694, 725, 756, 787, 818, 849, 880, 911, 942,
  573. 973, 1004, 447, 478, 509, 571, 602, 633, 695, 726, 757, 819, 850, 881, 943, 974, 1005, 479, 510, 603, 634, 727, 758, 851, 882, 975, 1006, 511, 635, 759, 883, 1007,
  574. 540, 664, 788, 912, 541, 572, 665, 696, 789, 820, 913, 944, 542, 573, 604, 666, 697, 728, 790, 821, 852, 914, 945, 976, 543, 574, 605, 636, 667, 698, 729, 760,
  575. 791, 822, 853, 884, 915, 946, 977, 1008, 575, 606, 637, 699, 730, 761, 823, 854, 885, 947, 978, 1009, 607, 638, 731, 762, 855, 886, 979, 1010, 639, 763, 887, 1011,
  576. 668, 792, 916, 669, 700, 793, 824, 917, 948, 670, 701, 732, 794, 825, 856, 918, 949, 980, 671, 702, 733, 764, 795, 826, 857, 888, 919, 950, 981, 1012, 703, 734,
  577. 765, 827, 858, 889, 951, 982, 1013, 735, 766, 859, 890, 983, 1014, 767, 891, 1015, 796, 920, 797, 828, 921, 952, 798, 829, 860, 922, 953, 984, 799, 830, 861, 892,
  578. 923, 954, 985, 1016, 831, 862, 893, 955, 986, 1017, 863, 894, 987, 1018, 895, 1019, 924, 925, 956, 926, 957, 988, 927, 958, 989, 1020, 959, 990, 1021, 991, 1022, 1023,
  579. };
  580. static const int16_t * const vp9_scans[5][4] = {
  581. {
  582. vp9_default_scan_4x4, vp9_col_scan_4x4,
  583. vp9_row_scan_4x4, vp9_default_scan_4x4
  584. }, {
  585. vp9_default_scan_8x8, vp9_col_scan_8x8,
  586. vp9_row_scan_8x8, vp9_default_scan_8x8
  587. }, {
  588. vp9_default_scan_16x16, vp9_col_scan_16x16,
  589. vp9_row_scan_16x16, vp9_default_scan_16x16
  590. }, {
  591. vp9_default_scan_32x32, vp9_default_scan_32x32,
  592. vp9_default_scan_32x32, vp9_default_scan_32x32
  593. }, { // lossless
  594. vp9_default_scan_4x4, vp9_default_scan_4x4,
  595. vp9_default_scan_4x4, vp9_default_scan_4x4
  596. }
  597. };
  598. static const int16_t vp9_default_scan_4x4_nb[16][2] = {
  599. { 0, 0 }, { 0, 0 }, { 4, 1 }, { 1, 1 },
  600. { 4, 4 }, { 2, 2 }, { 5, 2 }, { 8, 8 },
  601. { 8, 5 }, { 6, 3 }, { 9, 6 }, { 12, 9 },
  602. { 10, 7 }, { 13, 10 }, { 14, 11 }, { 0, 0 },
  603. };
  604. static const int16_t vp9_col_scan_4x4_nb[16][2] = {
  605. { 0, 0 }, { 1, 1 }, { 0, 0 }, { 2, 2 },
  606. { 4, 4 }, { 5, 5 }, { 4, 4 }, { 6, 6 },
  607. { 8, 8 }, { 9, 9 }, { 8, 8 }, { 12, 12 },
  608. { 10, 10 }, { 13, 13 }, { 14, 14 }, { 0, 0 },
  609. };
  610. static const int16_t vp9_row_scan_4x4_nb[16][2] = {
  611. { 0, 0 }, { 0, 0 }, { 4, 4 }, { 1, 1 },
  612. { 8, 8 }, { 5, 5 }, { 1, 1 }, { 2, 2 },
  613. { 9, 9 }, { 2, 2 }, { 6, 6 }, { 3, 3 },
  614. { 10, 10 }, { 7, 7 }, { 11, 11 }, { 0, 0 },
  615. };
  616. static const int16_t vp9_default_scan_8x8_nb[64][2] = {
  617. { 0, 0 }, { 0, 0 }, { 1, 1 }, { 8, 1 },
  618. { 8, 8 }, { 9, 2 }, { 2, 2 }, { 16, 9 },
  619. { 16, 16 }, { 17, 10 }, { 10, 3 }, { 3, 3 },
  620. { 24, 17 }, { 24, 24 }, { 18, 11 }, { 11, 4 },
  621. { 25, 18 }, { 4, 4 }, { 32, 25 }, { 19, 12 },
  622. { 26, 19 }, { 32, 32 }, { 12, 5 }, { 33, 26 },
  623. { 5, 5 }, { 40, 33 }, { 27, 20 }, { 20, 13 },
  624. { 34, 27 }, { 41, 34 }, { 40, 40 }, { 13, 6 },
  625. { 6, 6 }, { 35, 28 }, { 28, 21 }, { 42, 35 },
  626. { 48, 48 }, { 48, 41 }, { 21, 14 }, { 14, 7 },
  627. { 36, 29 }, { 49, 42 }, { 43, 36 }, { 56, 49 },
  628. { 29, 22 }, { 22, 15 }, { 50, 43 }, { 44, 37 },
  629. { 57, 50 }, { 37, 30 }, { 30, 23 }, { 51, 44 },
  630. { 58, 51 }, { 38, 31 }, { 45, 38 }, { 52, 45 },
  631. { 59, 52 }, { 46, 39 }, { 53, 46 }, { 60, 53 },
  632. { 54, 47 }, { 61, 54 }, { 62, 55 }, { 0, 0 },
  633. };
  634. static const int16_t vp9_col_scan_8x8_nb[64][2] = {
  635. { 0, 0 }, { 1, 1 }, { 0, 0 }, { 2, 2 },
  636. { 8, 8 }, { 3, 3 }, { 9, 9 }, { 8, 8 },
  637. { 4, 4 }, { 10, 10 }, { 16, 16 }, { 11, 11 },
  638. { 17, 17 }, { 5, 5 }, { 16, 16 }, { 18, 18 },
  639. { 12, 12 }, { 24, 24 }, { 6, 6 }, { 25, 25 },
  640. { 19, 19 }, { 24, 24 }, { 13, 13 }, { 26, 26 },
  641. { 20, 20 }, { 32, 32 }, { 27, 27 }, { 33, 33 },
  642. { 14, 14 }, { 21, 21 }, { 34, 34 }, { 32, 32 },
  643. { 28, 28 }, { 40, 40 }, { 35, 35 }, { 22, 22 },
  644. { 29, 29 }, { 41, 41 }, { 36, 36 }, { 40, 40 },
  645. { 42, 42 }, { 30, 30 }, { 43, 43 }, { 48, 48 },
  646. { 37, 37 }, { 49, 49 }, { 48, 48 }, { 44, 44 },
  647. { 38, 38 }, { 50, 50 }, { 56, 56 }, { 51, 51 },
  648. { 45, 45 }, { 57, 57 }, { 52, 52 }, { 58, 58 },
  649. { 46, 46 }, { 59, 59 }, { 53, 53 }, { 60, 60 },
  650. { 54, 54 }, { 61, 61 }, { 62, 62 }, { 0, 0 },
  651. };
  652. static const int16_t vp9_row_scan_8x8_nb[64][2] = {
  653. { 0, 0 }, { 8, 8 }, { 0, 0 }, { 1, 1 },
  654. { 16, 16 }, { 1, 1 }, { 9, 9 }, { 24, 24 },
  655. { 2, 2 }, { 17, 17 }, { 2, 2 }, { 32, 32 },
  656. { 10, 10 }, { 3, 3 }, { 25, 25 }, { 18, 18 },
  657. { 11, 11 }, { 3, 3 }, { 40, 40 }, { 33, 33 },
  658. { 26, 26 }, { 4, 4 }, { 19, 19 }, { 48, 48 },
  659. { 12, 12 }, { 4, 4 }, { 34, 34 }, { 27, 27 },
  660. { 5, 5 }, { 41, 41 }, { 20, 20 }, { 5, 5 },
  661. { 13, 13 }, { 35, 35 }, { 28, 28 }, { 6, 6 },
  662. { 42, 42 }, { 21, 21 }, { 49, 49 }, { 6, 6 },
  663. { 36, 36 }, { 14, 14 }, { 29, 29 }, { 43, 43 },
  664. { 7, 7 }, { 50, 50 }, { 22, 22 }, { 15, 15 },
  665. { 37, 37 }, { 44, 44 }, { 30, 30 }, { 51, 51 },
  666. { 23, 23 }, { 38, 38 }, { 45, 45 }, { 31, 31 },
  667. { 52, 52 }, { 39, 39 }, { 53, 53 }, { 46, 46 },
  668. { 54, 54 }, { 47, 47 }, { 55, 55 }, { 0, 0 },
  669. };
  670. static const int16_t vp9_default_scan_16x16_nb[256][2] = {
  671. { 0, 0 }, { 0, 0 }, { 1, 1 }, { 16, 1 },
  672. { 16, 16 }, { 2, 2 }, { 17, 2 }, { 32, 17 },
  673. { 32, 32 }, { 3, 3 }, { 33, 18 }, { 18, 3 },
  674. { 48, 33 }, { 19, 4 }, { 4, 4 }, { 34, 19 },
  675. { 48, 48 }, { 49, 34 }, { 35, 20 }, { 64, 49 },
  676. { 20, 5 }, { 5, 5 }, { 50, 35 }, { 64, 64 },
  677. { 65, 50 }, { 36, 21 }, { 21, 6 }, { 51, 36 },
  678. { 6, 6 }, { 80, 65 }, { 66, 51 }, { 37, 22 },
  679. { 81, 66 }, { 52, 37 }, { 22, 7 }, { 80, 80 },
  680. { 67, 52 }, { 7, 7 }, { 82, 67 }, { 96, 81 },
  681. { 53, 38 }, { 38, 23 }, { 68, 53 }, { 96, 96 },
  682. { 23, 8 }, { 97, 82 }, { 83, 68 }, { 69, 54 },
  683. { 54, 39 }, { 8, 8 }, { 39, 24 }, { 84, 69 },
  684. { 98, 83 }, { 112, 97 }, { 112, 112 }, { 24, 9 },
  685. { 113, 98 }, { 99, 84 }, { 70, 55 }, { 85, 70 },
  686. { 55, 40 }, { 9, 9 }, { 40, 25 }, { 114, 99 },
  687. { 100, 85 }, { 128, 113 }, { 115, 100 }, { 71, 56 },
  688. { 86, 71 }, { 25, 10 }, { 129, 114 }, { 128, 128 },
  689. { 101, 86 }, { 56, 41 }, { 10, 10 }, { 41, 26 },
  690. { 116, 101 }, { 130, 115 }, { 144, 129 }, { 87, 72 },
  691. { 102, 87 }, { 26, 11 }, { 72, 57 }, { 131, 116 },
  692. { 117, 102 }, { 145, 130 }, { 57, 42 }, { 144, 144 },
  693. { 11, 11 }, { 42, 27 }, { 132, 117 }, { 146, 131 },
  694. { 103, 88 }, { 88, 73 }, { 118, 103 }, { 160, 145 },
  695. { 73, 58 }, { 147, 132 }, { 133, 118 }, { 27, 12 },
  696. { 161, 146 }, { 58, 43 }, { 12, 12 }, { 160, 160 },
  697. { 119, 104 }, { 148, 133 }, { 89, 74 }, { 134, 119 },
  698. { 104, 89 }, { 162, 147 }, { 43, 28 }, { 74, 59 },
  699. { 176, 161 }, { 163, 148 }, { 28, 13 }, { 149, 134 },
  700. { 120, 105 }, { 135, 120 }, { 177, 162 }, { 164, 149 },
  701. { 13, 13 }, { 105, 90 }, { 59, 44 }, { 90, 75 },
  702. { 150, 135 }, { 44, 29 }, { 178, 163 }, { 176, 176 },
  703. { 136, 121 }, { 165, 150 }, { 121, 106 }, { 75, 60 },
  704. { 179, 164 }, { 151, 136 }, { 29, 14 }, { 60, 45 },
  705. { 14, 14 }, { 106, 91 }, { 166, 151 }, { 180, 165 },
  706. { 192, 177 }, { 91, 76 }, { 192, 192 }, { 45, 30 },
  707. { 137, 122 }, { 122, 107 }, { 152, 137 }, { 193, 178 },
  708. { 76, 61 }, { 167, 152 }, { 181, 166 }, { 30, 15 },
  709. { 194, 179 }, { 208, 193 }, { 182, 167 }, { 107, 92 },
  710. { 138, 123 }, { 61, 46 }, { 153, 138 }, { 46, 31 },
  711. { 195, 180 }, { 92, 77 }, { 168, 153 }, { 209, 194 },
  712. { 196, 181 }, { 208, 208 }, { 123, 108 }, { 183, 168 },
  713. { 210, 195 }, { 77, 62 }, { 108, 93 }, { 169, 154 },
  714. { 154, 139 }, { 62, 47 }, { 197, 182 }, { 211, 196 },
  715. { 184, 169 }, { 224, 209 }, { 224, 224 }, { 139, 124 },
  716. { 93, 78 }, { 198, 183 }, { 124, 109 }, { 78, 63 },
  717. { 212, 197 }, { 225, 210 }, { 170, 155 }, { 185, 170 },
  718. { 155, 140 }, { 213, 198 }, { 199, 184 }, { 109, 94 },
  719. { 226, 211 }, { 140, 125 }, { 94, 79 }, { 240, 225 },
  720. { 214, 199 }, { 227, 212 }, { 200, 185 }, { 125, 110 },
  721. { 241, 226 }, { 186, 171 }, { 171, 156 }, { 156, 141 },
  722. { 228, 213 }, { 110, 95 }, { 215, 200 }, { 242, 227 },
  723. { 141, 126 }, { 201, 186 }, { 229, 214 }, { 126, 111 },
  724. { 216, 201 }, { 243, 228 }, { 172, 157 }, { 187, 172 },
  725. { 230, 215 }, { 157, 142 }, { 202, 187 }, { 142, 127 },
  726. { 244, 229 }, { 217, 202 }, { 231, 216 }, { 188, 173 },
  727. { 245, 230 }, { 158, 143 }, { 173, 158 }, { 232, 217 },
  728. { 246, 231 }, { 218, 203 }, { 203, 188 }, { 174, 159 },
  729. { 189, 174 }, { 247, 232 }, { 233, 218 }, { 204, 189 },
  730. { 219, 204 }, { 248, 233 }, { 190, 175 }, { 234, 219 },
  731. { 220, 205 }, { 249, 234 }, { 205, 190 }, { 221, 206 },
  732. { 250, 235 }, { 235, 220 }, { 206, 191 }, { 236, 221 },
  733. { 222, 207 }, { 251, 236 }, { 237, 222 }, { 252, 237 },
  734. { 238, 223 }, { 253, 238 }, { 254, 239 }, { 0, 0 },
  735. };
  736. static const int16_t vp9_col_scan_16x16_nb[256][2] = {
  737. { 0, 0 }, { 1, 1 }, { 2, 2 }, { 0, 0 },
  738. { 3, 3 }, { 16, 16 }, { 4, 4 }, { 17, 17 },
  739. { 5, 5 }, { 18, 18 }, { 16, 16 }, { 19, 19 },
  740. { 6, 6 }, { 32, 32 }, { 20, 20 }, { 33, 33 },
  741. { 7, 7 }, { 34, 34 }, { 21, 21 }, { 32, 32 },
  742. { 35, 35 }, { 8, 8 }, { 48, 48 }, { 22, 22 },
  743. { 49, 49 }, { 36, 36 }, { 9, 9 }, { 37, 37 },
  744. { 50, 50 }, { 23, 23 }, { 48, 48 }, { 51, 51 },
  745. { 10, 10 }, { 64, 64 }, { 38, 38 }, { 24, 24 },
  746. { 52, 52 }, { 65, 65 }, { 53, 53 }, { 39, 39 },
  747. { 66, 66 }, { 11, 11 }, { 64, 64 }, { 25, 25 },
  748. { 67, 67 }, { 54, 54 }, { 80, 80 }, { 40, 40 },
  749. { 68, 68 }, { 12, 12 }, { 26, 26 }, { 81, 81 },
  750. { 55, 55 }, { 69, 69 }, { 82, 82 }, { 41, 41 },
  751. { 13, 13 }, { 83, 83 }, { 80, 80 }, { 70, 70 },
  752. { 27, 27 }, { 56, 56 }, { 84, 84 }, { 96, 96 },
  753. { 14, 14 }, { 71, 71 }, { 97, 97 }, { 42, 42 },
  754. { 85, 85 }, { 57, 57 }, { 98, 98 }, { 28, 28 },
  755. { 86, 86 }, { 99, 99 }, { 96, 96 }, { 72, 72 },
  756. { 43, 43 }, { 100, 100 }, { 58, 58 }, { 29, 29 },
  757. { 112, 112 }, { 87, 87 }, { 113, 113 }, { 73, 73 },
  758. { 112, 112 }, { 101, 101 }, { 44, 44 }, { 30, 30 },
  759. { 114, 114 }, { 59, 59 }, { 102, 102 }, { 88, 88 },
  760. { 115, 115 }, { 74, 74 }, { 128, 128 }, { 116, 116 },
  761. { 45, 45 }, { 103, 103 }, { 89, 89 }, { 60, 60 },
  762. { 129, 129 }, { 117, 117 }, { 130, 130 }, { 131, 131 },
  763. { 104, 104 }, { 75, 75 }, { 46, 46 }, { 118, 118 },
  764. { 128, 128 }, { 90, 90 }, { 61, 61 }, { 132, 132 },
  765. { 105, 105 }, { 144, 144 }, { 119, 119 }, { 145, 145 },
  766. { 133, 133 }, { 76, 76 }, { 146, 146 }, { 120, 120 },
  767. { 91, 91 }, { 134, 134 }, { 147, 147 }, { 62, 62 },
  768. { 106, 106 }, { 135, 135 }, { 121, 121 }, { 92, 92 },
  769. { 148, 148 }, { 144, 144 }, { 77, 77 }, { 149, 149 },
  770. { 136, 136 }, { 107, 107 }, { 160, 160 }, { 161, 161 },
  771. { 150, 150 }, { 122, 122 }, { 78, 78 }, { 137, 137 },
  772. { 162, 162 }, { 151, 151 }, { 93, 93 }, { 163, 163 },
  773. { 108, 108 }, { 164, 164 }, { 152, 152 }, { 123, 123 },
  774. { 138, 138 }, { 160, 160 }, { 165, 165 }, { 94, 94 },
  775. { 176, 176 }, { 166, 166 }, { 109, 109 }, { 153, 153 },
  776. { 177, 177 }, { 124, 124 }, { 178, 178 }, { 139, 139 },
  777. { 167, 167 }, { 154, 154 }, { 110, 110 }, { 179, 179 },
  778. { 176, 176 }, { 180, 180 }, { 168, 168 }, { 140, 140 },
  779. { 125, 125 }, { 181, 181 }, { 192, 192 }, { 193, 193 },
  780. { 155, 155 }, { 182, 182 }, { 169, 169 }, { 194, 194 },
  781. { 126, 126 }, { 141, 141 }, { 195, 195 }, { 183, 183 },
  782. { 192, 192 }, { 196, 196 }, { 156, 156 }, { 170, 170 },
  783. { 142, 142 }, { 184, 184 }, { 197, 197 }, { 208, 208 },
  784. { 198, 198 }, { 209, 209 }, { 171, 171 }, { 157, 157 },
  785. { 185, 185 }, { 210, 210 }, { 208, 208 }, { 211, 211 },
  786. { 199, 199 }, { 224, 224 }, { 158, 158 }, { 212, 212 },
  787. { 224, 224 }, { 186, 186 }, { 200, 200 }, { 172, 172 },
  788. { 225, 225 }, { 213, 213 }, { 214, 214 }, { 226, 226 },
  789. { 201, 201 }, { 227, 227 }, { 187, 187 }, { 240, 240 },
  790. { 215, 215 }, { 173, 173 }, { 228, 228 }, { 241, 241 },
  791. { 202, 202 }, { 242, 242 }, { 216, 216 }, { 229, 229 },
  792. { 174, 174 }, { 188, 188 }, { 243, 243 }, { 230, 230 },
  793. { 203, 203 }, { 217, 217 }, { 231, 231 }, { 244, 244 },
  794. { 218, 218 }, { 245, 245 }, { 189, 189 }, { 232, 232 },
  795. { 204, 204 }, { 190, 190 }, { 246, 246 }, { 233, 233 },
  796. { 247, 247 }, { 219, 219 }, { 205, 205 }, { 248, 248 },
  797. { 234, 234 }, { 220, 220 }, { 206, 206 }, { 249, 249 },
  798. { 235, 235 }, { 221, 221 }, { 250, 250 }, { 222, 222 },
  799. { 236, 236 }, { 237, 237 }, { 251, 251 }, { 238, 238 },
  800. { 252, 252 }, { 253, 253 }, { 254, 254 }, { 0, 0 },
  801. };
  802. static const int16_t vp9_row_scan_16x16_nb[256][2] = {
  803. { 0, 0 }, { 16, 16 }, { 0, 0 }, { 32, 32 },
  804. { 1, 1 }, { 48, 48 }, { 17, 17 }, { 1, 1 },
  805. { 64, 64 }, { 2, 2 }, { 33, 33 }, { 80, 80 },
  806. { 18, 18 }, { 2, 2 }, { 49, 49 }, { 3, 3 },
  807. { 96, 96 }, { 34, 34 }, { 65, 65 }, { 19, 19 },
  808. { 3, 3 }, { 112, 112 }, { 50, 50 }, { 4, 4 },
  809. { 81, 81 }, { 35, 35 }, { 66, 66 }, { 4, 4 },
  810. { 128, 128 }, { 20, 20 }, { 51, 51 }, { 97, 97 },
  811. { 82, 82 }, { 5, 5 }, { 36, 36 }, { 144, 144 },
  812. { 67, 67 }, { 113, 113 }, { 21, 21 }, { 52, 52 },
  813. { 5, 5 }, { 98, 98 }, { 160, 160 }, { 83, 83 },
  814. { 37, 37 }, { 6, 6 }, { 68, 68 }, { 129, 129 },
  815. { 22, 22 }, { 53, 53 }, { 114, 114 }, { 6, 6 },
  816. { 99, 99 }, { 176, 176 }, { 84, 84 }, { 38, 38 },
  817. { 7, 7 }, { 69, 69 }, { 145, 145 }, { 130, 130 },
  818. { 115, 115 }, { 23, 23 }, { 54, 54 }, { 192, 192 },
  819. { 100, 100 }, { 7, 7 }, { 85, 85 }, { 161, 161 },
  820. { 39, 39 }, { 70, 70 }, { 8, 8 }, { 146, 146 },
  821. { 131, 131 }, { 116, 116 }, { 55, 55 }, { 208, 208 },
  822. { 101, 101 }, { 24, 24 }, { 86, 86 }, { 8, 8 },
  823. { 132, 132 }, { 40, 40 }, { 71, 71 }, { 177, 177 },
  824. { 147, 147 }, { 224, 224 }, { 117, 117 }, { 162, 162 },
  825. { 9, 9 }, { 102, 102 }, { 56, 56 }, { 25, 25 },
  826. { 87, 87 }, { 148, 148 }, { 9, 9 }, { 133, 133 },
  827. { 72, 72 }, { 118, 118 }, { 193, 193 }, { 163, 163 },
  828. { 41, 41 }, { 103, 103 }, { 178, 178 }, { 10, 10 },
  829. { 57, 57 }, { 149, 149 }, { 134, 134 }, { 88, 88 },
  830. { 26, 26 }, { 119, 119 }, { 10, 10 }, { 164, 164 },
  831. { 104, 104 }, { 73, 73 }, { 209, 209 }, { 179, 179 },
  832. { 42, 42 }, { 11, 11 }, { 194, 194 }, { 135, 135 },
  833. { 165, 165 }, { 150, 150 }, { 58, 58 }, { 27, 27 },
  834. { 89, 89 }, { 11, 11 }, { 120, 120 }, { 74, 74 },
  835. { 43, 43 }, { 225, 225 }, { 105, 105 }, { 12, 12 },
  836. { 180, 180 }, { 151, 151 }, { 195, 195 }, { 136, 136 },
  837. { 28, 28 }, { 166, 166 }, { 121, 121 }, { 59, 59 },
  838. { 12, 12 }, { 210, 210 }, { 90, 90 }, { 106, 106 },
  839. { 44, 44 }, { 181, 181 }, { 75, 75 }, { 152, 152 },
  840. { 13, 13 }, { 167, 167 }, { 137, 137 }, { 13, 13 },
  841. { 60, 60 }, { 196, 196 }, { 122, 122 }, { 29, 29 },
  842. { 91, 91 }, { 14, 14 }, { 182, 182 }, { 76, 76 },
  843. { 211, 211 }, { 153, 153 }, { 14, 14 }, { 107, 107 },
  844. { 138, 138 }, { 45, 45 }, { 226, 226 }, { 168, 168 },
  845. { 197, 197 }, { 123, 123 }, { 30, 30 }, { 61, 61 },
  846. { 15, 15 }, { 92, 92 }, { 154, 154 }, { 183, 183 },
  847. { 169, 169 }, { 108, 108 }, { 212, 212 }, { 77, 77 },
  848. { 139, 139 }, { 198, 198 }, { 46, 46 }, { 124, 124 },
  849. { 227, 227 }, { 62, 62 }, { 31, 31 }, { 184, 184 },
  850. { 93, 93 }, { 170, 170 }, { 155, 155 }, { 185, 185 },
  851. { 78, 78 }, { 47, 47 }, { 199, 199 }, { 213, 213 },
  852. { 140, 140 }, { 63, 63 }, { 109, 109 }, { 125, 125 },
  853. { 94, 94 }, { 200, 200 }, { 171, 171 }, { 156, 156 },
  854. { 228, 228 }, { 186, 186 }, { 214, 214 }, { 201, 201 },
  855. { 79, 79 }, { 141, 141 }, { 110, 110 }, { 229, 229 },
  856. { 95, 95 }, { 126, 126 }, { 215, 215 }, { 172, 172 },
  857. { 111, 111 }, { 142, 142 }, { 202, 202 }, { 157, 157 },
  858. { 216, 216 }, { 230, 230 }, { 217, 217 }, { 187, 187 },
  859. { 127, 127 }, { 231, 231 }, { 158, 158 }, { 173, 173 },
  860. { 143, 143 }, { 203, 203 }, { 188, 188 }, { 232, 232 },
  861. { 218, 218 }, { 233, 233 }, { 159, 159 }, { 174, 174 },
  862. { 204, 204 }, { 189, 189 }, { 234, 234 }, { 219, 219 },
  863. { 175, 175 }, { 205, 205 }, { 235, 235 }, { 220, 220 },
  864. { 190, 190 }, { 236, 236 }, { 206, 206 }, { 191, 191 },
  865. { 221, 221 }, { 207, 207 }, { 237, 237 }, { 222, 222 },
  866. { 238, 238 }, { 223, 223 }, { 239, 239 }, { 0, 0 },
  867. };
  868. static const int16_t vp9_default_scan_32x32_nb[1024][2] = {
  869. { 0, 0 }, { 0, 0 }, { 1, 1 }, { 32, 1 },
  870. { 32, 32 }, { 2, 2 }, { 33, 2 }, { 64, 33 },
  871. { 3, 3 }, { 64, 64 }, { 34, 3 }, { 65, 34 },
  872. { 4, 4 }, { 35, 4 }, { 96, 65 }, { 66, 35 },
  873. { 96, 96 }, { 97, 66 }, { 67, 36 }, { 36, 5 },
  874. { 5, 5 }, { 128, 97 }, { 98, 67 }, { 6, 6 },
  875. { 128, 128 }, { 68, 37 }, { 37, 6 }, { 129, 98 },
  876. { 99, 68 }, { 160, 129 }, { 130, 99 }, { 38, 7 },
  877. { 69, 38 }, { 7, 7 }, { 100, 69 }, { 161, 130 },
  878. { 131, 100 }, { 160, 160 }, { 70, 39 }, { 39, 8 },
  879. { 8, 8 }, { 101, 70 }, { 162, 131 }, { 132, 101 },
  880. { 192, 161 }, { 71, 40 }, { 192, 192 }, { 102, 71 },
  881. { 40, 9 }, { 163, 132 }, { 9, 9 }, { 193, 162 },
  882. { 133, 102 }, { 164, 133 }, { 72, 41 }, { 103, 72 },
  883. { 134, 103 }, { 224, 193 }, { 41, 10 }, { 194, 163 },
  884. { 10, 10 }, { 224, 224 }, { 165, 134 }, { 225, 194 },
  885. { 195, 164 }, { 73, 42 }, { 104, 73 }, { 135, 104 },
  886. { 42, 11 }, { 11, 11 }, { 166, 135 }, { 196, 165 },
  887. { 226, 195 }, { 256, 225 }, { 74, 43 }, { 105, 74 },
  888. { 136, 105 }, { 227, 196 }, { 43, 12 }, { 197, 166 },
  889. { 167, 136 }, { 257, 226 }, { 256, 256 }, { 12, 12 },
  890. { 228, 197 }, { 75, 44 }, { 106, 75 }, { 198, 167 },
  891. { 137, 106 }, { 258, 227 }, { 168, 137 }, { 288, 257 },
  892. { 44, 13 }, { 229, 198 }, { 259, 228 }, { 199, 168 },
  893. { 107, 76 }, { 13, 13 }, { 169, 138 }, { 138, 107 },
  894. { 288, 288 }, { 289, 258 }, { 76, 45 }, { 230, 199 },
  895. { 260, 229 }, { 45, 14 }, { 200, 169 }, { 139, 108 },
  896. { 290, 259 }, { 108, 77 }, { 231, 200 }, { 320, 289 },
  897. { 261, 230 }, { 170, 139 }, { 77, 46 }, { 291, 260 },
  898. { 14, 14 }, { 321, 290 }, { 201, 170 }, { 262, 231 },
  899. { 320, 320 }, { 171, 140 }, { 292, 261 }, { 232, 201 },
  900. { 140, 109 }, { 322, 291 }, { 109, 78 }, { 46, 15 },
  901. { 202, 171 }, { 263, 232 }, { 233, 202 }, { 293, 262 },
  902. { 352, 321 }, { 323, 292 }, { 15, 15 }, { 78, 47 },
  903. { 203, 172 }, { 264, 233 }, { 294, 263 }, { 324, 293 },
  904. { 172, 141 }, { 353, 322 }, { 141, 110 }, { 234, 203 },
  905. { 352, 352 }, { 47, 16 }, { 295, 264 }, { 110, 79 },
  906. { 265, 234 }, { 354, 323 }, { 325, 294 }, { 79, 48 },
  907. { 16, 16 }, { 204, 173 }, { 235, 204 }, { 173, 142 },
  908. { 355, 324 }, { 384, 353 }, { 326, 295 }, { 142, 111 },
  909. { 296, 265 }, { 266, 235 }, { 356, 325 }, { 385, 354 },
  910. { 111, 80 }, { 48, 17 }, { 327, 296 }, { 297, 266 },
  911. { 205, 174 }, { 384, 384 }, { 236, 205 }, { 357, 326 },
  912. { 386, 355 }, { 80, 49 }, { 174, 143 }, { 17, 17 },
  913. { 328, 297 }, { 358, 327 }, { 387, 356 }, { 298, 267 },
  914. { 329, 298 }, { 388, 357 }, { 112, 81 }, { 416, 385 },
  915. { 237, 206 }, { 359, 328 }, { 49, 18 }, { 206, 175 },
  916. { 417, 386 }, { 389, 358 }, { 330, 299 }, { 18, 18 },
  917. { 416, 416 }, { 360, 329 }, { 81, 50 }, { 418, 387 },
  918. { 390, 359 }, { 238, 207 }, { 50, 19 }, { 361, 330 },
  919. { 419, 388 }, { 113, 82 }, { 448, 417 }, { 448, 448 },
  920. { 420, 389 }, { 82, 51 }, { 362, 331 }, { 449, 418 },
  921. { 421, 390 }, { 480, 480 }, { 450, 419 }, { 422, 391 },
  922. { 114, 83 }, { 451, 420 }, { 480, 449 }, { 452, 421 },
  923. { 481, 450 }, { 453, 422 }, { 512, 512 }, { 482, 451 },
  924. { 454, 423 }, { 512, 481 }, { 483, 452 }, { 513, 482 },
  925. { 484, 453 }, { 514, 483 }, { 485, 454 }, { 544, 513 },
  926. { 544, 544 }, { 486, 455 }, { 545, 514 }, { 546, 515 },
  927. { 576, 576 }, { 576, 545 }, { 577, 546 }, { 578, 547 },
  928. { 608, 577 }, { 609, 578 }, { 610, 579 }, { 19, 19 },
  929. { 143, 112 }, { 267, 236 }, { 391, 360 }, { 515, 484 },
  930. { 608, 608 }, { 20, 20 }, { 51, 20 }, { 144, 113 },
  931. { 175, 144 }, { 268, 237 }, { 299, 268 }, { 392, 361 },
  932. { 423, 392 }, { 516, 485 }, { 547, 516 }, { 640, 609 },
  933. { 640, 640 }, { 21, 21 }, { 52, 21 }, { 83, 52 },
  934. { 145, 114 }, { 176, 145 }, { 207, 176 }, { 269, 238 },
  935. { 300, 269 }, { 331, 300 }, { 393, 362 }, { 424, 393 },
  936. { 455, 424 }, { 517, 486 }, { 548, 517 }, { 579, 548 },
  937. { 641, 610 }, { 672, 641 }, { 672, 672 }, { 22, 22 },
  938. { 53, 22 }, { 84, 53 }, { 115, 84 }, { 146, 115 },
  939. { 177, 146 }, { 208, 177 }, { 239, 208 }, { 270, 239 },
  940. { 301, 270 }, { 332, 301 }, { 363, 332 }, { 394, 363 },
  941. { 425, 394 }, { 456, 425 }, { 487, 456 }, { 518, 487 },
  942. { 549, 518 }, { 580, 549 }, { 611, 580 }, { 642, 611 },
  943. { 673, 642 }, { 704, 673 }, { 704, 704 }, { 54, 23 },
  944. { 85, 54 }, { 116, 85 }, { 178, 147 }, { 209, 178 },
  945. { 240, 209 }, { 302, 271 }, { 333, 302 }, { 364, 333 },
  946. { 426, 395 }, { 457, 426 }, { 488, 457 }, { 550, 519 },
  947. { 581, 550 }, { 612, 581 }, { 674, 643 }, { 705, 674 },
  948. { 736, 705 }, { 86, 55 }, { 117, 86 }, { 210, 179 },
  949. { 241, 210 }, { 334, 303 }, { 365, 334 }, { 458, 427 },
  950. { 489, 458 }, { 582, 551 }, { 613, 582 }, { 706, 675 },
  951. { 737, 706 }, { 118, 87 }, { 242, 211 }, { 366, 335 },
  952. { 490, 459 }, { 614, 583 }, { 738, 707 }, { 23, 23 },
  953. { 147, 116 }, { 271, 240 }, { 395, 364 }, { 519, 488 },
  954. { 643, 612 }, { 736, 736 }, { 24, 24 }, { 55, 24 },
  955. { 148, 117 }, { 179, 148 }, { 272, 241 }, { 303, 272 },
  956. { 396, 365 }, { 427, 396 }, { 520, 489 }, { 551, 520 },
  957. { 644, 613 }, { 675, 644 }, { 768, 737 }, { 768, 768 },
  958. { 25, 25 }, { 56, 25 }, { 87, 56 }, { 149, 118 },
  959. { 180, 149 }, { 211, 180 }, { 273, 242 }, { 304, 273 },
  960. { 335, 304 }, { 397, 366 }, { 428, 397 }, { 459, 428 },
  961. { 521, 490 }, { 552, 521 }, { 583, 552 }, { 645, 614 },
  962. { 676, 645 }, { 707, 676 }, { 769, 738 }, { 800, 769 },
  963. { 800, 800 }, { 26, 26 }, { 57, 26 }, { 88, 57 },
  964. { 119, 88 }, { 150, 119 }, { 181, 150 }, { 212, 181 },
  965. { 243, 212 }, { 274, 243 }, { 305, 274 }, { 336, 305 },
  966. { 367, 336 }, { 398, 367 }, { 429, 398 }, { 460, 429 },
  967. { 491, 460 }, { 522, 491 }, { 553, 522 }, { 584, 553 },
  968. { 615, 584 }, { 646, 615 }, { 677, 646 }, { 708, 677 },
  969. { 739, 708 }, { 770, 739 }, { 801, 770 }, { 832, 801 },
  970. { 832, 832 }, { 58, 27 }, { 89, 58 }, { 120, 89 },
  971. { 182, 151 }, { 213, 182 }, { 244, 213 }, { 306, 275 },
  972. { 337, 306 }, { 368, 337 }, { 430, 399 }, { 461, 430 },
  973. { 492, 461 }, { 554, 523 }, { 585, 554 }, { 616, 585 },
  974. { 678, 647 }, { 709, 678 }, { 740, 709 }, { 802, 771 },
  975. { 833, 802 }, { 864, 833 }, { 90, 59 }, { 121, 90 },
  976. { 214, 183 }, { 245, 214 }, { 338, 307 }, { 369, 338 },
  977. { 462, 431 }, { 493, 462 }, { 586, 555 }, { 617, 586 },
  978. { 710, 679 }, { 741, 710 }, { 834, 803 }, { 865, 834 },
  979. { 122, 91 }, { 246, 215 }, { 370, 339 }, { 494, 463 },
  980. { 618, 587 }, { 742, 711 }, { 866, 835 }, { 27, 27 },
  981. { 151, 120 }, { 275, 244 }, { 399, 368 }, { 523, 492 },
  982. { 647, 616 }, { 771, 740 }, { 864, 864 }, { 28, 28 },
  983. { 59, 28 }, { 152, 121 }, { 183, 152 }, { 276, 245 },
  984. { 307, 276 }, { 400, 369 }, { 431, 400 }, { 524, 493 },
  985. { 555, 524 }, { 648, 617 }, { 679, 648 }, { 772, 741 },
  986. { 803, 772 }, { 896, 865 }, { 896, 896 }, { 29, 29 },
  987. { 60, 29 }, { 91, 60 }, { 153, 122 }, { 184, 153 },
  988. { 215, 184 }, { 277, 246 }, { 308, 277 }, { 339, 308 },
  989. { 401, 370 }, { 432, 401 }, { 463, 432 }, { 525, 494 },
  990. { 556, 525 }, { 587, 556 }, { 649, 618 }, { 680, 649 },
  991. { 711, 680 }, { 773, 742 }, { 804, 773 }, { 835, 804 },
  992. { 897, 866 }, { 928, 897 }, { 928, 928 }, { 30, 30 },
  993. { 61, 30 }, { 92, 61 }, { 123, 92 }, { 154, 123 },
  994. { 185, 154 }, { 216, 185 }, { 247, 216 }, { 278, 247 },
  995. { 309, 278 }, { 340, 309 }, { 371, 340 }, { 402, 371 },
  996. { 433, 402 }, { 464, 433 }, { 495, 464 }, { 526, 495 },
  997. { 557, 526 }, { 588, 557 }, { 619, 588 }, { 650, 619 },
  998. { 681, 650 }, { 712, 681 }, { 743, 712 }, { 774, 743 },
  999. { 805, 774 }, { 836, 805 }, { 867, 836 }, { 898, 867 },
  1000. { 929, 898 }, { 960, 929 }, { 960, 960 }, { 62, 31 },
  1001. { 93, 62 }, { 124, 93 }, { 186, 155 }, { 217, 186 },
  1002. { 248, 217 }, { 310, 279 }, { 341, 310 }, { 372, 341 },
  1003. { 434, 403 }, { 465, 434 }, { 496, 465 }, { 558, 527 },
  1004. { 589, 558 }, { 620, 589 }, { 682, 651 }, { 713, 682 },
  1005. { 744, 713 }, { 806, 775 }, { 837, 806 }, { 868, 837 },
  1006. { 930, 899 }, { 961, 930 }, { 992, 961 }, { 94, 63 },
  1007. { 125, 94 }, { 218, 187 }, { 249, 218 }, { 342, 311 },
  1008. { 373, 342 }, { 466, 435 }, { 497, 466 }, { 590, 559 },
  1009. { 621, 590 }, { 714, 683 }, { 745, 714 }, { 838, 807 },
  1010. { 869, 838 }, { 962, 931 }, { 993, 962 }, { 126, 95 },
  1011. { 250, 219 }, { 374, 343 }, { 498, 467 }, { 622, 591 },
  1012. { 746, 715 }, { 870, 839 }, { 994, 963 }, { 155, 124 },
  1013. { 279, 248 }, { 403, 372 }, { 527, 496 }, { 651, 620 },
  1014. { 775, 744 }, { 899, 868 }, { 156, 125 }, { 187, 156 },
  1015. { 280, 249 }, { 311, 280 }, { 404, 373 }, { 435, 404 },
  1016. { 528, 497 }, { 559, 528 }, { 652, 621 }, { 683, 652 },
  1017. { 776, 745 }, { 807, 776 }, { 900, 869 }, { 931, 900 },
  1018. { 157, 126 }, { 188, 157 }, { 219, 188 }, { 281, 250 },
  1019. { 312, 281 }, { 343, 312 }, { 405, 374 }, { 436, 405 },
  1020. { 467, 436 }, { 529, 498 }, { 560, 529 }, { 591, 560 },
  1021. { 653, 622 }, { 684, 653 }, { 715, 684 }, { 777, 746 },
  1022. { 808, 777 }, { 839, 808 }, { 901, 870 }, { 932, 901 },
  1023. { 963, 932 }, { 158, 127 }, { 189, 158 }, { 220, 189 },
  1024. { 251, 220 }, { 282, 251 }, { 313, 282 }, { 344, 313 },
  1025. { 375, 344 }, { 406, 375 }, { 437, 406 }, { 468, 437 },
  1026. { 499, 468 }, { 530, 499 }, { 561, 530 }, { 592, 561 },
  1027. { 623, 592 }, { 654, 623 }, { 685, 654 }, { 716, 685 },
  1028. { 747, 716 }, { 778, 747 }, { 809, 778 }, { 840, 809 },
  1029. { 871, 840 }, { 902, 871 }, { 933, 902 }, { 964, 933 },
  1030. { 995, 964 }, { 190, 159 }, { 221, 190 }, { 252, 221 },
  1031. { 314, 283 }, { 345, 314 }, { 376, 345 }, { 438, 407 },
  1032. { 469, 438 }, { 500, 469 }, { 562, 531 }, { 593, 562 },
  1033. { 624, 593 }, { 686, 655 }, { 717, 686 }, { 748, 717 },
  1034. { 810, 779 }, { 841, 810 }, { 872, 841 }, { 934, 903 },
  1035. { 965, 934 }, { 996, 965 }, { 222, 191 }, { 253, 222 },
  1036. { 346, 315 }, { 377, 346 }, { 470, 439 }, { 501, 470 },
  1037. { 594, 563 }, { 625, 594 }, { 718, 687 }, { 749, 718 },
  1038. { 842, 811 }, { 873, 842 }, { 966, 935 }, { 997, 966 },
  1039. { 254, 223 }, { 378, 347 }, { 502, 471 }, { 626, 595 },
  1040. { 750, 719 }, { 874, 843 }, { 998, 967 }, { 283, 252 },
  1041. { 407, 376 }, { 531, 500 }, { 655, 624 }, { 779, 748 },
  1042. { 903, 872 }, { 284, 253 }, { 315, 284 }, { 408, 377 },
  1043. { 439, 408 }, { 532, 501 }, { 563, 532 }, { 656, 625 },
  1044. { 687, 656 }, { 780, 749 }, { 811, 780 }, { 904, 873 },
  1045. { 935, 904 }, { 285, 254 }, { 316, 285 }, { 347, 316 },
  1046. { 409, 378 }, { 440, 409 }, { 471, 440 }, { 533, 502 },
  1047. { 564, 533 }, { 595, 564 }, { 657, 626 }, { 688, 657 },
  1048. { 719, 688 }, { 781, 750 }, { 812, 781 }, { 843, 812 },
  1049. { 905, 874 }, { 936, 905 }, { 967, 936 }, { 286, 255 },
  1050. { 317, 286 }, { 348, 317 }, { 379, 348 }, { 410, 379 },
  1051. { 441, 410 }, { 472, 441 }, { 503, 472 }, { 534, 503 },
  1052. { 565, 534 }, { 596, 565 }, { 627, 596 }, { 658, 627 },
  1053. { 689, 658 }, { 720, 689 }, { 751, 720 }, { 782, 751 },
  1054. { 813, 782 }, { 844, 813 }, { 875, 844 }, { 906, 875 },
  1055. { 937, 906 }, { 968, 937 }, { 999, 968 }, { 318, 287 },
  1056. { 349, 318 }, { 380, 349 }, { 442, 411 }, { 473, 442 },
  1057. { 504, 473 }, { 566, 535 }, { 597, 566 }, { 628, 597 },
  1058. { 690, 659 }, { 721, 690 }, { 752, 721 }, { 814, 783 },
  1059. { 845, 814 }, { 876, 845 }, { 938, 907 }, { 969, 938 },
  1060. { 1000, 969 }, { 350, 319 }, { 381, 350 }, { 474, 443 },
  1061. { 505, 474 }, { 598, 567 }, { 629, 598 }, { 722, 691 },
  1062. { 753, 722 }, { 846, 815 }, { 877, 846 }, { 970, 939 },
  1063. { 1001, 970 }, { 382, 351 }, { 506, 475 }, { 630, 599 },
  1064. { 754, 723 }, { 878, 847 }, { 1002, 971 }, { 411, 380 },
  1065. { 535, 504 }, { 659, 628 }, { 783, 752 }, { 907, 876 },
  1066. { 412, 381 }, { 443, 412 }, { 536, 505 }, { 567, 536 },
  1067. { 660, 629 }, { 691, 660 }, { 784, 753 }, { 815, 784 },
  1068. { 908, 877 }, { 939, 908 }, { 413, 382 }, { 444, 413 },
  1069. { 475, 444 }, { 537, 506 }, { 568, 537 }, { 599, 568 },
  1070. { 661, 630 }, { 692, 661 }, { 723, 692 }, { 785, 754 },
  1071. { 816, 785 }, { 847, 816 }, { 909, 878 }, { 940, 909 },
  1072. { 971, 940 }, { 414, 383 }, { 445, 414 }, { 476, 445 },
  1073. { 507, 476 }, { 538, 507 }, { 569, 538 }, { 600, 569 },
  1074. { 631, 600 }, { 662, 631 }, { 693, 662 }, { 724, 693 },
  1075. { 755, 724 }, { 786, 755 }, { 817, 786 }, { 848, 817 },
  1076. { 879, 848 }, { 910, 879 }, { 941, 910 }, { 972, 941 },
  1077. { 1003, 972 }, { 446, 415 }, { 477, 446 }, { 508, 477 },
  1078. { 570, 539 }, { 601, 570 }, { 632, 601 }, { 694, 663 },
  1079. { 725, 694 }, { 756, 725 }, { 818, 787 }, { 849, 818 },
  1080. { 880, 849 }, { 942, 911 }, { 973, 942 }, { 1004, 973 },
  1081. { 478, 447 }, { 509, 478 }, { 602, 571 }, { 633, 602 },
  1082. { 726, 695 }, { 757, 726 }, { 850, 819 }, { 881, 850 },
  1083. { 974, 943 }, { 1005, 974 }, { 510, 479 }, { 634, 603 },
  1084. { 758, 727 }, { 882, 851 }, { 1006, 975 }, { 539, 508 },
  1085. { 663, 632 }, { 787, 756 }, { 911, 880 }, { 540, 509 },
  1086. { 571, 540 }, { 664, 633 }, { 695, 664 }, { 788, 757 },
  1087. { 819, 788 }, { 912, 881 }, { 943, 912 }, { 541, 510 },
  1088. { 572, 541 }, { 603, 572 }, { 665, 634 }, { 696, 665 },
  1089. { 727, 696 }, { 789, 758 }, { 820, 789 }, { 851, 820 },
  1090. { 913, 882 }, { 944, 913 }, { 975, 944 }, { 542, 511 },
  1091. { 573, 542 }, { 604, 573 }, { 635, 604 }, { 666, 635 },
  1092. { 697, 666 }, { 728, 697 }, { 759, 728 }, { 790, 759 },
  1093. { 821, 790 }, { 852, 821 }, { 883, 852 }, { 914, 883 },
  1094. { 945, 914 }, { 976, 945 }, { 1007, 976 }, { 574, 543 },
  1095. { 605, 574 }, { 636, 605 }, { 698, 667 }, { 729, 698 },
  1096. { 760, 729 }, { 822, 791 }, { 853, 822 }, { 884, 853 },
  1097. { 946, 915 }, { 977, 946 }, { 1008, 977 }, { 606, 575 },
  1098. { 637, 606 }, { 730, 699 }, { 761, 730 }, { 854, 823 },
  1099. { 885, 854 }, { 978, 947 }, { 1009, 978 }, { 638, 607 },
  1100. { 762, 731 }, { 886, 855 }, { 1010, 979 }, { 667, 636 },
  1101. { 791, 760 }, { 915, 884 }, { 668, 637 }, { 699, 668 },
  1102. { 792, 761 }, { 823, 792 }, { 916, 885 }, { 947, 916 },
  1103. { 669, 638 }, { 700, 669 }, { 731, 700 }, { 793, 762 },
  1104. { 824, 793 }, { 855, 824 }, { 917, 886 }, { 948, 917 },
  1105. { 979, 948 }, { 670, 639 }, { 701, 670 }, { 732, 701 },
  1106. { 763, 732 }, { 794, 763 }, { 825, 794 }, { 856, 825 },
  1107. { 887, 856 }, { 918, 887 }, { 949, 918 }, { 980, 949 },
  1108. { 1011, 980 }, { 702, 671 }, { 733, 702 }, { 764, 733 },
  1109. { 826, 795 }, { 857, 826 }, { 888, 857 }, { 950, 919 },
  1110. { 981, 950 }, { 1012, 981 }, { 734, 703 }, { 765, 734 },
  1111. { 858, 827 }, { 889, 858 }, { 982, 951 }, { 1013, 982 },
  1112. { 766, 735 }, { 890, 859 }, { 1014, 983 }, { 795, 764 },
  1113. { 919, 888 }, { 796, 765 }, { 827, 796 }, { 920, 889 },
  1114. { 951, 920 }, { 797, 766 }, { 828, 797 }, { 859, 828 },
  1115. { 921, 890 }, { 952, 921 }, { 983, 952 }, { 798, 767 },
  1116. { 829, 798 }, { 860, 829 }, { 891, 860 }, { 922, 891 },
  1117. { 953, 922 }, { 984, 953 }, { 1015, 984 }, { 830, 799 },
  1118. { 861, 830 }, { 892, 861 }, { 954, 923 }, { 985, 954 },
  1119. { 1016, 985 }, { 862, 831 }, { 893, 862 }, { 986, 955 },
  1120. { 1017, 986 }, { 894, 863 }, { 1018, 987 }, { 923, 892 },
  1121. { 924, 893 }, { 955, 924 }, { 925, 894 }, { 956, 925 },
  1122. { 987, 956 }, { 926, 895 }, { 957, 926 }, { 988, 957 },
  1123. { 1019, 988 }, { 958, 927 }, { 989, 958 }, { 1020, 989 },
  1124. { 990, 959 }, { 1021, 990 }, { 1022, 991 }, { 0, 0 },
  1125. };
  1126. static const int16_t (* const vp9_scans_nb[5][4])[2] = {
  1127. {
  1128. vp9_default_scan_4x4_nb, vp9_col_scan_4x4_nb,
  1129. vp9_row_scan_4x4_nb, vp9_default_scan_4x4_nb
  1130. }, {
  1131. vp9_default_scan_8x8_nb, vp9_col_scan_8x8_nb,
  1132. vp9_row_scan_8x8_nb, vp9_default_scan_8x8_nb
  1133. }, {
  1134. vp9_default_scan_16x16_nb, vp9_col_scan_16x16_nb,
  1135. vp9_row_scan_16x16_nb, vp9_default_scan_16x16_nb
  1136. }, {
  1137. vp9_default_scan_32x32_nb, vp9_default_scan_32x32_nb,
  1138. vp9_default_scan_32x32_nb, vp9_default_scan_32x32_nb
  1139. }, { // lossless
  1140. vp9_default_scan_4x4_nb, vp9_default_scan_4x4_nb,
  1141. vp9_default_scan_4x4_nb, vp9_default_scan_4x4_nb
  1142. }
  1143. };
  1144. static const uint8_t vp9_model_pareto8[256][8] = {
  1145. { 6, 86, 128, 11, 87, 42, 91, 52 },
  1146. { 3, 86, 128, 6, 86, 23, 88, 29 },
  1147. { 6, 86, 128, 11, 87, 42, 91, 52 },
  1148. { 9, 86, 129, 17, 88, 61, 94, 76 },
  1149. { 12, 86, 129, 22, 88, 77, 97, 93 },
  1150. { 15, 87, 129, 28, 89, 93, 100, 110 },
  1151. { 17, 87, 129, 33, 90, 105, 103, 123 },
  1152. { 20, 88, 130, 38, 91, 118, 106, 136 },
  1153. { 23, 88, 130, 43, 91, 128, 108, 146 },
  1154. { 26, 89, 131, 48, 92, 139, 111, 156 },
  1155. { 28, 89, 131, 53, 93, 147, 114, 163 },
  1156. { 31, 90, 131, 58, 94, 156, 117, 171 },
  1157. { 34, 90, 131, 62, 94, 163, 119, 177 },
  1158. { 37, 90, 132, 66, 95, 171, 122, 184 },
  1159. { 39, 90, 132, 70, 96, 177, 124, 189 },
  1160. { 42, 91, 132, 75, 97, 183, 127, 194 },
  1161. { 44, 91, 132, 79, 97, 188, 129, 198 },
  1162. { 47, 92, 133, 83, 98, 193, 132, 202 },
  1163. { 49, 92, 133, 86, 99, 197, 134, 205 },
  1164. { 52, 93, 133, 90, 100, 201, 137, 208 },
  1165. { 54, 93, 133, 94, 100, 204, 139, 211 },
  1166. { 57, 94, 134, 98, 101, 208, 142, 214 },
  1167. { 59, 94, 134, 101, 102, 211, 144, 216 },
  1168. { 62, 94, 135, 105, 103, 214, 146, 218 },
  1169. { 64, 94, 135, 108, 103, 216, 148, 220 },
  1170. { 66, 95, 135, 111, 104, 219, 151, 222 },
  1171. { 68, 95, 135, 114, 105, 221, 153, 223 },
  1172. { 71, 96, 136, 117, 106, 224, 155, 225 },
  1173. { 73, 96, 136, 120, 106, 225, 157, 226 },
  1174. { 76, 97, 136, 123, 107, 227, 159, 228 },
  1175. { 78, 97, 136, 126, 108, 229, 160, 229 },
  1176. { 80, 98, 137, 129, 109, 231, 162, 231 },
  1177. { 82, 98, 137, 131, 109, 232, 164, 232 },
  1178. { 84, 98, 138, 134, 110, 234, 166, 233 },
  1179. { 86, 98, 138, 137, 111, 235, 168, 234 },
  1180. { 89, 99, 138, 140, 112, 236, 170, 235 },
  1181. { 91, 99, 138, 142, 112, 237, 171, 235 },
  1182. { 93, 100, 139, 145, 113, 238, 173, 236 },
  1183. { 95, 100, 139, 147, 114, 239, 174, 237 },
  1184. { 97, 101, 140, 149, 115, 240, 176, 238 },
  1185. { 99, 101, 140, 151, 115, 241, 177, 238 },
  1186. { 101, 102, 140, 154, 116, 242, 179, 239 },
  1187. { 103, 102, 140, 156, 117, 242, 180, 239 },
  1188. { 105, 103, 141, 158, 118, 243, 182, 240 },
  1189. { 107, 103, 141, 160, 118, 243, 183, 240 },
  1190. { 109, 104, 141, 162, 119, 244, 185, 241 },
  1191. { 111, 104, 141, 164, 119, 244, 186, 241 },
  1192. { 113, 104, 142, 166, 120, 245, 187, 242 },
  1193. { 114, 104, 142, 168, 121, 245, 188, 242 },
  1194. { 116, 105, 143, 170, 122, 246, 190, 243 },
  1195. { 118, 105, 143, 171, 122, 246, 191, 243 },
  1196. { 120, 106, 143, 173, 123, 247, 192, 244 },
  1197. { 121, 106, 143, 175, 124, 247, 193, 244 },
  1198. { 123, 107, 144, 177, 125, 248, 195, 244 },
  1199. { 125, 107, 144, 178, 125, 248, 196, 244 },
  1200. { 127, 108, 145, 180, 126, 249, 197, 245 },
  1201. { 128, 108, 145, 181, 127, 249, 198, 245 },
  1202. { 130, 109, 145, 183, 128, 249, 199, 245 },
  1203. { 132, 109, 145, 184, 128, 249, 200, 245 },
  1204. { 134, 110, 146, 186, 129, 250, 201, 246 },
  1205. { 135, 110, 146, 187, 130, 250, 202, 246 },
  1206. { 137, 111, 147, 189, 131, 251, 203, 246 },
  1207. { 138, 111, 147, 190, 131, 251, 204, 246 },
  1208. { 140, 112, 147, 192, 132, 251, 205, 247 },
  1209. { 141, 112, 147, 193, 132, 251, 206, 247 },
  1210. { 143, 113, 148, 194, 133, 251, 207, 247 },
  1211. { 144, 113, 148, 195, 134, 251, 207, 247 },
  1212. { 146, 114, 149, 197, 135, 252, 208, 248 },
  1213. { 147, 114, 149, 198, 135, 252, 209, 248 },
  1214. { 149, 115, 149, 199, 136, 252, 210, 248 },
  1215. { 150, 115, 149, 200, 137, 252, 210, 248 },
  1216. { 152, 115, 150, 201, 138, 252, 211, 248 },
  1217. { 153, 115, 150, 202, 138, 252, 212, 248 },
  1218. { 155, 116, 151, 204, 139, 253, 213, 249 },
  1219. { 156, 116, 151, 205, 139, 253, 213, 249 },
  1220. { 158, 117, 151, 206, 140, 253, 214, 249 },
  1221. { 159, 117, 151, 207, 141, 253, 215, 249 },
  1222. { 161, 118, 152, 208, 142, 253, 216, 249 },
  1223. { 162, 118, 152, 209, 142, 253, 216, 249 },
  1224. { 163, 119, 153, 210, 143, 253, 217, 249 },
  1225. { 164, 119, 153, 211, 143, 253, 217, 249 },
  1226. { 166, 120, 153, 212, 144, 254, 218, 250 },
  1227. { 167, 120, 153, 212, 145, 254, 219, 250 },
  1228. { 168, 121, 154, 213, 146, 254, 220, 250 },
  1229. { 169, 121, 154, 214, 146, 254, 220, 250 },
  1230. { 171, 122, 155, 215, 147, 254, 221, 250 },
  1231. { 172, 122, 155, 216, 147, 254, 221, 250 },
  1232. { 173, 123, 155, 217, 148, 254, 222, 250 },
  1233. { 174, 123, 155, 217, 149, 254, 222, 250 },
  1234. { 176, 124, 156, 218, 150, 254, 223, 250 },
  1235. { 177, 124, 156, 219, 150, 254, 223, 250 },
  1236. { 178, 125, 157, 220, 151, 254, 224, 251 },
  1237. { 179, 125, 157, 220, 151, 254, 224, 251 },
  1238. { 180, 126, 157, 221, 152, 254, 225, 251 },
  1239. { 181, 126, 157, 221, 152, 254, 225, 251 },
  1240. { 183, 127, 158, 222, 153, 254, 226, 251 },
  1241. { 184, 127, 158, 223, 154, 254, 226, 251 },
  1242. { 185, 128, 159, 224, 155, 255, 227, 251 },
  1243. { 186, 128, 159, 224, 155, 255, 227, 251 },
  1244. { 187, 129, 160, 225, 156, 255, 228, 251 },
  1245. { 188, 130, 160, 225, 156, 255, 228, 251 },
  1246. { 189, 131, 160, 226, 157, 255, 228, 251 },
  1247. { 190, 131, 160, 226, 158, 255, 228, 251 },
  1248. { 191, 132, 161, 227, 159, 255, 229, 251 },
  1249. { 192, 132, 161, 227, 159, 255, 229, 251 },
  1250. { 193, 133, 162, 228, 160, 255, 230, 252 },
  1251. { 194, 133, 162, 229, 160, 255, 230, 252 },
  1252. { 195, 134, 163, 230, 161, 255, 231, 252 },
  1253. { 196, 134, 163, 230, 161, 255, 231, 252 },
  1254. { 197, 135, 163, 231, 162, 255, 231, 252 },
  1255. { 198, 135, 163, 231, 162, 255, 231, 252 },
  1256. { 199, 136, 164, 232, 163, 255, 232, 252 },
  1257. { 200, 136, 164, 232, 164, 255, 232, 252 },
  1258. { 201, 137, 165, 233, 165, 255, 233, 252 },
  1259. { 201, 137, 165, 233, 165, 255, 233, 252 },
  1260. { 202, 138, 166, 233, 166, 255, 233, 252 },
  1261. { 203, 138, 166, 233, 166, 255, 233, 252 },
  1262. { 204, 139, 166, 234, 167, 255, 234, 252 },
  1263. { 205, 139, 166, 234, 167, 255, 234, 252 },
  1264. { 206, 140, 167, 235, 168, 255, 235, 252 },
  1265. { 206, 140, 167, 235, 168, 255, 235, 252 },
  1266. { 207, 141, 168, 236, 169, 255, 235, 252 },
  1267. { 208, 141, 168, 236, 170, 255, 235, 252 },
  1268. { 209, 142, 169, 237, 171, 255, 236, 252 },
  1269. { 209, 143, 169, 237, 171, 255, 236, 252 },
  1270. { 210, 144, 169, 237, 172, 255, 236, 252 },
  1271. { 211, 144, 169, 237, 172, 255, 236, 252 },
  1272. { 212, 145, 170, 238, 173, 255, 237, 252 },
  1273. { 213, 145, 170, 238, 173, 255, 237, 252 },
  1274. { 214, 146, 171, 239, 174, 255, 237, 253 },
  1275. { 214, 146, 171, 239, 174, 255, 237, 253 },
  1276. { 215, 147, 172, 240, 175, 255, 238, 253 },
  1277. { 215, 147, 172, 240, 175, 255, 238, 253 },
  1278. { 216, 148, 173, 240, 176, 255, 238, 253 },
  1279. { 217, 148, 173, 240, 176, 255, 238, 253 },
  1280. { 218, 149, 173, 241, 177, 255, 239, 253 },
  1281. { 218, 149, 173, 241, 178, 255, 239, 253 },
  1282. { 219, 150, 174, 241, 179, 255, 239, 253 },
  1283. { 219, 151, 174, 241, 179, 255, 239, 253 },
  1284. { 220, 152, 175, 242, 180, 255, 240, 253 },
  1285. { 221, 152, 175, 242, 180, 255, 240, 253 },
  1286. { 222, 153, 176, 242, 181, 255, 240, 253 },
  1287. { 222, 153, 176, 242, 181, 255, 240, 253 },
  1288. { 223, 154, 177, 243, 182, 255, 240, 253 },
  1289. { 223, 154, 177, 243, 182, 255, 240, 253 },
  1290. { 224, 155, 178, 244, 183, 255, 241, 253 },
  1291. { 224, 155, 178, 244, 183, 255, 241, 253 },
  1292. { 225, 156, 178, 244, 184, 255, 241, 253 },
  1293. { 225, 157, 178, 244, 184, 255, 241, 253 },
  1294. { 226, 158, 179, 244, 185, 255, 242, 253 },
  1295. { 227, 158, 179, 244, 185, 255, 242, 253 },
  1296. { 228, 159, 180, 245, 186, 255, 242, 253 },
  1297. { 228, 159, 180, 245, 186, 255, 242, 253 },
  1298. { 229, 160, 181, 245, 187, 255, 242, 253 },
  1299. { 229, 160, 181, 245, 187, 255, 242, 253 },
  1300. { 230, 161, 182, 246, 188, 255, 243, 253 },
  1301. { 230, 162, 182, 246, 188, 255, 243, 253 },
  1302. { 231, 163, 183, 246, 189, 255, 243, 253 },
  1303. { 231, 163, 183, 246, 189, 255, 243, 253 },
  1304. { 232, 164, 184, 247, 190, 255, 243, 253 },
  1305. { 232, 164, 184, 247, 190, 255, 243, 253 },
  1306. { 233, 165, 185, 247, 191, 255, 244, 253 },
  1307. { 233, 165, 185, 247, 191, 255, 244, 253 },
  1308. { 234, 166, 185, 247, 192, 255, 244, 253 },
  1309. { 234, 167, 185, 247, 192, 255, 244, 253 },
  1310. { 235, 168, 186, 248, 193, 255, 244, 253 },
  1311. { 235, 168, 186, 248, 193, 255, 244, 253 },
  1312. { 236, 169, 187, 248, 194, 255, 244, 253 },
  1313. { 236, 169, 187, 248, 194, 255, 244, 253 },
  1314. { 236, 170, 188, 248, 195, 255, 245, 253 },
  1315. { 236, 170, 188, 248, 195, 255, 245, 253 },
  1316. { 237, 171, 189, 249, 196, 255, 245, 254 },
  1317. { 237, 172, 189, 249, 196, 255, 245, 254 },
  1318. { 238, 173, 190, 249, 197, 255, 245, 254 },
  1319. { 238, 173, 190, 249, 197, 255, 245, 254 },
  1320. { 239, 174, 191, 249, 198, 255, 245, 254 },
  1321. { 239, 174, 191, 249, 198, 255, 245, 254 },
  1322. { 240, 175, 192, 249, 199, 255, 246, 254 },
  1323. { 240, 176, 192, 249, 199, 255, 246, 254 },
  1324. { 240, 177, 193, 250, 200, 255, 246, 254 },
  1325. { 240, 177, 193, 250, 200, 255, 246, 254 },
  1326. { 241, 178, 194, 250, 201, 255, 246, 254 },
  1327. { 241, 178, 194, 250, 201, 255, 246, 254 },
  1328. { 242, 179, 195, 250, 202, 255, 246, 254 },
  1329. { 242, 180, 195, 250, 202, 255, 246, 254 },
  1330. { 242, 181, 196, 250, 203, 255, 247, 254 },
  1331. { 242, 181, 196, 250, 203, 255, 247, 254 },
  1332. { 243, 182, 197, 251, 204, 255, 247, 254 },
  1333. { 243, 183, 197, 251, 204, 255, 247, 254 },
  1334. { 244, 184, 198, 251, 205, 255, 247, 254 },
  1335. { 244, 184, 198, 251, 205, 255, 247, 254 },
  1336. { 244, 185, 199, 251, 206, 255, 247, 254 },
  1337. { 244, 185, 199, 251, 206, 255, 247, 254 },
  1338. { 245, 186, 200, 251, 207, 255, 247, 254 },
  1339. { 245, 187, 200, 251, 207, 255, 247, 254 },
  1340. { 246, 188, 201, 252, 207, 255, 248, 254 },
  1341. { 246, 188, 201, 252, 207, 255, 248, 254 },
  1342. { 246, 189, 202, 252, 208, 255, 248, 254 },
  1343. { 246, 190, 202, 252, 208, 255, 248, 254 },
  1344. { 247, 191, 203, 252, 209, 255, 248, 254 },
  1345. { 247, 191, 203, 252, 209, 255, 248, 254 },
  1346. { 247, 192, 204, 252, 210, 255, 248, 254 },
  1347. { 247, 193, 204, 252, 210, 255, 248, 254 },
  1348. { 248, 194, 205, 252, 211, 255, 248, 254 },
  1349. { 248, 194, 205, 252, 211, 255, 248, 254 },
  1350. { 248, 195, 206, 252, 212, 255, 249, 254 },
  1351. { 248, 196, 206, 252, 212, 255, 249, 254 },
  1352. { 249, 197, 207, 253, 213, 255, 249, 254 },
  1353. { 249, 197, 207, 253, 213, 255, 249, 254 },
  1354. { 249, 198, 208, 253, 214, 255, 249, 254 },
  1355. { 249, 199, 209, 253, 214, 255, 249, 254 },
  1356. { 250, 200, 210, 253, 215, 255, 249, 254 },
  1357. { 250, 200, 210, 253, 215, 255, 249, 254 },
  1358. { 250, 201, 211, 253, 215, 255, 249, 254 },
  1359. { 250, 202, 211, 253, 215, 255, 249, 254 },
  1360. { 250, 203, 212, 253, 216, 255, 249, 254 },
  1361. { 250, 203, 212, 253, 216, 255, 249, 254 },
  1362. { 251, 204, 213, 253, 217, 255, 250, 254 },
  1363. { 251, 205, 213, 253, 217, 255, 250, 254 },
  1364. { 251, 206, 214, 254, 218, 255, 250, 254 },
  1365. { 251, 206, 215, 254, 218, 255, 250, 254 },
  1366. { 252, 207, 216, 254, 219, 255, 250, 254 },
  1367. { 252, 208, 216, 254, 219, 255, 250, 254 },
  1368. { 252, 209, 217, 254, 220, 255, 250, 254 },
  1369. { 252, 210, 217, 254, 220, 255, 250, 254 },
  1370. { 252, 211, 218, 254, 221, 255, 250, 254 },
  1371. { 252, 212, 218, 254, 221, 255, 250, 254 },
  1372. { 253, 213, 219, 254, 222, 255, 250, 254 },
  1373. { 253, 213, 220, 254, 222, 255, 250, 254 },
  1374. { 253, 214, 221, 254, 223, 255, 250, 254 },
  1375. { 253, 215, 221, 254, 223, 255, 250, 254 },
  1376. { 253, 216, 222, 254, 224, 255, 251, 254 },
  1377. { 253, 217, 223, 254, 224, 255, 251, 254 },
  1378. { 253, 218, 224, 254, 225, 255, 251, 254 },
  1379. { 253, 219, 224, 254, 225, 255, 251, 254 },
  1380. { 254, 220, 225, 254, 225, 255, 251, 254 },
  1381. { 254, 221, 226, 254, 225, 255, 251, 254 },
  1382. { 254, 222, 227, 255, 226, 255, 251, 254 },
  1383. { 254, 223, 227, 255, 226, 255, 251, 254 },
  1384. { 254, 224, 228, 255, 227, 255, 251, 254 },
  1385. { 254, 225, 229, 255, 227, 255, 251, 254 },
  1386. { 254, 226, 230, 255, 228, 255, 251, 254 },
  1387. { 254, 227, 230, 255, 229, 255, 251, 254 },
  1388. { 255, 228, 231, 255, 230, 255, 251, 254 },
  1389. { 255, 229, 232, 255, 230, 255, 251, 254 },
  1390. { 255, 230, 233, 255, 231, 255, 252, 254 },
  1391. { 255, 231, 234, 255, 231, 255, 252, 254 },
  1392. { 255, 232, 235, 255, 232, 255, 252, 254 },
  1393. { 255, 233, 236, 255, 232, 255, 252, 254 },
  1394. { 255, 235, 237, 255, 233, 255, 252, 254 },
  1395. { 255, 236, 238, 255, 234, 255, 252, 254 },
  1396. { 255, 238, 240, 255, 235, 255, 252, 255 },
  1397. { 255, 239, 241, 255, 235, 255, 252, 254 },
  1398. { 255, 241, 243, 255, 236, 255, 252, 254 },
  1399. { 255, 243, 245, 255, 237, 255, 252, 254 },
  1400. { 255, 246, 247, 255, 239, 255, 253, 255 },
  1401. };
  1402. typedef struct {
  1403. uint8_t y_mode[4][9];
  1404. uint8_t uv_mode[10][9];
  1405. uint8_t filter[4][2];
  1406. uint8_t mv_mode[7][3];
  1407. uint8_t intra[4];
  1408. uint8_t comp[5];
  1409. uint8_t single_ref[5][2];
  1410. uint8_t comp_ref[5];
  1411. uint8_t tx32p[2][3];
  1412. uint8_t tx16p[2][2];
  1413. uint8_t tx8p[2];
  1414. uint8_t skip[3];
  1415. uint8_t mv_joint[3];
  1416. struct {
  1417. uint8_t sign;
  1418. uint8_t classes[10];
  1419. uint8_t class0;
  1420. uint8_t bits[10];
  1421. uint8_t class0_fp[2][3];
  1422. uint8_t fp[3];
  1423. uint8_t class0_hp;
  1424. uint8_t hp;
  1425. } mv_comp[2];
  1426. uint8_t partition[4][4][3];
  1427. } prob_context;
  1428. static const prob_context vp9_default_probs = {
  1429. { /* y_mode */
  1430. { 65, 32, 18, 144, 162, 194, 41, 51, 98 } /* bsize < 8x8 */,
  1431. { 132, 68, 18, 165, 217, 196, 45, 40, 78 } /* bsize < 16x16 */,
  1432. { 173, 80, 19, 176, 240, 193, 64, 35, 46 } /* bsize < 32x32 */,
  1433. { 221, 135, 38, 194, 248, 121, 96, 85, 29 } /* bsize >= 32x32 */
  1434. }, { /* uv_mode */
  1435. { 48, 12, 154, 155, 139, 90, 34, 117, 119 } /* y = v */,
  1436. { 67, 6, 25, 204, 243, 158, 13, 21, 96 } /* y = h */,
  1437. { 120, 7, 76, 176, 208, 126, 28, 54, 103 } /* y = dc */,
  1438. { 97, 5, 44, 131, 176, 139, 48, 68, 97 } /* y = d45 */,
  1439. { 83, 5, 42, 156, 111, 152, 26, 49, 152 } /* y = d135 */,
  1440. { 80, 5, 58, 178, 74, 83, 33, 62, 145 } /* y = d117 */,
  1441. { 86, 5, 32, 154, 192, 168, 14, 22, 163 } /* y = d153 */,
  1442. { 77, 7, 64, 116, 132, 122, 37, 126, 120 } /* y = d63 */,
  1443. { 85, 5, 32, 156, 216, 148, 19, 29, 73 } /* y = d27 */,
  1444. { 101, 21, 107, 181, 192, 103, 19, 67, 125 } /* y = tm */
  1445. }, { /* filter */
  1446. { 235, 162, },
  1447. { 36, 255, },
  1448. { 34, 3, },
  1449. { 149, 144, },
  1450. }, { /* mv_mode */
  1451. { 2, 173, 34}, // 0 = both zero mv
  1452. { 7, 145, 85}, // 1 = one zero mv + one a predicted mv
  1453. { 7, 166, 63}, // 2 = two predicted mvs
  1454. { 7, 94, 66}, // 3 = one predicted/zero and one new mv
  1455. { 8, 64, 46}, // 4 = two new mvs
  1456. { 17, 81, 31}, // 5 = one intra neighbour + x
  1457. { 25, 29, 30}, // 6 = two intra neighbours
  1458. }, { /* intra */
  1459. 9, 102, 187, 225
  1460. }, { /* comp */
  1461. 239, 183, 119, 96, 41
  1462. }, { /* single_ref */
  1463. { 33, 16 },
  1464. { 77, 74 },
  1465. { 142, 142 },
  1466. { 172, 170 },
  1467. { 238, 247 }
  1468. }, { /* comp_ref */
  1469. 50, 126, 123, 221, 226
  1470. }, { /* tx32p */
  1471. { 3, 136, 37, },
  1472. { 5, 52, 13, },
  1473. }, { /* tx16p */
  1474. { 20, 152, },
  1475. { 15, 101, },
  1476. }, { /* tx8p */
  1477. 100, 66
  1478. }, { /* skip */
  1479. 192, 128, 64
  1480. }, { /* mv_joint */
  1481. 32, 64, 96
  1482. }, {
  1483. { /* mv vertical component */
  1484. 128, /* sign */
  1485. { 224, 144, 192, 168, 192, 176, 192, 198, 198, 245 }, /* class */
  1486. 216, /* class0 */
  1487. { 136, 140, 148, 160, 176, 192, 224, 234, 234, 240}, /* bits */
  1488. { /* class0_fp */
  1489. { 128, 128, 64 },
  1490. { 96, 112, 64 }
  1491. },
  1492. { 64, 96, 64 }, /* fp */
  1493. 160, /* class0_hp bit */
  1494. 128, /* hp */
  1495. }, { /* mv horizontal component */
  1496. 128, /* sign */
  1497. { 216, 128, 176, 160, 176, 176, 192, 198, 198, 208 }, /* class */
  1498. 208, /* class0 */
  1499. { 136, 140, 148, 160, 176, 192, 224, 234, 234, 240 }, /* bits */
  1500. { /* class0_fp */
  1501. { 128, 128, 64 },
  1502. { 96, 112, 64 }
  1503. },
  1504. { 64, 96, 64 }, /* fp */
  1505. 160, /* class0_hp bit */
  1506. 128, /* hp */
  1507. }
  1508. }, { /* partition */
  1509. { /* 64x64 -> 32x32 */
  1510. { 222, 34, 30 } /* a/l both not split */,
  1511. { 72, 16, 44 } /* a split, l not split */,
  1512. { 58, 32, 12 } /* l split, a not split */,
  1513. { 10, 7, 6 } /* a/l both split */,
  1514. }, { /* 32x32 -> 16x16 */
  1515. { 177, 58, 59 } /* a/l both not split */,
  1516. { 68, 26, 63 } /* a split, l not split */,
  1517. { 52, 79, 25 } /* l split, a not split */,
  1518. { 17, 14, 12 } /* a/l both split */,
  1519. }, { /* 16x16 -> 8x8 */
  1520. { 174, 73, 87 } /* a/l both not split */,
  1521. { 92, 41, 83 } /* a split, l not split */,
  1522. { 82, 99, 50 } /* l split, a not split */,
  1523. { 53, 39, 39 } /* a/l both split */,
  1524. }, { /* 8x8 -> 4x4 */
  1525. { 199, 122, 141 } /* a/l both not split */,
  1526. { 147, 63, 159 } /* a split, l not split */,
  1527. { 148, 133, 118 } /* l split, a not split */,
  1528. { 121, 104, 114 } /* a/l both split */,
  1529. }
  1530. },
  1531. };
  1532. static const uint8_t vp9_default_coef_probs[4][2][2][6][6][3] = {
  1533. { /* tx = 4x4 */
  1534. { /* block Type 0 */
  1535. { /* Intra */
  1536. { /* Coeff Band 0 */
  1537. { 195, 29, 183 },
  1538. { 84, 49, 136 },
  1539. { 8, 42, 71 }
  1540. }, { /* Coeff Band 1 */
  1541. { 31, 107, 169 },
  1542. { 35, 99, 159 },
  1543. { 17, 82, 140 },
  1544. { 8, 66, 114 },
  1545. { 2, 44, 76 },
  1546. { 1, 19, 32 }
  1547. }, { /* Coeff Band 2 */
  1548. { 40, 132, 201 },
  1549. { 29, 114, 187 },
  1550. { 13, 91, 157 },
  1551. { 7, 75, 127 },
  1552. { 3, 58, 95 },
  1553. { 1, 28, 47 }
  1554. }, { /* Coeff Band 3 */
  1555. { 69, 142, 221 },
  1556. { 42, 122, 201 },
  1557. { 15, 91, 159 },
  1558. { 6, 67, 121 },
  1559. { 1, 42, 77 },
  1560. { 1, 17, 31 }
  1561. }, { /* Coeff Band 4 */
  1562. { 102, 148, 228 },
  1563. { 67, 117, 204 },
  1564. { 17, 82, 154 },
  1565. { 6, 59, 114 },
  1566. { 2, 39, 75 },
  1567. { 1, 15, 29 }
  1568. }, { /* Coeff Band 5 */
  1569. { 156, 57, 233 },
  1570. { 119, 57, 212 },
  1571. { 58, 48, 163 },
  1572. { 29, 40, 124 },
  1573. { 12, 30, 81 },
  1574. { 3, 12, 31 }
  1575. }
  1576. }, { /* Inter */
  1577. { /* Coeff Band 0 */
  1578. { 191, 107, 226 },
  1579. { 124, 117, 204 },
  1580. { 25, 99, 155 }
  1581. }, { /* Coeff Band 1 */
  1582. { 29, 148, 210 },
  1583. { 37, 126, 194 },
  1584. { 8, 93, 157 },
  1585. { 2, 68, 118 },
  1586. { 1, 39, 69 },
  1587. { 1, 17, 33 }
  1588. }, { /* Coeff Band 2 */
  1589. { 41, 151, 213 },
  1590. { 27, 123, 193 },
  1591. { 3, 82, 144 },
  1592. { 1, 58, 105 },
  1593. { 1, 32, 60 },
  1594. { 1, 13, 26 }
  1595. }, { /* Coeff Band 3 */
  1596. { 59, 159, 220 },
  1597. { 23, 126, 198 },
  1598. { 4, 88, 151 },
  1599. { 1, 66, 114 },
  1600. { 1, 38, 71 },
  1601. { 1, 18, 34 }
  1602. }, { /* Coeff Band 4 */
  1603. { 114, 136, 232 },
  1604. { 51, 114, 207 },
  1605. { 11, 83, 155 },
  1606. { 3, 56, 105 },
  1607. { 1, 33, 65 },
  1608. { 1, 17, 34 }
  1609. }, { /* Coeff Band 5 */
  1610. { 149, 65, 234 },
  1611. { 121, 57, 215 },
  1612. { 61, 49, 166 },
  1613. { 28, 36, 114 },
  1614. { 12, 25, 76 },
  1615. { 3, 16, 42 }
  1616. }
  1617. }
  1618. }, { /* block Type 1 */
  1619. { /* Intra */
  1620. { /* Coeff Band 0 */
  1621. { 214, 49, 220 },
  1622. { 132, 63, 188 },
  1623. { 42, 65, 137 }
  1624. }, { /* Coeff Band 1 */
  1625. { 85, 137, 221 },
  1626. { 104, 131, 216 },
  1627. { 49, 111, 192 },
  1628. { 21, 87, 155 },
  1629. { 2, 49, 87 },
  1630. { 1, 16, 28 }
  1631. }, { /* Coeff Band 2 */
  1632. { 89, 163, 230 },
  1633. { 90, 137, 220 },
  1634. { 29, 100, 183 },
  1635. { 10, 70, 135 },
  1636. { 2, 42, 81 },
  1637. { 1, 17, 33 }
  1638. }, { /* Coeff Band 3 */
  1639. { 108, 167, 237 },
  1640. { 55, 133, 222 },
  1641. { 15, 97, 179 },
  1642. { 4, 72, 135 },
  1643. { 1, 45, 85 },
  1644. { 1, 19, 38 }
  1645. }, { /* Coeff Band 4 */
  1646. { 124, 146, 240 },
  1647. { 66, 124, 224 },
  1648. { 17, 88, 175 },
  1649. { 4, 58, 122 },
  1650. { 1, 36, 75 },
  1651. { 1, 18, 37 }
  1652. }, { /* Coeff Band 5 */
  1653. { 141, 79, 241 },
  1654. { 126, 70, 227 },
  1655. { 66, 58, 182 },
  1656. { 30, 44, 136 },
  1657. { 12, 34, 96 },
  1658. { 2, 20, 47 }
  1659. }
  1660. }, { /* Inter */
  1661. { /* Coeff Band 0 */
  1662. { 229, 99, 249 },
  1663. { 143, 111, 235 },
  1664. { 46, 109, 192 }
  1665. }, { /* Coeff Band 1 */
  1666. { 82, 158, 236 },
  1667. { 94, 146, 224 },
  1668. { 25, 117, 191 },
  1669. { 9, 87, 149 },
  1670. { 3, 56, 99 },
  1671. { 1, 33, 57 }
  1672. }, { /* Coeff Band 2 */
  1673. { 83, 167, 237 },
  1674. { 68, 145, 222 },
  1675. { 10, 103, 177 },
  1676. { 2, 72, 131 },
  1677. { 1, 41, 79 },
  1678. { 1, 20, 39 }
  1679. }, { /* Coeff Band 3 */
  1680. { 99, 167, 239 },
  1681. { 47, 141, 224 },
  1682. { 10, 104, 178 },
  1683. { 2, 73, 133 },
  1684. { 1, 44, 85 },
  1685. { 1, 22, 47 }
  1686. }, { /* Coeff Band 4 */
  1687. { 127, 145, 243 },
  1688. { 71, 129, 228 },
  1689. { 17, 93, 177 },
  1690. { 3, 61, 124 },
  1691. { 1, 41, 84 },
  1692. { 1, 21, 52 }
  1693. }, { /* Coeff Band 5 */
  1694. { 157, 78, 244 },
  1695. { 140, 72, 231 },
  1696. { 69, 58, 184 },
  1697. { 31, 44, 137 },
  1698. { 14, 38, 105 },
  1699. { 8, 23, 61 }
  1700. }
  1701. }
  1702. }
  1703. }, { /* tx = 8x8 */
  1704. { /* block Type 0 */
  1705. { /* Intra */
  1706. { /* Coeff Band 0 */
  1707. { 125, 34, 187 },
  1708. { 52, 41, 133 },
  1709. { 6, 31, 56 }
  1710. }, { /* Coeff Band 1 */
  1711. { 37, 109, 153 },
  1712. { 51, 102, 147 },
  1713. { 23, 87, 128 },
  1714. { 8, 67, 101 },
  1715. { 1, 41, 63 },
  1716. { 1, 19, 29 }
  1717. }, { /* Coeff Band 2 */
  1718. { 31, 154, 185 },
  1719. { 17, 127, 175 },
  1720. { 6, 96, 145 },
  1721. { 2, 73, 114 },
  1722. { 1, 51, 82 },
  1723. { 1, 28, 45 }
  1724. }, { /* Coeff Band 3 */
  1725. { 23, 163, 200 },
  1726. { 10, 131, 185 },
  1727. { 2, 93, 148 },
  1728. { 1, 67, 111 },
  1729. { 1, 41, 69 },
  1730. { 1, 14, 24 }
  1731. }, { /* Coeff Band 4 */
  1732. { 29, 176, 217 },
  1733. { 12, 145, 201 },
  1734. { 3, 101, 156 },
  1735. { 1, 69, 111 },
  1736. { 1, 39, 63 },
  1737. { 1, 14, 23 }
  1738. }, { /* Coeff Band 5 */
  1739. { 57, 192, 233 },
  1740. { 25, 154, 215 },
  1741. { 6, 109, 167 },
  1742. { 3, 78, 118 },
  1743. { 1, 48, 69 },
  1744. { 1, 21, 29 }
  1745. }
  1746. }, { /* Inter */
  1747. { /* Coeff Band 0 */
  1748. { 202, 105, 245 },
  1749. { 108, 106, 216 },
  1750. { 18, 90, 144 }
  1751. }, { /* Coeff Band 1 */
  1752. { 33, 172, 219 },
  1753. { 64, 149, 206 },
  1754. { 14, 117, 177 },
  1755. { 5, 90, 141 },
  1756. { 2, 61, 95 },
  1757. { 1, 37, 57 }
  1758. }, { /* Coeff Band 2 */
  1759. { 33, 179, 220 },
  1760. { 11, 140, 198 },
  1761. { 1, 89, 148 },
  1762. { 1, 60, 104 },
  1763. { 1, 33, 57 },
  1764. { 1, 12, 21 }
  1765. }, { /* Coeff Band 3 */
  1766. { 30, 181, 221 },
  1767. { 8, 141, 198 },
  1768. { 1, 87, 145 },
  1769. { 1, 58, 100 },
  1770. { 1, 31, 55 },
  1771. { 1, 12, 20 }
  1772. }, { /* Coeff Band 4 */
  1773. { 32, 186, 224 },
  1774. { 7, 142, 198 },
  1775. { 1, 86, 143 },
  1776. { 1, 58, 100 },
  1777. { 1, 31, 55 },
  1778. { 1, 12, 22 }
  1779. }, { /* Coeff Band 5 */
  1780. { 57, 192, 227 },
  1781. { 20, 143, 204 },
  1782. { 3, 96, 154 },
  1783. { 1, 68, 112 },
  1784. { 1, 42, 69 },
  1785. { 1, 19, 32 }
  1786. }
  1787. }
  1788. }, { /* block Type 1 */
  1789. { /* Intra */
  1790. { /* Coeff Band 0 */
  1791. { 212, 35, 215 },
  1792. { 113, 47, 169 },
  1793. { 29, 48, 105 }
  1794. }, { /* Coeff Band 1 */
  1795. { 74, 129, 203 },
  1796. { 106, 120, 203 },
  1797. { 49, 107, 178 },
  1798. { 19, 84, 144 },
  1799. { 4, 50, 84 },
  1800. { 1, 15, 25 }
  1801. }, { /* Coeff Band 2 */
  1802. { 71, 172, 217 },
  1803. { 44, 141, 209 },
  1804. { 15, 102, 173 },
  1805. { 6, 76, 133 },
  1806. { 2, 51, 89 },
  1807. { 1, 24, 42 }
  1808. }, { /* Coeff Band 3 */
  1809. { 64, 185, 231 },
  1810. { 31, 148, 216 },
  1811. { 8, 103, 175 },
  1812. { 3, 74, 131 },
  1813. { 1, 46, 81 },
  1814. { 1, 18, 30 }
  1815. }, { /* Coeff Band 4 */
  1816. { 65, 196, 235 },
  1817. { 25, 157, 221 },
  1818. { 5, 105, 174 },
  1819. { 1, 67, 120 },
  1820. { 1, 38, 69 },
  1821. { 1, 15, 30 }
  1822. }, { /* Coeff Band 5 */
  1823. { 65, 204, 238 },
  1824. { 30, 156, 224 },
  1825. { 7, 107, 177 },
  1826. { 2, 70, 124 },
  1827. { 1, 42, 73 },
  1828. { 1, 18, 34 }
  1829. }
  1830. }, { /* Inter */
  1831. { /* Coeff Band 0 */
  1832. { 225, 86, 251 },
  1833. { 144, 104, 235 },
  1834. { 42, 99, 181 }
  1835. }, { /* Coeff Band 1 */
  1836. { 85, 175, 239 },
  1837. { 112, 165, 229 },
  1838. { 29, 136, 200 },
  1839. { 12, 103, 162 },
  1840. { 6, 77, 123 },
  1841. { 2, 53, 84 }
  1842. }, { /* Coeff Band 2 */
  1843. { 75, 183, 239 },
  1844. { 30, 155, 221 },
  1845. { 3, 106, 171 },
  1846. { 1, 74, 128 },
  1847. { 1, 44, 76 },
  1848. { 1, 17, 28 }
  1849. }, { /* Coeff Band 3 */
  1850. { 73, 185, 240 },
  1851. { 27, 159, 222 },
  1852. { 2, 107, 172 },
  1853. { 1, 75, 127 },
  1854. { 1, 42, 73 },
  1855. { 1, 17, 29 }
  1856. }, { /* Coeff Band 4 */
  1857. { 62, 190, 238 },
  1858. { 21, 159, 222 },
  1859. { 2, 107, 172 },
  1860. { 1, 72, 122 },
  1861. { 1, 40, 71 },
  1862. { 1, 18, 32 }
  1863. }, { /* Coeff Band 5 */
  1864. { 61, 199, 240 },
  1865. { 27, 161, 226 },
  1866. { 4, 113, 180 },
  1867. { 1, 76, 129 },
  1868. { 1, 46, 80 },
  1869. { 1, 23, 41 }
  1870. }
  1871. }
  1872. }
  1873. }, { /* tx = 16x16 */
  1874. { /* block Type 0 */
  1875. { /* Intra */
  1876. { /* Coeff Band 0 */
  1877. { 7, 27, 153 },
  1878. { 5, 30, 95 },
  1879. { 1, 16, 30 }
  1880. }, { /* Coeff Band 1 */
  1881. { 50, 75, 127 },
  1882. { 57, 75, 124 },
  1883. { 27, 67, 108 },
  1884. { 10, 54, 86 },
  1885. { 1, 33, 52 },
  1886. { 1, 12, 18 }
  1887. }, { /* Coeff Band 2 */
  1888. { 43, 125, 151 },
  1889. { 26, 108, 148 },
  1890. { 7, 83, 122 },
  1891. { 2, 59, 89 },
  1892. { 1, 38, 60 },
  1893. { 1, 17, 27 }
  1894. }, { /* Coeff Band 3 */
  1895. { 23, 144, 163 },
  1896. { 13, 112, 154 },
  1897. { 2, 75, 117 },
  1898. { 1, 50, 81 },
  1899. { 1, 31, 51 },
  1900. { 1, 14, 23 }
  1901. }, { /* Coeff Band 4 */
  1902. { 18, 162, 185 },
  1903. { 6, 123, 171 },
  1904. { 1, 78, 125 },
  1905. { 1, 51, 86 },
  1906. { 1, 31, 54 },
  1907. { 1, 14, 23 }
  1908. }, { /* Coeff Band 5 */
  1909. { 15, 199, 227 },
  1910. { 3, 150, 204 },
  1911. { 1, 91, 146 },
  1912. { 1, 55, 95 },
  1913. { 1, 30, 53 },
  1914. { 1, 11, 20 }
  1915. }
  1916. }, { /* Inter */
  1917. { /* Coeff Band 0 */
  1918. { 19, 55, 240 },
  1919. { 19, 59, 196 },
  1920. { 3, 52, 105 }
  1921. }, { /* Coeff Band 1 */
  1922. { 41, 166, 207 },
  1923. { 104, 153, 199 },
  1924. { 31, 123, 181 },
  1925. { 14, 101, 152 },
  1926. { 5, 72, 106 },
  1927. { 1, 36, 52 }
  1928. }, { /* Coeff Band 2 */
  1929. { 35, 176, 211 },
  1930. { 12, 131, 190 },
  1931. { 2, 88, 144 },
  1932. { 1, 60, 101 },
  1933. { 1, 36, 60 },
  1934. { 1, 16, 28 }
  1935. }, { /* Coeff Band 3 */
  1936. { 28, 183, 213 },
  1937. { 8, 134, 191 },
  1938. { 1, 86, 142 },
  1939. { 1, 56, 96 },
  1940. { 1, 30, 53 },
  1941. { 1, 12, 20 }
  1942. }, { /* Coeff Band 4 */
  1943. { 20, 190, 215 },
  1944. { 4, 135, 192 },
  1945. { 1, 84, 139 },
  1946. { 1, 53, 91 },
  1947. { 1, 28, 49 },
  1948. { 1, 11, 20 }
  1949. }, { /* Coeff Band 5 */
  1950. { 13, 196, 216 },
  1951. { 2, 137, 192 },
  1952. { 1, 86, 143 },
  1953. { 1, 57, 99 },
  1954. { 1, 32, 56 },
  1955. { 1, 13, 24 }
  1956. }
  1957. }
  1958. }, { /* block Type 1 */
  1959. { /* Intra */
  1960. { /* Coeff Band 0 */
  1961. { 211, 29, 217 },
  1962. { 96, 47, 156 },
  1963. { 22, 43, 87 }
  1964. }, { /* Coeff Band 1 */
  1965. { 78, 120, 193 },
  1966. { 111, 116, 186 },
  1967. { 46, 102, 164 },
  1968. { 15, 80, 128 },
  1969. { 2, 49, 76 },
  1970. { 1, 18, 28 }
  1971. }, { /* Coeff Band 2 */
  1972. { 71, 161, 203 },
  1973. { 42, 132, 192 },
  1974. { 10, 98, 150 },
  1975. { 3, 69, 109 },
  1976. { 1, 44, 70 },
  1977. { 1, 18, 29 }
  1978. }, { /* Coeff Band 3 */
  1979. { 57, 186, 211 },
  1980. { 30, 140, 196 },
  1981. { 4, 93, 146 },
  1982. { 1, 62, 102 },
  1983. { 1, 38, 65 },
  1984. { 1, 16, 27 }
  1985. }, { /* Coeff Band 4 */
  1986. { 47, 199, 217 },
  1987. { 14, 145, 196 },
  1988. { 1, 88, 142 },
  1989. { 1, 57, 98 },
  1990. { 1, 36, 62 },
  1991. { 1, 15, 26 }
  1992. }, { /* Coeff Band 5 */
  1993. { 26, 219, 229 },
  1994. { 5, 155, 207 },
  1995. { 1, 94, 151 },
  1996. { 1, 60, 104 },
  1997. { 1, 36, 62 },
  1998. { 1, 16, 28 }
  1999. }
  2000. }, { /* Inter */
  2001. { /* Coeff Band 0 */
  2002. { 233, 29, 248 },
  2003. { 146, 47, 220 },
  2004. { 43, 52, 140 }
  2005. }, { /* Coeff Band 1 */
  2006. { 100, 163, 232 },
  2007. { 179, 161, 222 },
  2008. { 63, 142, 204 },
  2009. { 37, 113, 174 },
  2010. { 26, 89, 137 },
  2011. { 18, 68, 97 }
  2012. }, { /* Coeff Band 2 */
  2013. { 85, 181, 230 },
  2014. { 32, 146, 209 },
  2015. { 7, 100, 164 },
  2016. { 3, 71, 121 },
  2017. { 1, 45, 77 },
  2018. { 1, 18, 30 }
  2019. }, { /* Coeff Band 3 */
  2020. { 65, 187, 230 },
  2021. { 20, 148, 207 },
  2022. { 2, 97, 159 },
  2023. { 1, 68, 116 },
  2024. { 1, 40, 70 },
  2025. { 1, 14, 29 }
  2026. }, { /* Coeff Band 4 */
  2027. { 40, 194, 227 },
  2028. { 8, 147, 204 },
  2029. { 1, 94, 155 },
  2030. { 1, 65, 112 },
  2031. { 1, 39, 66 },
  2032. { 1, 14, 26 }
  2033. }, { /* Coeff Band 5 */
  2034. { 16, 208, 228 },
  2035. { 3, 151, 207 },
  2036. { 1, 98, 160 },
  2037. { 1, 67, 117 },
  2038. { 1, 41, 74 },
  2039. { 1, 17, 31 }
  2040. }
  2041. }
  2042. }
  2043. }, { /* tx = 32x32 */
  2044. { /* block Type 0 */
  2045. { /* Intra */
  2046. { /* Coeff Band 0 */
  2047. { 17, 38, 140 },
  2048. { 7, 34, 80 },
  2049. { 1, 17, 29 }
  2050. }, { /* Coeff Band 1 */
  2051. { 37, 75, 128 },
  2052. { 41, 76, 128 },
  2053. { 26, 66, 116 },
  2054. { 12, 52, 94 },
  2055. { 2, 32, 55 },
  2056. { 1, 10, 16 }
  2057. }, { /* Coeff Band 2 */
  2058. { 50, 127, 154 },
  2059. { 37, 109, 152 },
  2060. { 16, 82, 121 },
  2061. { 5, 59, 85 },
  2062. { 1, 35, 54 },
  2063. { 1, 13, 20 }
  2064. }, { /* Coeff Band 3 */
  2065. { 40, 142, 167 },
  2066. { 17, 110, 157 },
  2067. { 2, 71, 112 },
  2068. { 1, 44, 72 },
  2069. { 1, 27, 45 },
  2070. { 1, 11, 17 }
  2071. }, { /* Coeff Band 4 */
  2072. { 30, 175, 188 },
  2073. { 9, 124, 169 },
  2074. { 1, 74, 116 },
  2075. { 1, 48, 78 },
  2076. { 1, 30, 49 },
  2077. { 1, 11, 18 }
  2078. }, { /* Coeff Band 5 */
  2079. { 10, 222, 223 },
  2080. { 2, 150, 194 },
  2081. { 1, 83, 128 },
  2082. { 1, 48, 79 },
  2083. { 1, 27, 45 },
  2084. { 1, 11, 17 }
  2085. }
  2086. }, { /* Inter */
  2087. { /* Coeff Band 0 */
  2088. { 36, 41, 235 },
  2089. { 29, 36, 193 },
  2090. { 10, 27, 111 }
  2091. }, { /* Coeff Band 1 */
  2092. { 85, 165, 222 },
  2093. { 177, 162, 215 },
  2094. { 110, 135, 195 },
  2095. { 57, 113, 168 },
  2096. { 23, 83, 120 },
  2097. { 10, 49, 61 }
  2098. }, { /* Coeff Band 2 */
  2099. { 85, 190, 223 },
  2100. { 36, 139, 200 },
  2101. { 5, 90, 146 },
  2102. { 1, 60, 103 },
  2103. { 1, 38, 65 },
  2104. { 1, 18, 30 }
  2105. }, { /* Coeff Band 3 */
  2106. { 72, 202, 223 },
  2107. { 23, 141, 199 },
  2108. { 2, 86, 140 },
  2109. { 1, 56, 97 },
  2110. { 1, 36, 61 },
  2111. { 1, 16, 27 }
  2112. }, { /* Coeff Band 4 */
  2113. { 55, 218, 225 },
  2114. { 13, 145, 200 },
  2115. { 1, 86, 141 },
  2116. { 1, 57, 99 },
  2117. { 1, 35, 61 },
  2118. { 1, 13, 22 }
  2119. }, { /* Coeff Band 5 */
  2120. { 15, 235, 212 },
  2121. { 1, 132, 184 },
  2122. { 1, 84, 139 },
  2123. { 1, 57, 97 },
  2124. { 1, 34, 56 },
  2125. { 1, 14, 23 }
  2126. }
  2127. }
  2128. }, { /* block Type 1 */
  2129. { /* Intra */
  2130. { /* Coeff Band 0 */
  2131. { 181, 21, 201 },
  2132. { 61, 37, 123 },
  2133. { 10, 38, 71 }
  2134. }, { /* Coeff Band 1 */
  2135. { 47, 106, 172 },
  2136. { 95, 104, 173 },
  2137. { 42, 93, 159 },
  2138. { 18, 77, 131 },
  2139. { 4, 50, 81 },
  2140. { 1, 17, 23 }
  2141. }, { /* Coeff Band 2 */
  2142. { 62, 147, 199 },
  2143. { 44, 130, 189 },
  2144. { 28, 102, 154 },
  2145. { 18, 75, 115 },
  2146. { 2, 44, 65 },
  2147. { 1, 12, 19 }
  2148. }, { /* Coeff Band 3 */
  2149. { 55, 153, 210 },
  2150. { 24, 130, 194 },
  2151. { 3, 93, 146 },
  2152. { 1, 61, 97 },
  2153. { 1, 31, 50 },
  2154. { 1, 10, 16 }
  2155. }, { /* Coeff Band 4 */
  2156. { 49, 186, 223 },
  2157. { 17, 148, 204 },
  2158. { 1, 96, 142 },
  2159. { 1, 53, 83 },
  2160. { 1, 26, 44 },
  2161. { 1, 11, 17 }
  2162. }, { /* Coeff Band 5 */
  2163. { 13, 217, 212 },
  2164. { 2, 136, 180 },
  2165. { 1, 78, 124 },
  2166. { 1, 50, 83 },
  2167. { 1, 29, 49 },
  2168. { 1, 14, 23 }
  2169. }
  2170. }, { /* Inter */
  2171. { /* Coeff Band 0 */
  2172. { 197, 13, 247 },
  2173. { 82, 17, 222 },
  2174. { 25, 17, 162 }
  2175. }, { /* Coeff Band 1 */
  2176. { 126, 186, 247 },
  2177. { 234, 191, 243 },
  2178. { 176, 177, 234 },
  2179. { 104, 158, 220 },
  2180. { 66, 128, 186 },
  2181. { 55, 90, 137 }
  2182. }, { /* Coeff Band 2 */
  2183. { 111, 197, 242 },
  2184. { 46, 158, 219 },
  2185. { 9, 104, 171 },
  2186. { 2, 65, 125 },
  2187. { 1, 44, 80 },
  2188. { 1, 17, 91 }
  2189. }, { /* Coeff Band 3 */
  2190. { 104, 208, 245 },
  2191. { 39, 168, 224 },
  2192. { 3, 109, 162 },
  2193. { 1, 79, 124 },
  2194. { 1, 50, 102 },
  2195. { 1, 43, 102 }
  2196. }, { /* Coeff Band 4 */
  2197. { 84, 220, 246 },
  2198. { 31, 177, 231 },
  2199. { 2, 115, 180 },
  2200. { 1, 79, 134 },
  2201. { 1, 55, 77 },
  2202. { 1, 60, 79 }
  2203. }, { /* Coeff Band 5 */
  2204. { 43, 243, 240 },
  2205. { 8, 180, 217 },
  2206. { 1, 115, 166 },
  2207. { 1, 84, 121 },
  2208. { 1, 51, 67 },
  2209. { 1, 16, 6 }
  2210. }
  2211. }
  2212. }
  2213. }
  2214. };
  2215. enum MVJoint {
  2216. MV_JOINT_ZERO,
  2217. MV_JOINT_H,
  2218. MV_JOINT_V,
  2219. MV_JOINT_HV,
  2220. };
  2221. static const int8_t vp9_mv_joint_tree[3][2] = {
  2222. { -MV_JOINT_ZERO, 1 }, // '0'
  2223. { -MV_JOINT_H, 2 }, // '10'
  2224. { -MV_JOINT_V, -MV_JOINT_HV }, // '11x'
  2225. };
  2226. static const int8_t vp9_mv_class_tree[10][2] = {
  2227. { -0, 1 }, // '0'
  2228. { -1, 2 }, // '10'
  2229. { 3, 4 },
  2230. { -2, -3 }, // '110x'
  2231. { 5, 6 },
  2232. { -4, -5 }, // '1110x'
  2233. { -6, 7 }, // '11110'
  2234. { 8, 9 },
  2235. { -7, -8 }, // '111110x'
  2236. { -9, -10 }, // '111111x'
  2237. };
  2238. static const int8_t vp9_mv_fp_tree[3][2] = {
  2239. { -0, 1 }, // '0'
  2240. { -1, 2 }, // '10'
  2241. { -2, -3 }, // '11x'
  2242. };
  2243. #endif /* AVCODEC_VP9DATA_H */