1 /*
2  * Copyright (c) 2016, Alliance for Open Media. All rights reserved
3  *
4  * This source code is subject to the terms of the BSD 2 Clause License and
5  * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
6  * was not distributed with this source code in the LICENSE file, you can
7  * obtain it at www.aomedia.org/license/software. If the Alliance for Open
8  * Media Patent License 1.0 was not distributed with this source code in the
9  * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
10  */
11 
12 #include <assert.h>
13 
14 #include "av1/common/common_data.h"
15 #include "av1/common/scan.h"
16 
17 DECLARE_ALIGNED(16, static const int16_t, default_scan_4x4[16]) = {
18   0, 1, 4, 8, 5, 2, 3, 6, 9, 12, 13, 10, 7, 11, 14, 15
19 };
20 
21 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_4x4[16]) = {
22   0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15,
23 };
24 
25 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_4x4[16]) = {
26   0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
27 };
28 
29 DECLARE_ALIGNED(16, static const int16_t, default_scan_4x8[32]) = {
30   0,  1,  4,  2,  5,  8,  3,  6,  9,  12, 7,  10, 13, 16, 11, 14,
31   17, 20, 15, 18, 21, 24, 19, 22, 25, 28, 23, 26, 29, 27, 30, 31,
32 };
33 
34 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_4x8[32]) = {
35   0, 4, 8,  12, 16, 20, 24, 28, 1, 5, 9,  13, 17, 21, 25, 29,
36   2, 6, 10, 14, 18, 22, 26, 30, 3, 7, 11, 15, 19, 23, 27, 31,
37 };
38 
39 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_4x8[32]) = {
40   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
41   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
42 };
43 
44 DECLARE_ALIGNED(16, static const int16_t, default_scan_8x4[32]) = {
45   0,  8, 1,  16, 9,  2, 24, 17, 10, 3, 25, 18, 11, 4,  26, 19,
46   12, 5, 27, 20, 13, 6, 28, 21, 14, 7, 29, 22, 15, 30, 23, 31,
47 };
48 
49 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_8x4[32]) = {
50   0, 8,  16, 24, 1, 9,  17, 25, 2, 10, 18, 26, 3, 11, 19, 27,
51   4, 12, 20, 28, 5, 13, 21, 29, 6, 14, 22, 30, 7, 15, 23, 31,
52 };
53 
54 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_8x4[32]) = {
55   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
56   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
57 };
58 
59 DECLARE_ALIGNED(16, static const int16_t, default_scan_4x16[64]) = {
60   0,  1,  4,  2,  5,  8,  3,  6,  9,  12, 7,  10, 13, 16, 11, 14,
61   17, 20, 15, 18, 21, 24, 19, 22, 25, 28, 23, 26, 29, 32, 27, 30,
62   33, 36, 31, 34, 37, 40, 35, 38, 41, 44, 39, 42, 45, 48, 43, 46,
63   49, 52, 47, 50, 53, 56, 51, 54, 57, 60, 55, 58, 61, 59, 62, 63,
64 };
65 
66 DECLARE_ALIGNED(16, static const int16_t, default_scan_16x4[64]) = {
67   0,  16, 1,  32, 17, 2,  48, 33, 18, 3,  49, 34, 19, 4,  50, 35,
68   20, 5,  51, 36, 21, 6,  52, 37, 22, 7,  53, 38, 23, 8,  54, 39,
69   24, 9,  55, 40, 25, 10, 56, 41, 26, 11, 57, 42, 27, 12, 58, 43,
70   28, 13, 59, 44, 29, 14, 60, 45, 30, 15, 61, 46, 31, 62, 47, 63,
71 };
72 
73 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_4x16[64]) = {
74   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
75   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
76   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
77   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
78 };
79 
80 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_16x4[64]) = {
81   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
82   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
83   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
84   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
85 };
86 
87 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_4x16[64]) = {
88   0, 4, 8,  12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60,
89   1, 5, 9,  13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61,
90   2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62,
91   3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 63,
92 };
93 
94 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_16x4[64]) = {
95   0,  16, 32, 48, 1,  17, 33, 49, 2,  18, 34, 50, 3,  19, 35, 51,
96   4,  20, 36, 52, 5,  21, 37, 53, 6,  22, 38, 54, 7,  23, 39, 55,
97   8,  24, 40, 56, 9,  25, 41, 57, 10, 26, 42, 58, 11, 27, 43, 59,
98   12, 28, 44, 60, 13, 29, 45, 61, 14, 30, 46, 62, 15, 31, 47, 63,
99 };
100 
101 DECLARE_ALIGNED(16, static const int16_t, default_scan_8x32[256]) = {
102   0,   1,   8,   2,   9,   16,  3,   10,  17,  24,  4,   11,  18,  25,  32,
103   5,   12,  19,  26,  33,  40,  6,   13,  20,  27,  34,  41,  48,  7,   14,
104   21,  28,  35,  42,  49,  56,  15,  22,  29,  36,  43,  50,  57,  64,  23,
105   30,  37,  44,  51,  58,  65,  72,  31,  38,  45,  52,  59,  66,  73,  80,
106   39,  46,  53,  60,  67,  74,  81,  88,  47,  54,  61,  68,  75,  82,  89,
107   96,  55,  62,  69,  76,  83,  90,  97,  104, 63,  70,  77,  84,  91,  98,
108   105, 112, 71,  78,  85,  92,  99,  106, 113, 120, 79,  86,  93,  100, 107,
109   114, 121, 128, 87,  94,  101, 108, 115, 122, 129, 136, 95,  102, 109, 116,
110   123, 130, 137, 144, 103, 110, 117, 124, 131, 138, 145, 152, 111, 118, 125,
111   132, 139, 146, 153, 160, 119, 126, 133, 140, 147, 154, 161, 168, 127, 134,
112   141, 148, 155, 162, 169, 176, 135, 142, 149, 156, 163, 170, 177, 184, 143,
113   150, 157, 164, 171, 178, 185, 192, 151, 158, 165, 172, 179, 186, 193, 200,
114   159, 166, 173, 180, 187, 194, 201, 208, 167, 174, 181, 188, 195, 202, 209,
115   216, 175, 182, 189, 196, 203, 210, 217, 224, 183, 190, 197, 204, 211, 218,
116   225, 232, 191, 198, 205, 212, 219, 226, 233, 240, 199, 206, 213, 220, 227,
117   234, 241, 248, 207, 214, 221, 228, 235, 242, 249, 215, 222, 229, 236, 243,
118   250, 223, 230, 237, 244, 251, 231, 238, 245, 252, 239, 246, 253, 247, 254,
119   255,
120 };
121 
122 DECLARE_ALIGNED(16, static const int16_t, default_scan_32x8[256]) = {
123   0,   32,  1,   64,  33,  2,   96,  65,  34,  3,   128, 97,  66,  35,  4,
124   160, 129, 98,  67,  36,  5,   192, 161, 130, 99,  68,  37,  6,   224, 193,
125   162, 131, 100, 69,  38,  7,   225, 194, 163, 132, 101, 70,  39,  8,   226,
126   195, 164, 133, 102, 71,  40,  9,   227, 196, 165, 134, 103, 72,  41,  10,
127   228, 197, 166, 135, 104, 73,  42,  11,  229, 198, 167, 136, 105, 74,  43,
128   12,  230, 199, 168, 137, 106, 75,  44,  13,  231, 200, 169, 138, 107, 76,
129   45,  14,  232, 201, 170, 139, 108, 77,  46,  15,  233, 202, 171, 140, 109,
130   78,  47,  16,  234, 203, 172, 141, 110, 79,  48,  17,  235, 204, 173, 142,
131   111, 80,  49,  18,  236, 205, 174, 143, 112, 81,  50,  19,  237, 206, 175,
132   144, 113, 82,  51,  20,  238, 207, 176, 145, 114, 83,  52,  21,  239, 208,
133   177, 146, 115, 84,  53,  22,  240, 209, 178, 147, 116, 85,  54,  23,  241,
134   210, 179, 148, 117, 86,  55,  24,  242, 211, 180, 149, 118, 87,  56,  25,
135   243, 212, 181, 150, 119, 88,  57,  26,  244, 213, 182, 151, 120, 89,  58,
136   27,  245, 214, 183, 152, 121, 90,  59,  28,  246, 215, 184, 153, 122, 91,
137   60,  29,  247, 216, 185, 154, 123, 92,  61,  30,  248, 217, 186, 155, 124,
138   93,  62,  31,  249, 218, 187, 156, 125, 94,  63,  250, 219, 188, 157, 126,
139   95,  251, 220, 189, 158, 127, 252, 221, 190, 159, 253, 222, 191, 254, 223,
140   255,
141 };
142 
143 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_8x32[256]) = {
144   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
145   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
146   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
147   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
148   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
149   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
150   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
151   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
152   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
153   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
154   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
155   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
156   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
157   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
158   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
159   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
160   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
161   255,
162 };
163 
164 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_32x8[256]) = {
165   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
166   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
167   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
168   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
169   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
170   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
171   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
172   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
173   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
174   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
175   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
176   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
177   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
178   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
179   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
180   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
181   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
182   255,
183 };
184 
185 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_8x32[256]) = {
186   0,   8,   16,  24,  32,  40,  48,  56,  64,  72,  80,  88,  96,  104, 112,
187   120, 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232,
188   240, 248, 1,   9,   17,  25,  33,  41,  49,  57,  65,  73,  81,  89,  97,
189   105, 113, 121, 129, 137, 145, 153, 161, 169, 177, 185, 193, 201, 209, 217,
190   225, 233, 241, 249, 2,   10,  18,  26,  34,  42,  50,  58,  66,  74,  82,
191   90,  98,  106, 114, 122, 130, 138, 146, 154, 162, 170, 178, 186, 194, 202,
192   210, 218, 226, 234, 242, 250, 3,   11,  19,  27,  35,  43,  51,  59,  67,
193   75,  83,  91,  99,  107, 115, 123, 131, 139, 147, 155, 163, 171, 179, 187,
194   195, 203, 211, 219, 227, 235, 243, 251, 4,   12,  20,  28,  36,  44,  52,
195   60,  68,  76,  84,  92,  100, 108, 116, 124, 132, 140, 148, 156, 164, 172,
196   180, 188, 196, 204, 212, 220, 228, 236, 244, 252, 5,   13,  21,  29,  37,
197   45,  53,  61,  69,  77,  85,  93,  101, 109, 117, 125, 133, 141, 149, 157,
198   165, 173, 181, 189, 197, 205, 213, 221, 229, 237, 245, 253, 6,   14,  22,
199   30,  38,  46,  54,  62,  70,  78,  86,  94,  102, 110, 118, 126, 134, 142,
200   150, 158, 166, 174, 182, 190, 198, 206, 214, 222, 230, 238, 246, 254, 7,
201   15,  23,  31,  39,  47,  55,  63,  71,  79,  87,  95,  103, 111, 119, 127,
202   135, 143, 151, 159, 167, 175, 183, 191, 199, 207, 215, 223, 231, 239, 247,
203   255,
204 };
205 
206 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_32x8[256]) = {
207   0,  32, 64, 96,  128, 160, 192, 224, 1,  33, 65, 97,  129, 161, 193, 225,
208   2,  34, 66, 98,  130, 162, 194, 226, 3,  35, 67, 99,  131, 163, 195, 227,
209   4,  36, 68, 100, 132, 164, 196, 228, 5,  37, 69, 101, 133, 165, 197, 229,
210   6,  38, 70, 102, 134, 166, 198, 230, 7,  39, 71, 103, 135, 167, 199, 231,
211   8,  40, 72, 104, 136, 168, 200, 232, 9,  41, 73, 105, 137, 169, 201, 233,
212   10, 42, 74, 106, 138, 170, 202, 234, 11, 43, 75, 107, 139, 171, 203, 235,
213   12, 44, 76, 108, 140, 172, 204, 236, 13, 45, 77, 109, 141, 173, 205, 237,
214   14, 46, 78, 110, 142, 174, 206, 238, 15, 47, 79, 111, 143, 175, 207, 239,
215   16, 48, 80, 112, 144, 176, 208, 240, 17, 49, 81, 113, 145, 177, 209, 241,
216   18, 50, 82, 114, 146, 178, 210, 242, 19, 51, 83, 115, 147, 179, 211, 243,
217   20, 52, 84, 116, 148, 180, 212, 244, 21, 53, 85, 117, 149, 181, 213, 245,
218   22, 54, 86, 118, 150, 182, 214, 246, 23, 55, 87, 119, 151, 183, 215, 247,
219   24, 56, 88, 120, 152, 184, 216, 248, 25, 57, 89, 121, 153, 185, 217, 249,
220   26, 58, 90, 122, 154, 186, 218, 250, 27, 59, 91, 123, 155, 187, 219, 251,
221   28, 60, 92, 124, 156, 188, 220, 252, 29, 61, 93, 125, 157, 189, 221, 253,
222   30, 62, 94, 126, 158, 190, 222, 254, 31, 63, 95, 127, 159, 191, 223, 255,
223 };
224 
225 DECLARE_ALIGNED(16, static const int16_t, default_scan_8x8[64]) = {
226   0,  1,  8,  16, 9,  2,  3,  10, 17, 24, 32, 25, 18, 11, 4,  5,
227   12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6,  7,  14, 21, 28,
228   35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51,
229   58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63
230 };
231 
232 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_8x8[64]) = {
233   0, 8,  16, 24, 32, 40, 48, 56, 1, 9,  17, 25, 33, 41, 49, 57,
234   2, 10, 18, 26, 34, 42, 50, 58, 3, 11, 19, 27, 35, 43, 51, 59,
235   4, 12, 20, 28, 36, 44, 52, 60, 5, 13, 21, 29, 37, 45, 53, 61,
236   6, 14, 22, 30, 38, 46, 54, 62, 7, 15, 23, 31, 39, 47, 55, 63,
237 };
238 
239 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_8x8[64]) = {
240   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
241   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
242   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
243   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
244 };
245 
246 DECLARE_ALIGNED(16, static const int16_t, default_scan_8x16[128]) = {
247   0,   1,   8,   2,   9,   16,  3,   10,  17,  24,  4,   11,  18,  25,  32,
248   5,   12,  19,  26,  33,  40,  6,   13,  20,  27,  34,  41,  48,  7,   14,
249   21,  28,  35,  42,  49,  56,  15,  22,  29,  36,  43,  50,  57,  64,  23,
250   30,  37,  44,  51,  58,  65,  72,  31,  38,  45,  52,  59,  66,  73,  80,
251   39,  46,  53,  60,  67,  74,  81,  88,  47,  54,  61,  68,  75,  82,  89,
252   96,  55,  62,  69,  76,  83,  90,  97,  104, 63,  70,  77,  84,  91,  98,
253   105, 112, 71,  78,  85,  92,  99,  106, 113, 120, 79,  86,  93,  100, 107,
254   114, 121, 87,  94,  101, 108, 115, 122, 95,  102, 109, 116, 123, 103, 110,
255   117, 124, 111, 118, 125, 119, 126, 127,
256 };
257 
258 DECLARE_ALIGNED(16, static const int16_t, default_scan_16x8[128]) = {
259   0,  16,  1,   32, 17,  2,   48,  33,  18, 3,  64,  49,  34,  19,  4,   80,
260   65, 50,  35,  20, 5,   96,  81,  66,  51, 36, 21,  6,   112, 97,  82,  67,
261   52, 37,  22,  7,  113, 98,  83,  68,  53, 38, 23,  8,   114, 99,  84,  69,
262   54, 39,  24,  9,  115, 100, 85,  70,  55, 40, 25,  10,  116, 101, 86,  71,
263   56, 41,  26,  11, 117, 102, 87,  72,  57, 42, 27,  12,  118, 103, 88,  73,
264   58, 43,  28,  13, 119, 104, 89,  74,  59, 44, 29,  14,  120, 105, 90,  75,
265   60, 45,  30,  15, 121, 106, 91,  76,  61, 46, 31,  122, 107, 92,  77,  62,
266   47, 123, 108, 93, 78,  63,  124, 109, 94, 79, 125, 110, 95,  126, 111, 127,
267 };
268 
269 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_8x16[128]) = {
270   0, 8,  16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96,  104, 112, 120,
271   1, 9,  17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97,  105, 113, 121,
272   2, 10, 18, 26, 34, 42, 50, 58, 66, 74, 82, 90, 98,  106, 114, 122,
273   3, 11, 19, 27, 35, 43, 51, 59, 67, 75, 83, 91, 99,  107, 115, 123,
274   4, 12, 20, 28, 36, 44, 52, 60, 68, 76, 84, 92, 100, 108, 116, 124,
275   5, 13, 21, 29, 37, 45, 53, 61, 69, 77, 85, 93, 101, 109, 117, 125,
276   6, 14, 22, 30, 38, 46, 54, 62, 70, 78, 86, 94, 102, 110, 118, 126,
277   7, 15, 23, 31, 39, 47, 55, 63, 71, 79, 87, 95, 103, 111, 119, 127,
278 };
279 
280 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_16x8[128]) = {
281   0,  16, 32, 48, 64, 80, 96,  112, 1,  17, 33, 49, 65, 81, 97,  113,
282   2,  18, 34, 50, 66, 82, 98,  114, 3,  19, 35, 51, 67, 83, 99,  115,
283   4,  20, 36, 52, 68, 84, 100, 116, 5,  21, 37, 53, 69, 85, 101, 117,
284   6,  22, 38, 54, 70, 86, 102, 118, 7,  23, 39, 55, 71, 87, 103, 119,
285   8,  24, 40, 56, 72, 88, 104, 120, 9,  25, 41, 57, 73, 89, 105, 121,
286   10, 26, 42, 58, 74, 90, 106, 122, 11, 27, 43, 59, 75, 91, 107, 123,
287   12, 28, 44, 60, 76, 92, 108, 124, 13, 29, 45, 61, 77, 93, 109, 125,
288   14, 30, 46, 62, 78, 94, 110, 126, 15, 31, 47, 63, 79, 95, 111, 127,
289 };
290 
291 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_8x16[128]) = {
292   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
293   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
294   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
295   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
296   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
297   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
298   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
299   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
300   120, 121, 122, 123, 124, 125, 126, 127,
301 };
302 
303 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_16x8[128]) = {
304   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
305   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
306   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
307   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
308   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
309   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
310   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
311   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
312   120, 121, 122, 123, 124, 125, 126, 127,
313 };
314 
315 DECLARE_ALIGNED(16, static const int16_t, default_scan_16x32[512]) = {
316   0,   1,   16,  2,   17,  32,  3,   18,  33,  48,  4,   19,  34,  49,  64,
317   5,   20,  35,  50,  65,  80,  6,   21,  36,  51,  66,  81,  96,  7,   22,
318   37,  52,  67,  82,  97,  112, 8,   23,  38,  53,  68,  83,  98,  113, 128,
319   9,   24,  39,  54,  69,  84,  99,  114, 129, 144, 10,  25,  40,  55,  70,
320   85,  100, 115, 130, 145, 160, 11,  26,  41,  56,  71,  86,  101, 116, 131,
321   146, 161, 176, 12,  27,  42,  57,  72,  87,  102, 117, 132, 147, 162, 177,
322   192, 13,  28,  43,  58,  73,  88,  103, 118, 133, 148, 163, 178, 193, 208,
323   14,  29,  44,  59,  74,  89,  104, 119, 134, 149, 164, 179, 194, 209, 224,
324   15,  30,  45,  60,  75,  90,  105, 120, 135, 150, 165, 180, 195, 210, 225,
325   240, 31,  46,  61,  76,  91,  106, 121, 136, 151, 166, 181, 196, 211, 226,
326   241, 256, 47,  62,  77,  92,  107, 122, 137, 152, 167, 182, 197, 212, 227,
327   242, 257, 272, 63,  78,  93,  108, 123, 138, 153, 168, 183, 198, 213, 228,
328   243, 258, 273, 288, 79,  94,  109, 124, 139, 154, 169, 184, 199, 214, 229,
329   244, 259, 274, 289, 304, 95,  110, 125, 140, 155, 170, 185, 200, 215, 230,
330   245, 260, 275, 290, 305, 320, 111, 126, 141, 156, 171, 186, 201, 216, 231,
331   246, 261, 276, 291, 306, 321, 336, 127, 142, 157, 172, 187, 202, 217, 232,
332   247, 262, 277, 292, 307, 322, 337, 352, 143, 158, 173, 188, 203, 218, 233,
333   248, 263, 278, 293, 308, 323, 338, 353, 368, 159, 174, 189, 204, 219, 234,
334   249, 264, 279, 294, 309, 324, 339, 354, 369, 384, 175, 190, 205, 220, 235,
335   250, 265, 280, 295, 310, 325, 340, 355, 370, 385, 400, 191, 206, 221, 236,
336   251, 266, 281, 296, 311, 326, 341, 356, 371, 386, 401, 416, 207, 222, 237,
337   252, 267, 282, 297, 312, 327, 342, 357, 372, 387, 402, 417, 432, 223, 238,
338   253, 268, 283, 298, 313, 328, 343, 358, 373, 388, 403, 418, 433, 448, 239,
339   254, 269, 284, 299, 314, 329, 344, 359, 374, 389, 404, 419, 434, 449, 464,
340   255, 270, 285, 300, 315, 330, 345, 360, 375, 390, 405, 420, 435, 450, 465,
341   480, 271, 286, 301, 316, 331, 346, 361, 376, 391, 406, 421, 436, 451, 466,
342   481, 496, 287, 302, 317, 332, 347, 362, 377, 392, 407, 422, 437, 452, 467,
343   482, 497, 303, 318, 333, 348, 363, 378, 393, 408, 423, 438, 453, 468, 483,
344   498, 319, 334, 349, 364, 379, 394, 409, 424, 439, 454, 469, 484, 499, 335,
345   350, 365, 380, 395, 410, 425, 440, 455, 470, 485, 500, 351, 366, 381, 396,
346   411, 426, 441, 456, 471, 486, 501, 367, 382, 397, 412, 427, 442, 457, 472,
347   487, 502, 383, 398, 413, 428, 443, 458, 473, 488, 503, 399, 414, 429, 444,
348   459, 474, 489, 504, 415, 430, 445, 460, 475, 490, 505, 431, 446, 461, 476,
349   491, 506, 447, 462, 477, 492, 507, 463, 478, 493, 508, 479, 494, 509, 495,
350   510, 511,
351 };
352 
353 DECLARE_ALIGNED(16, static const int16_t, default_scan_32x16[512]) = {
354   0,   32,  1,   64,  33,  2,   96,  65,  34,  3,   128, 97,  66,  35,  4,
355   160, 129, 98,  67,  36,  5,   192, 161, 130, 99,  68,  37,  6,   224, 193,
356   162, 131, 100, 69,  38,  7,   256, 225, 194, 163, 132, 101, 70,  39,  8,
357   288, 257, 226, 195, 164, 133, 102, 71,  40,  9,   320, 289, 258, 227, 196,
358   165, 134, 103, 72,  41,  10,  352, 321, 290, 259, 228, 197, 166, 135, 104,
359   73,  42,  11,  384, 353, 322, 291, 260, 229, 198, 167, 136, 105, 74,  43,
360   12,  416, 385, 354, 323, 292, 261, 230, 199, 168, 137, 106, 75,  44,  13,
361   448, 417, 386, 355, 324, 293, 262, 231, 200, 169, 138, 107, 76,  45,  14,
362   480, 449, 418, 387, 356, 325, 294, 263, 232, 201, 170, 139, 108, 77,  46,
363   15,  481, 450, 419, 388, 357, 326, 295, 264, 233, 202, 171, 140, 109, 78,
364   47,  16,  482, 451, 420, 389, 358, 327, 296, 265, 234, 203, 172, 141, 110,
365   79,  48,  17,  483, 452, 421, 390, 359, 328, 297, 266, 235, 204, 173, 142,
366   111, 80,  49,  18,  484, 453, 422, 391, 360, 329, 298, 267, 236, 205, 174,
367   143, 112, 81,  50,  19,  485, 454, 423, 392, 361, 330, 299, 268, 237, 206,
368   175, 144, 113, 82,  51,  20,  486, 455, 424, 393, 362, 331, 300, 269, 238,
369   207, 176, 145, 114, 83,  52,  21,  487, 456, 425, 394, 363, 332, 301, 270,
370   239, 208, 177, 146, 115, 84,  53,  22,  488, 457, 426, 395, 364, 333, 302,
371   271, 240, 209, 178, 147, 116, 85,  54,  23,  489, 458, 427, 396, 365, 334,
372   303, 272, 241, 210, 179, 148, 117, 86,  55,  24,  490, 459, 428, 397, 366,
373   335, 304, 273, 242, 211, 180, 149, 118, 87,  56,  25,  491, 460, 429, 398,
374   367, 336, 305, 274, 243, 212, 181, 150, 119, 88,  57,  26,  492, 461, 430,
375   399, 368, 337, 306, 275, 244, 213, 182, 151, 120, 89,  58,  27,  493, 462,
376   431, 400, 369, 338, 307, 276, 245, 214, 183, 152, 121, 90,  59,  28,  494,
377   463, 432, 401, 370, 339, 308, 277, 246, 215, 184, 153, 122, 91,  60,  29,
378   495, 464, 433, 402, 371, 340, 309, 278, 247, 216, 185, 154, 123, 92,  61,
379   30,  496, 465, 434, 403, 372, 341, 310, 279, 248, 217, 186, 155, 124, 93,
380   62,  31,  497, 466, 435, 404, 373, 342, 311, 280, 249, 218, 187, 156, 125,
381   94,  63,  498, 467, 436, 405, 374, 343, 312, 281, 250, 219, 188, 157, 126,
382   95,  499, 468, 437, 406, 375, 344, 313, 282, 251, 220, 189, 158, 127, 500,
383   469, 438, 407, 376, 345, 314, 283, 252, 221, 190, 159, 501, 470, 439, 408,
384   377, 346, 315, 284, 253, 222, 191, 502, 471, 440, 409, 378, 347, 316, 285,
385   254, 223, 503, 472, 441, 410, 379, 348, 317, 286, 255, 504, 473, 442, 411,
386   380, 349, 318, 287, 505, 474, 443, 412, 381, 350, 319, 506, 475, 444, 413,
387   382, 351, 507, 476, 445, 414, 383, 508, 477, 446, 415, 509, 478, 447, 510,
388   479, 511,
389 };
390 
391 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_16x32[512]) = {
392   0,   16,  32,  48,  64,  80,  96,  112, 128, 144, 160, 176, 192, 208, 224,
393   240, 256, 272, 288, 304, 320, 336, 352, 368, 384, 400, 416, 432, 448, 464,
394   480, 496, 1,   17,  33,  49,  65,  81,  97,  113, 129, 145, 161, 177, 193,
395   209, 225, 241, 257, 273, 289, 305, 321, 337, 353, 369, 385, 401, 417, 433,
396   449, 465, 481, 497, 2,   18,  34,  50,  66,  82,  98,  114, 130, 146, 162,
397   178, 194, 210, 226, 242, 258, 274, 290, 306, 322, 338, 354, 370, 386, 402,
398   418, 434, 450, 466, 482, 498, 3,   19,  35,  51,  67,  83,  99,  115, 131,
399   147, 163, 179, 195, 211, 227, 243, 259, 275, 291, 307, 323, 339, 355, 371,
400   387, 403, 419, 435, 451, 467, 483, 499, 4,   20,  36,  52,  68,  84,  100,
401   116, 132, 148, 164, 180, 196, 212, 228, 244, 260, 276, 292, 308, 324, 340,
402   356, 372, 388, 404, 420, 436, 452, 468, 484, 500, 5,   21,  37,  53,  69,
403   85,  101, 117, 133, 149, 165, 181, 197, 213, 229, 245, 261, 277, 293, 309,
404   325, 341, 357, 373, 389, 405, 421, 437, 453, 469, 485, 501, 6,   22,  38,
405   54,  70,  86,  102, 118, 134, 150, 166, 182, 198, 214, 230, 246, 262, 278,
406   294, 310, 326, 342, 358, 374, 390, 406, 422, 438, 454, 470, 486, 502, 7,
407   23,  39,  55,  71,  87,  103, 119, 135, 151, 167, 183, 199, 215, 231, 247,
408   263, 279, 295, 311, 327, 343, 359, 375, 391, 407, 423, 439, 455, 471, 487,
409   503, 8,   24,  40,  56,  72,  88,  104, 120, 136, 152, 168, 184, 200, 216,
410   232, 248, 264, 280, 296, 312, 328, 344, 360, 376, 392, 408, 424, 440, 456,
411   472, 488, 504, 9,   25,  41,  57,  73,  89,  105, 121, 137, 153, 169, 185,
412   201, 217, 233, 249, 265, 281, 297, 313, 329, 345, 361, 377, 393, 409, 425,
413   441, 457, 473, 489, 505, 10,  26,  42,  58,  74,  90,  106, 122, 138, 154,
414   170, 186, 202, 218, 234, 250, 266, 282, 298, 314, 330, 346, 362, 378, 394,
415   410, 426, 442, 458, 474, 490, 506, 11,  27,  43,  59,  75,  91,  107, 123,
416   139, 155, 171, 187, 203, 219, 235, 251, 267, 283, 299, 315, 331, 347, 363,
417   379, 395, 411, 427, 443, 459, 475, 491, 507, 12,  28,  44,  60,  76,  92,
418   108, 124, 140, 156, 172, 188, 204, 220, 236, 252, 268, 284, 300, 316, 332,
419   348, 364, 380, 396, 412, 428, 444, 460, 476, 492, 508, 13,  29,  45,  61,
420   77,  93,  109, 125, 141, 157, 173, 189, 205, 221, 237, 253, 269, 285, 301,
421   317, 333, 349, 365, 381, 397, 413, 429, 445, 461, 477, 493, 509, 14,  30,
422   46,  62,  78,  94,  110, 126, 142, 158, 174, 190, 206, 222, 238, 254, 270,
423   286, 302, 318, 334, 350, 366, 382, 398, 414, 430, 446, 462, 478, 494, 510,
424   15,  31,  47,  63,  79,  95,  111, 127, 143, 159, 175, 191, 207, 223, 239,
425   255, 271, 287, 303, 319, 335, 351, 367, 383, 399, 415, 431, 447, 463, 479,
426   495, 511,
427 };
428 
429 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_32x16[512]) = {
430   0,  32, 64, 96,  128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480,
431   1,  33, 65, 97,  129, 161, 193, 225, 257, 289, 321, 353, 385, 417, 449, 481,
432   2,  34, 66, 98,  130, 162, 194, 226, 258, 290, 322, 354, 386, 418, 450, 482,
433   3,  35, 67, 99,  131, 163, 195, 227, 259, 291, 323, 355, 387, 419, 451, 483,
434   4,  36, 68, 100, 132, 164, 196, 228, 260, 292, 324, 356, 388, 420, 452, 484,
435   5,  37, 69, 101, 133, 165, 197, 229, 261, 293, 325, 357, 389, 421, 453, 485,
436   6,  38, 70, 102, 134, 166, 198, 230, 262, 294, 326, 358, 390, 422, 454, 486,
437   7,  39, 71, 103, 135, 167, 199, 231, 263, 295, 327, 359, 391, 423, 455, 487,
438   8,  40, 72, 104, 136, 168, 200, 232, 264, 296, 328, 360, 392, 424, 456, 488,
439   9,  41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 361, 393, 425, 457, 489,
440   10, 42, 74, 106, 138, 170, 202, 234, 266, 298, 330, 362, 394, 426, 458, 490,
441   11, 43, 75, 107, 139, 171, 203, 235, 267, 299, 331, 363, 395, 427, 459, 491,
442   12, 44, 76, 108, 140, 172, 204, 236, 268, 300, 332, 364, 396, 428, 460, 492,
443   13, 45, 77, 109, 141, 173, 205, 237, 269, 301, 333, 365, 397, 429, 461, 493,
444   14, 46, 78, 110, 142, 174, 206, 238, 270, 302, 334, 366, 398, 430, 462, 494,
445   15, 47, 79, 111, 143, 175, 207, 239, 271, 303, 335, 367, 399, 431, 463, 495,
446   16, 48, 80, 112, 144, 176, 208, 240, 272, 304, 336, 368, 400, 432, 464, 496,
447   17, 49, 81, 113, 145, 177, 209, 241, 273, 305, 337, 369, 401, 433, 465, 497,
448   18, 50, 82, 114, 146, 178, 210, 242, 274, 306, 338, 370, 402, 434, 466, 498,
449   19, 51, 83, 115, 147, 179, 211, 243, 275, 307, 339, 371, 403, 435, 467, 499,
450   20, 52, 84, 116, 148, 180, 212, 244, 276, 308, 340, 372, 404, 436, 468, 500,
451   21, 53, 85, 117, 149, 181, 213, 245, 277, 309, 341, 373, 405, 437, 469, 501,
452   22, 54, 86, 118, 150, 182, 214, 246, 278, 310, 342, 374, 406, 438, 470, 502,
453   23, 55, 87, 119, 151, 183, 215, 247, 279, 311, 343, 375, 407, 439, 471, 503,
454   24, 56, 88, 120, 152, 184, 216, 248, 280, 312, 344, 376, 408, 440, 472, 504,
455   25, 57, 89, 121, 153, 185, 217, 249, 281, 313, 345, 377, 409, 441, 473, 505,
456   26, 58, 90, 122, 154, 186, 218, 250, 282, 314, 346, 378, 410, 442, 474, 506,
457   27, 59, 91, 123, 155, 187, 219, 251, 283, 315, 347, 379, 411, 443, 475, 507,
458   28, 60, 92, 124, 156, 188, 220, 252, 284, 316, 348, 380, 412, 444, 476, 508,
459   29, 61, 93, 125, 157, 189, 221, 253, 285, 317, 349, 381, 413, 445, 477, 509,
460   30, 62, 94, 126, 158, 190, 222, 254, 286, 318, 350, 382, 414, 446, 478, 510,
461   31, 63, 95, 127, 159, 191, 223, 255, 287, 319, 351, 383, 415, 447, 479, 511,
462 };
463 
464 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_16x32[512]) = {
465   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
466   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
467   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
468   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
469   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
470   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
471   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
472   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
473   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
474   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
475   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
476   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
477   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
478   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
479   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
480   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
481   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
482   255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
483   270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
484   285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
485   300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
486   315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
487   330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
488   345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
489   360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
490   375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
491   390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
492   405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
493   420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
494   435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
495   450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
496   465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
497   480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
498   495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
499   510, 511,
500 };
501 
502 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_32x16[512]) = {
503   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
504   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
505   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
506   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
507   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
508   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
509   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
510   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
511   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
512   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
513   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
514   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
515   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
516   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
517   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
518   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
519   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
520   255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
521   270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
522   285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
523   300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
524   315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
525   330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
526   345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
527   360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
528   375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
529   390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
530   405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
531   420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
532   435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
533   450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
534   465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
535   480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
536   495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
537   510, 511,
538 };
539 
540 DECLARE_ALIGNED(16, static const int16_t, default_scan_16x16[256]) = {
541   0,   1,   16,  32,  17,  2,   3,   18,  33,  48,  64,  49,  34,  19,  4,
542   5,   20,  35,  50,  65,  80,  96,  81,  66,  51,  36,  21,  6,   7,   22,
543   37,  52,  67,  82,  97,  112, 128, 113, 98,  83,  68,  53,  38,  23,  8,
544   9,   24,  39,  54,  69,  84,  99,  114, 129, 144, 160, 145, 130, 115, 100,
545   85,  70,  55,  40,  25,  10,  11,  26,  41,  56,  71,  86,  101, 116, 131,
546   146, 161, 176, 192, 177, 162, 147, 132, 117, 102, 87,  72,  57,  42,  27,
547   12,  13,  28,  43,  58,  73,  88,  103, 118, 133, 148, 163, 178, 193, 208,
548   224, 209, 194, 179, 164, 149, 134, 119, 104, 89,  74,  59,  44,  29,  14,
549   15,  30,  45,  60,  75,  90,  105, 120, 135, 150, 165, 180, 195, 210, 225,
550   240, 241, 226, 211, 196, 181, 166, 151, 136, 121, 106, 91,  76,  61,  46,
551   31,  47,  62,  77,  92,  107, 122, 137, 152, 167, 182, 197, 212, 227, 242,
552   243, 228, 213, 198, 183, 168, 153, 138, 123, 108, 93,  78,  63,  79,  94,
553   109, 124, 139, 154, 169, 184, 199, 214, 229, 244, 245, 230, 215, 200, 185,
554   170, 155, 140, 125, 110, 95,  111, 126, 141, 156, 171, 186, 201, 216, 231,
555   246, 247, 232, 217, 202, 187, 172, 157, 142, 127, 143, 158, 173, 188, 203,
556   218, 233, 248, 249, 234, 219, 204, 189, 174, 159, 175, 190, 205, 220, 235,
557   250, 251, 236, 221, 206, 191, 207, 222, 237, 252, 253, 238, 223, 239, 254,
558   255
559 };
560 
561 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_16x16[256]) = {
562   0,  16, 32, 48, 64, 80, 96,  112, 128, 144, 160, 176, 192, 208, 224, 240,
563   1,  17, 33, 49, 65, 81, 97,  113, 129, 145, 161, 177, 193, 209, 225, 241,
564   2,  18, 34, 50, 66, 82, 98,  114, 130, 146, 162, 178, 194, 210, 226, 242,
565   3,  19, 35, 51, 67, 83, 99,  115, 131, 147, 163, 179, 195, 211, 227, 243,
566   4,  20, 36, 52, 68, 84, 100, 116, 132, 148, 164, 180, 196, 212, 228, 244,
567   5,  21, 37, 53, 69, 85, 101, 117, 133, 149, 165, 181, 197, 213, 229, 245,
568   6,  22, 38, 54, 70, 86, 102, 118, 134, 150, 166, 182, 198, 214, 230, 246,
569   7,  23, 39, 55, 71, 87, 103, 119, 135, 151, 167, 183, 199, 215, 231, 247,
570   8,  24, 40, 56, 72, 88, 104, 120, 136, 152, 168, 184, 200, 216, 232, 248,
571   9,  25, 41, 57, 73, 89, 105, 121, 137, 153, 169, 185, 201, 217, 233, 249,
572   10, 26, 42, 58, 74, 90, 106, 122, 138, 154, 170, 186, 202, 218, 234, 250,
573   11, 27, 43, 59, 75, 91, 107, 123, 139, 155, 171, 187, 203, 219, 235, 251,
574   12, 28, 44, 60, 76, 92, 108, 124, 140, 156, 172, 188, 204, 220, 236, 252,
575   13, 29, 45, 61, 77, 93, 109, 125, 141, 157, 173, 189, 205, 221, 237, 253,
576   14, 30, 46, 62, 78, 94, 110, 126, 142, 158, 174, 190, 206, 222, 238, 254,
577   15, 31, 47, 63, 79, 95, 111, 127, 143, 159, 175, 191, 207, 223, 239, 255,
578 };
579 
580 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_16x16[256]) = {
581   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
582   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
583   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
584   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
585   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
586   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
587   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
588   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
589   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
590   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
591   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
592   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
593   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
594   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
595   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
596   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
597   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
598   255,
599 };
600 
601 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_32x32[1024]) = {
602   0,   32,   64,  96,   128, 160,  192, 224,  256, 288,  320, 352,  384, 416,
603   448, 480,  512, 544,  576, 608,  640, 672,  704, 736,  768, 800,  832, 864,
604   896, 928,  960, 992,  1,   33,   65,  97,   129, 161,  193, 225,  257, 289,
605   321, 353,  385, 417,  449, 481,  513, 545,  577, 609,  641, 673,  705, 737,
606   769, 801,  833, 865,  897, 929,  961, 993,  2,   34,   66,  98,   130, 162,
607   194, 226,  258, 290,  322, 354,  386, 418,  450, 482,  514, 546,  578, 610,
608   642, 674,  706, 738,  770, 802,  834, 866,  898, 930,  962, 994,  3,   35,
609   67,  99,   131, 163,  195, 227,  259, 291,  323, 355,  387, 419,  451, 483,
610   515, 547,  579, 611,  643, 675,  707, 739,  771, 803,  835, 867,  899, 931,
611   963, 995,  4,   36,   68,  100,  132, 164,  196, 228,  260, 292,  324, 356,
612   388, 420,  452, 484,  516, 548,  580, 612,  644, 676,  708, 740,  772, 804,
613   836, 868,  900, 932,  964, 996,  5,   37,   69,  101,  133, 165,  197, 229,
614   261, 293,  325, 357,  389, 421,  453, 485,  517, 549,  581, 613,  645, 677,
615   709, 741,  773, 805,  837, 869,  901, 933,  965, 997,  6,   38,   70,  102,
616   134, 166,  198, 230,  262, 294,  326, 358,  390, 422,  454, 486,  518, 550,
617   582, 614,  646, 678,  710, 742,  774, 806,  838, 870,  902, 934,  966, 998,
618   7,   39,   71,  103,  135, 167,  199, 231,  263, 295,  327, 359,  391, 423,
619   455, 487,  519, 551,  583, 615,  647, 679,  711, 743,  775, 807,  839, 871,
620   903, 935,  967, 999,  8,   40,   72,  104,  136, 168,  200, 232,  264, 296,
621   328, 360,  392, 424,  456, 488,  520, 552,  584, 616,  648, 680,  712, 744,
622   776, 808,  840, 872,  904, 936,  968, 1000, 9,   41,   73,  105,  137, 169,
623   201, 233,  265, 297,  329, 361,  393, 425,  457, 489,  521, 553,  585, 617,
624   649, 681,  713, 745,  777, 809,  841, 873,  905, 937,  969, 1001, 10,  42,
625   74,  106,  138, 170,  202, 234,  266, 298,  330, 362,  394, 426,  458, 490,
626   522, 554,  586, 618,  650, 682,  714, 746,  778, 810,  842, 874,  906, 938,
627   970, 1002, 11,  43,   75,  107,  139, 171,  203, 235,  267, 299,  331, 363,
628   395, 427,  459, 491,  523, 555,  587, 619,  651, 683,  715, 747,  779, 811,
629   843, 875,  907, 939,  971, 1003, 12,  44,   76,  108,  140, 172,  204, 236,
630   268, 300,  332, 364,  396, 428,  460, 492,  524, 556,  588, 620,  652, 684,
631   716, 748,  780, 812,  844, 876,  908, 940,  972, 1004, 13,  45,   77,  109,
632   141, 173,  205, 237,  269, 301,  333, 365,  397, 429,  461, 493,  525, 557,
633   589, 621,  653, 685,  717, 749,  781, 813,  845, 877,  909, 941,  973, 1005,
634   14,  46,   78,  110,  142, 174,  206, 238,  270, 302,  334, 366,  398, 430,
635   462, 494,  526, 558,  590, 622,  654, 686,  718, 750,  782, 814,  846, 878,
636   910, 942,  974, 1006, 15,  47,   79,  111,  143, 175,  207, 239,  271, 303,
637   335, 367,  399, 431,  463, 495,  527, 559,  591, 623,  655, 687,  719, 751,
638   783, 815,  847, 879,  911, 943,  975, 1007, 16,  48,   80,  112,  144, 176,
639   208, 240,  272, 304,  336, 368,  400, 432,  464, 496,  528, 560,  592, 624,
640   656, 688,  720, 752,  784, 816,  848, 880,  912, 944,  976, 1008, 17,  49,
641   81,  113,  145, 177,  209, 241,  273, 305,  337, 369,  401, 433,  465, 497,
642   529, 561,  593, 625,  657, 689,  721, 753,  785, 817,  849, 881,  913, 945,
643   977, 1009, 18,  50,   82,  114,  146, 178,  210, 242,  274, 306,  338, 370,
644   402, 434,  466, 498,  530, 562,  594, 626,  658, 690,  722, 754,  786, 818,
645   850, 882,  914, 946,  978, 1010, 19,  51,   83,  115,  147, 179,  211, 243,
646   275, 307,  339, 371,  403, 435,  467, 499,  531, 563,  595, 627,  659, 691,
647   723, 755,  787, 819,  851, 883,  915, 947,  979, 1011, 20,  52,   84,  116,
648   148, 180,  212, 244,  276, 308,  340, 372,  404, 436,  468, 500,  532, 564,
649   596, 628,  660, 692,  724, 756,  788, 820,  852, 884,  916, 948,  980, 1012,
650   21,  53,   85,  117,  149, 181,  213, 245,  277, 309,  341, 373,  405, 437,
651   469, 501,  533, 565,  597, 629,  661, 693,  725, 757,  789, 821,  853, 885,
652   917, 949,  981, 1013, 22,  54,   86,  118,  150, 182,  214, 246,  278, 310,
653   342, 374,  406, 438,  470, 502,  534, 566,  598, 630,  662, 694,  726, 758,
654   790, 822,  854, 886,  918, 950,  982, 1014, 23,  55,   87,  119,  151, 183,
655   215, 247,  279, 311,  343, 375,  407, 439,  471, 503,  535, 567,  599, 631,
656   663, 695,  727, 759,  791, 823,  855, 887,  919, 951,  983, 1015, 24,  56,
657   88,  120,  152, 184,  216, 248,  280, 312,  344, 376,  408, 440,  472, 504,
658   536, 568,  600, 632,  664, 696,  728, 760,  792, 824,  856, 888,  920, 952,
659   984, 1016, 25,  57,   89,  121,  153, 185,  217, 249,  281, 313,  345, 377,
660   409, 441,  473, 505,  537, 569,  601, 633,  665, 697,  729, 761,  793, 825,
661   857, 889,  921, 953,  985, 1017, 26,  58,   90,  122,  154, 186,  218, 250,
662   282, 314,  346, 378,  410, 442,  474, 506,  538, 570,  602, 634,  666, 698,
663   730, 762,  794, 826,  858, 890,  922, 954,  986, 1018, 27,  59,   91,  123,
664   155, 187,  219, 251,  283, 315,  347, 379,  411, 443,  475, 507,  539, 571,
665   603, 635,  667, 699,  731, 763,  795, 827,  859, 891,  923, 955,  987, 1019,
666   28,  60,   92,  124,  156, 188,  220, 252,  284, 316,  348, 380,  412, 444,
667   476, 508,  540, 572,  604, 636,  668, 700,  732, 764,  796, 828,  860, 892,
668   924, 956,  988, 1020, 29,  61,   93,  125,  157, 189,  221, 253,  285, 317,
669   349, 381,  413, 445,  477, 509,  541, 573,  605, 637,  669, 701,  733, 765,
670   797, 829,  861, 893,  925, 957,  989, 1021, 30,  62,   94,  126,  158, 190,
671   222, 254,  286, 318,  350, 382,  414, 446,  478, 510,  542, 574,  606, 638,
672   670, 702,  734, 766,  798, 830,  862, 894,  926, 958,  990, 1022, 31,  63,
673   95,  127,  159, 191,  223, 255,  287, 319,  351, 383,  415, 447,  479, 511,
674   543, 575,  607, 639,  671, 703,  735, 767,  799, 831,  863, 895,  927, 959,
675   991, 1023,
676 };
677 
678 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_32x32[1024]) = {
679   0,    1,    2,    3,    4,    5,    6,    7,    8,    9,    10,   11,   12,
680   13,   14,   15,   16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
681   26,   27,   28,   29,   30,   31,   32,   33,   34,   35,   36,   37,   38,
682   39,   40,   41,   42,   43,   44,   45,   46,   47,   48,   49,   50,   51,
683   52,   53,   54,   55,   56,   57,   58,   59,   60,   61,   62,   63,   64,
684   65,   66,   67,   68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
685   78,   79,   80,   81,   82,   83,   84,   85,   86,   87,   88,   89,   90,
686   91,   92,   93,   94,   95,   96,   97,   98,   99,   100,  101,  102,  103,
687   104,  105,  106,  107,  108,  109,  110,  111,  112,  113,  114,  115,  116,
688   117,  118,  119,  120,  121,  122,  123,  124,  125,  126,  127,  128,  129,
689   130,  131,  132,  133,  134,  135,  136,  137,  138,  139,  140,  141,  142,
690   143,  144,  145,  146,  147,  148,  149,  150,  151,  152,  153,  154,  155,
691   156,  157,  158,  159,  160,  161,  162,  163,  164,  165,  166,  167,  168,
692   169,  170,  171,  172,  173,  174,  175,  176,  177,  178,  179,  180,  181,
693   182,  183,  184,  185,  186,  187,  188,  189,  190,  191,  192,  193,  194,
694   195,  196,  197,  198,  199,  200,  201,  202,  203,  204,  205,  206,  207,
695   208,  209,  210,  211,  212,  213,  214,  215,  216,  217,  218,  219,  220,
696   221,  222,  223,  224,  225,  226,  227,  228,  229,  230,  231,  232,  233,
697   234,  235,  236,  237,  238,  239,  240,  241,  242,  243,  244,  245,  246,
698   247,  248,  249,  250,  251,  252,  253,  254,  255,  256,  257,  258,  259,
699   260,  261,  262,  263,  264,  265,  266,  267,  268,  269,  270,  271,  272,
700   273,  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
701   286,  287,  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
702   299,  300,  301,  302,  303,  304,  305,  306,  307,  308,  309,  310,  311,
703   312,  313,  314,  315,  316,  317,  318,  319,  320,  321,  322,  323,  324,
704   325,  326,  327,  328,  329,  330,  331,  332,  333,  334,  335,  336,  337,
705   338,  339,  340,  341,  342,  343,  344,  345,  346,  347,  348,  349,  350,
706   351,  352,  353,  354,  355,  356,  357,  358,  359,  360,  361,  362,  363,
707   364,  365,  366,  367,  368,  369,  370,  371,  372,  373,  374,  375,  376,
708   377,  378,  379,  380,  381,  382,  383,  384,  385,  386,  387,  388,  389,
709   390,  391,  392,  393,  394,  395,  396,  397,  398,  399,  400,  401,  402,
710   403,  404,  405,  406,  407,  408,  409,  410,  411,  412,  413,  414,  415,
711   416,  417,  418,  419,  420,  421,  422,  423,  424,  425,  426,  427,  428,
712   429,  430,  431,  432,  433,  434,  435,  436,  437,  438,  439,  440,  441,
713   442,  443,  444,  445,  446,  447,  448,  449,  450,  451,  452,  453,  454,
714   455,  456,  457,  458,  459,  460,  461,  462,  463,  464,  465,  466,  467,
715   468,  469,  470,  471,  472,  473,  474,  475,  476,  477,  478,  479,  480,
716   481,  482,  483,  484,  485,  486,  487,  488,  489,  490,  491,  492,  493,
717   494,  495,  496,  497,  498,  499,  500,  501,  502,  503,  504,  505,  506,
718   507,  508,  509,  510,  511,  512,  513,  514,  515,  516,  517,  518,  519,
719   520,  521,  522,  523,  524,  525,  526,  527,  528,  529,  530,  531,  532,
720   533,  534,  535,  536,  537,  538,  539,  540,  541,  542,  543,  544,  545,
721   546,  547,  548,  549,  550,  551,  552,  553,  554,  555,  556,  557,  558,
722   559,  560,  561,  562,  563,  564,  565,  566,  567,  568,  569,  570,  571,
723   572,  573,  574,  575,  576,  577,  578,  579,  580,  581,  582,  583,  584,
724   585,  586,  587,  588,  589,  590,  591,  592,  593,  594,  595,  596,  597,
725   598,  599,  600,  601,  602,  603,  604,  605,  606,  607,  608,  609,  610,
726   611,  612,  613,  614,  615,  616,  617,  618,  619,  620,  621,  622,  623,
727   624,  625,  626,  627,  628,  629,  630,  631,  632,  633,  634,  635,  636,
728   637,  638,  639,  640,  641,  642,  643,  644,  645,  646,  647,  648,  649,
729   650,  651,  652,  653,  654,  655,  656,  657,  658,  659,  660,  661,  662,
730   663,  664,  665,  666,  667,  668,  669,  670,  671,  672,  673,  674,  675,
731   676,  677,  678,  679,  680,  681,  682,  683,  684,  685,  686,  687,  688,
732   689,  690,  691,  692,  693,  694,  695,  696,  697,  698,  699,  700,  701,
733   702,  703,  704,  705,  706,  707,  708,  709,  710,  711,  712,  713,  714,
734   715,  716,  717,  718,  719,  720,  721,  722,  723,  724,  725,  726,  727,
735   728,  729,  730,  731,  732,  733,  734,  735,  736,  737,  738,  739,  740,
736   741,  742,  743,  744,  745,  746,  747,  748,  749,  750,  751,  752,  753,
737   754,  755,  756,  757,  758,  759,  760,  761,  762,  763,  764,  765,  766,
738   767,  768,  769,  770,  771,  772,  773,  774,  775,  776,  777,  778,  779,
739   780,  781,  782,  783,  784,  785,  786,  787,  788,  789,  790,  791,  792,
740   793,  794,  795,  796,  797,  798,  799,  800,  801,  802,  803,  804,  805,
741   806,  807,  808,  809,  810,  811,  812,  813,  814,  815,  816,  817,  818,
742   819,  820,  821,  822,  823,  824,  825,  826,  827,  828,  829,  830,  831,
743   832,  833,  834,  835,  836,  837,  838,  839,  840,  841,  842,  843,  844,
744   845,  846,  847,  848,  849,  850,  851,  852,  853,  854,  855,  856,  857,
745   858,  859,  860,  861,  862,  863,  864,  865,  866,  867,  868,  869,  870,
746   871,  872,  873,  874,  875,  876,  877,  878,  879,  880,  881,  882,  883,
747   884,  885,  886,  887,  888,  889,  890,  891,  892,  893,  894,  895,  896,
748   897,  898,  899,  900,  901,  902,  903,  904,  905,  906,  907,  908,  909,
749   910,  911,  912,  913,  914,  915,  916,  917,  918,  919,  920,  921,  922,
750   923,  924,  925,  926,  927,  928,  929,  930,  931,  932,  933,  934,  935,
751   936,  937,  938,  939,  940,  941,  942,  943,  944,  945,  946,  947,  948,
752   949,  950,  951,  952,  953,  954,  955,  956,  957,  958,  959,  960,  961,
753   962,  963,  964,  965,  966,  967,  968,  969,  970,  971,  972,  973,  974,
754   975,  976,  977,  978,  979,  980,  981,  982,  983,  984,  985,  986,  987,
755   988,  989,  990,  991,  992,  993,  994,  995,  996,  997,  998,  999,  1000,
756   1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013,
757   1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
758 };
759 
760 DECLARE_ALIGNED(16, static const int16_t, default_scan_32x32[1024]) = {
761   0,    1,    32,   64,   33,   2,   3,    34,   65,   96,   128,  97,  66,
762   35,   4,    5,    36,   67,   98,  129,  160,  192,  161,  130,  99,  68,
763   37,   6,    7,    38,   69,   100, 131,  162,  193,  224,  256,  225, 194,
764   163,  132,  101,  70,   39,   8,   9,    40,   71,   102,  133,  164, 195,
765   226,  257,  288,  320,  289,  258, 227,  196,  165,  134,  103,  72,  41,
766   10,   11,   42,   73,   104,  135, 166,  197,  228,  259,  290,  321, 352,
767   384,  353,  322,  291,  260,  229, 198,  167,  136,  105,  74,   43,  12,
768   13,   44,   75,   106,  137,  168, 199,  230,  261,  292,  323,  354, 385,
769   416,  448,  417,  386,  355,  324, 293,  262,  231,  200,  169,  138, 107,
770   76,   45,   14,   15,   46,   77,  108,  139,  170,  201,  232,  263, 294,
771   325,  356,  387,  418,  449,  480, 512,  481,  450,  419,  388,  357, 326,
772   295,  264,  233,  202,  171,  140, 109,  78,   47,   16,   17,   48,  79,
773   110,  141,  172,  203,  234,  265, 296,  327,  358,  389,  420,  451, 482,
774   513,  544,  576,  545,  514,  483, 452,  421,  390,  359,  328,  297, 266,
775   235,  204,  173,  142,  111,  80,  49,   18,   19,   50,   81,   112, 143,
776   174,  205,  236,  267,  298,  329, 360,  391,  422,  453,  484,  515, 546,
777   577,  608,  640,  609,  578,  547, 516,  485,  454,  423,  392,  361, 330,
778   299,  268,  237,  206,  175,  144, 113,  82,   51,   20,   21,   52,  83,
779   114,  145,  176,  207,  238,  269, 300,  331,  362,  393,  424,  455, 486,
780   517,  548,  579,  610,  641,  672, 704,  673,  642,  611,  580,  549, 518,
781   487,  456,  425,  394,  363,  332, 301,  270,  239,  208,  177,  146, 115,
782   84,   53,   22,   23,   54,   85,  116,  147,  178,  209,  240,  271, 302,
783   333,  364,  395,  426,  457,  488, 519,  550,  581,  612,  643,  674, 705,
784   736,  768,  737,  706,  675,  644, 613,  582,  551,  520,  489,  458, 427,
785   396,  365,  334,  303,  272,  241, 210,  179,  148,  117,  86,   55,  24,
786   25,   56,   87,   118,  149,  180, 211,  242,  273,  304,  335,  366, 397,
787   428,  459,  490,  521,  552,  583, 614,  645,  676,  707,  738,  769, 800,
788   832,  801,  770,  739,  708,  677, 646,  615,  584,  553,  522,  491, 460,
789   429,  398,  367,  336,  305,  274, 243,  212,  181,  150,  119,  88,  57,
790   26,   27,   58,   89,   120,  151, 182,  213,  244,  275,  306,  337, 368,
791   399,  430,  461,  492,  523,  554, 585,  616,  647,  678,  709,  740, 771,
792   802,  833,  864,  896,  865,  834, 803,  772,  741,  710,  679,  648, 617,
793   586,  555,  524,  493,  462,  431, 400,  369,  338,  307,  276,  245, 214,
794   183,  152,  121,  90,   59,   28,  29,   60,   91,   122,  153,  184, 215,
795   246,  277,  308,  339,  370,  401, 432,  463,  494,  525,  556,  587, 618,
796   649,  680,  711,  742,  773,  804, 835,  866,  897,  928,  960,  929, 898,
797   867,  836,  805,  774,  743,  712, 681,  650,  619,  588,  557,  526, 495,
798   464,  433,  402,  371,  340,  309, 278,  247,  216,  185,  154,  123, 92,
799   61,   30,   31,   62,   93,   124, 155,  186,  217,  248,  279,  310, 341,
800   372,  403,  434,  465,  496,  527, 558,  589,  620,  651,  682,  713, 744,
801   775,  806,  837,  868,  899,  930, 961,  992,  993,  962,  931,  900, 869,
802   838,  807,  776,  745,  714,  683, 652,  621,  590,  559,  528,  497, 466,
803   435,  404,  373,  342,  311,  280, 249,  218,  187,  156,  125,  94,  63,
804   95,   126,  157,  188,  219,  250, 281,  312,  343,  374,  405,  436, 467,
805   498,  529,  560,  591,  622,  653, 684,  715,  746,  777,  808,  839, 870,
806   901,  932,  963,  994,  995,  964, 933,  902,  871,  840,  809,  778, 747,
807   716,  685,  654,  623,  592,  561, 530,  499,  468,  437,  406,  375, 344,
808   313,  282,  251,  220,  189,  158, 127,  159,  190,  221,  252,  283, 314,
809   345,  376,  407,  438,  469,  500, 531,  562,  593,  624,  655,  686, 717,
810   748,  779,  810,  841,  872,  903, 934,  965,  996,  997,  966,  935, 904,
811   873,  842,  811,  780,  749,  718, 687,  656,  625,  594,  563,  532, 501,
812   470,  439,  408,  377,  346,  315, 284,  253,  222,  191,  223,  254, 285,
813   316,  347,  378,  409,  440,  471, 502,  533,  564,  595,  626,  657, 688,
814   719,  750,  781,  812,  843,  874, 905,  936,  967,  998,  999,  968, 937,
815   906,  875,  844,  813,  782,  751, 720,  689,  658,  627,  596,  565, 534,
816   503,  472,  441,  410,  379,  348, 317,  286,  255,  287,  318,  349, 380,
817   411,  442,  473,  504,  535,  566, 597,  628,  659,  690,  721,  752, 783,
818   814,  845,  876,  907,  938,  969, 1000, 1001, 970,  939,  908,  877, 846,
819   815,  784,  753,  722,  691,  660, 629,  598,  567,  536,  505,  474, 443,
820   412,  381,  350,  319,  351,  382, 413,  444,  475,  506,  537,  568, 599,
821   630,  661,  692,  723,  754,  785, 816,  847,  878,  909,  940,  971, 1002,
822   1003, 972,  941,  910,  879,  848, 817,  786,  755,  724,  693,  662, 631,
823   600,  569,  538,  507,  476,  445, 414,  383,  415,  446,  477,  508, 539,
824   570,  601,  632,  663,  694,  725, 756,  787,  818,  849,  880,  911, 942,
825   973,  1004, 1005, 974,  943,  912, 881,  850,  819,  788,  757,  726, 695,
826   664,  633,  602,  571,  540,  509, 478,  447,  479,  510,  541,  572, 603,
827   634,  665,  696,  727,  758,  789, 820,  851,  882,  913,  944,  975, 1006,
828   1007, 976,  945,  914,  883,  852, 821,  790,  759,  728,  697,  666, 635,
829   604,  573,  542,  511,  543,  574, 605,  636,  667,  698,  729,  760, 791,
830   822,  853,  884,  915,  946,  977, 1008, 1009, 978,  947,  916,  885, 854,
831   823,  792,  761,  730,  699,  668, 637,  606,  575,  607,  638,  669, 700,
832   731,  762,  793,  824,  855,  886, 917,  948,  979,  1010, 1011, 980, 949,
833   918,  887,  856,  825,  794,  763, 732,  701,  670,  639,  671,  702, 733,
834   764,  795,  826,  857,  888,  919, 950,  981,  1012, 1013, 982,  951, 920,
835   889,  858,  827,  796,  765,  734, 703,  735,  766,  797,  828,  859, 890,
836   921,  952,  983,  1014, 1015, 984, 953,  922,  891,  860,  829,  798, 767,
837   799,  830,  861,  892,  923,  954, 985,  1016, 1017, 986,  955,  924, 893,
838   862,  831,  863,  894,  925,  956, 987,  1018, 1019, 988,  957,  926, 895,
839   927,  958,  989,  1020, 1021, 990, 959,  991,  1022, 1023
840 };
841 
842 // Neighborhood 2-tuples for various scans and blocksizes,
843 // in {top, left} order for each position in corresponding scan order.
844 DECLARE_ALIGNED(16, static const int16_t,
845                 default_scan_4x4_neighbors[17 * MAX_NEIGHBORS]) = {
846   0, 0, 0, 0, 0,  0, 4, 4, 1, 4, 1,  1,  2,  2,  2,  5, 5,
847   8, 8, 8, 9, 12, 6, 9, 3, 6, 7, 10, 10, 13, 11, 14, 0, 0
848 };
849 
850 DECLARE_ALIGNED(16, static const int16_t,
851                 mcol_scan_4x4_neighbors[17 * MAX_NEIGHBORS]) = {
852   0, 0, 0, 0, 4, 4,  8,  8, 0, 0, 1, 4, 5,  8,  9,  12, 1,
853   1, 2, 5, 6, 9, 10, 13, 2, 2, 3, 6, 7, 10, 11, 14, 0,  0,
854 };
855 
856 DECLARE_ALIGNED(16, static const int16_t,
857                 mrow_scan_4x4_neighbors[17 * MAX_NEIGHBORS]) = {
858   0, 0, 0, 0, 1, 1, 2,  2, 0, 0, 1,  4,  2,  5,  3,  6, 4,
859   4, 5, 8, 6, 9, 7, 10, 8, 8, 9, 12, 10, 13, 11, 14, 0, 0,
860 };
861 
862 DECLARE_ALIGNED(16, static const int16_t,
863                 default_scan_4x8_neighbors[33 * MAX_NEIGHBORS]) = {
864   0,  0,  0,  0,  0,  0,  1,  4,  1,  1,  4,  4,  2,  5,  5,  8,  6,
865   9,  2,  2,  8,  8,  3,  6,  9,  12, 7,  10, 10, 13, 12, 12, 13, 16,
866   11, 14, 14, 17, 15, 18, 16, 16, 17, 20, 18, 21, 19, 22, 20, 20, 21,
867   24, 22, 25, 23, 26, 24, 24, 25, 28, 26, 29, 27, 30, 0,  0
868 };
869 
870 DECLARE_ALIGNED(16, static const int16_t,
871                 mcol_scan_4x8_neighbors[33 * MAX_NEIGHBORS]) = {
872   0, 0, 0,  0,  4,  4,  8,  8,  12, 12, 16, 16, 20, 20, 24, 24, 0,
873   0, 1, 4,  5,  8,  9,  12, 13, 16, 17, 20, 21, 24, 25, 28, 1,  1,
874   2, 5, 6,  9,  10, 13, 14, 17, 18, 21, 22, 25, 26, 29, 2,  2,  3,
875   6, 7, 10, 11, 14, 15, 18, 19, 22, 23, 26, 27, 30, 0,  0
876 };
877 
878 DECLARE_ALIGNED(16, static const int16_t,
879                 mrow_scan_4x8_neighbors[33 * MAX_NEIGHBORS]) = {
880   0,  0,  0,  0,  1,  1,  2,  2,  0,  0,  1,  4,  2,  5,  3,  6,  4,
881   4,  5,  8,  6,  9,  7,  10, 8,  8,  9,  12, 10, 13, 11, 14, 12, 12,
882   13, 16, 14, 17, 15, 18, 16, 16, 17, 20, 18, 21, 19, 22, 20, 20, 21,
883   24, 22, 25, 23, 26, 24, 24, 25, 28, 26, 29, 27, 30, 0,  0
884 };
885 
886 DECLARE_ALIGNED(16, static const int16_t,
887                 default_scan_8x4_neighbors[33 * MAX_NEIGHBORS]) = {
888   0,  0,  0,  0,  0,  0, 1,  8,  1,  1,  8,  8,  2,  9,  9, 16, 10,
889   17, 2,  2,  16, 16, 3, 10, 17, 24, 11, 18, 18, 25, 3,  3, 4,  11,
890   19, 26, 12, 19, 4,  4, 20, 27, 5,  12, 13, 20, 21, 28, 5, 5,  6,
891   13, 14, 21, 22, 29, 6, 6,  7,  14, 15, 22, 23, 30, 0,  0
892 };
893 
894 DECLARE_ALIGNED(16, static const int16_t,
895                 mcol_scan_8x4_neighbors[33 * MAX_NEIGHBORS]) = {
896   0,  0,  0,  0,  8,  8,  16, 16, 0,  0,  1,  8,  9,  16, 17, 24, 1,
897   1,  2,  9,  10, 17, 18, 25, 2,  2,  3,  10, 11, 18, 19, 26, 3,  3,
898   4,  11, 12, 19, 20, 27, 4,  4,  5,  12, 13, 20, 21, 28, 5,  5,  6,
899   13, 14, 21, 22, 29, 6,  6,  7,  14, 15, 22, 23, 30, 0,  0
900 };
901 
902 DECLARE_ALIGNED(16, static const int16_t,
903                 mrow_scan_8x4_neighbors[33 * MAX_NEIGHBORS]) = {
904   0,  0,  0,  0,  1,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,  0,
905   0,  1,  8,  2,  9,  3,  10, 4,  11, 5,  12, 6,  13, 7,  14, 8,  8,
906   9,  16, 10, 17, 11, 18, 12, 19, 13, 20, 14, 21, 15, 22, 16, 16, 17,
907   24, 18, 25, 19, 26, 20, 27, 21, 28, 22, 29, 23, 30, 0,  0
908 };
909 
910 DECLARE_ALIGNED(16, static const int16_t,
911                 default_scan_4x16_neighbors[65 * MAX_NEIGHBORS]) = {
912   0,  0,  0,  0,  0,  0,  1,  4,  1,  1,  4,  4,  2,  5,  5,  8,  6,  9,  2,
913   2,  8,  8,  3,  6,  9,  12, 7,  10, 10, 13, 12, 12, 13, 16, 11, 14, 14, 17,
914   15, 18, 16, 16, 17, 20, 18, 21, 19, 22, 20, 20, 21, 24, 22, 25, 23, 26, 24,
915   24, 25, 28, 26, 29, 27, 30, 28, 28, 29, 32, 30, 33, 31, 34, 32, 32, 33, 36,
916   34, 37, 35, 38, 36, 36, 37, 40, 38, 41, 39, 42, 40, 40, 41, 44, 42, 45, 43,
917   46, 44, 44, 45, 48, 46, 49, 47, 50, 48, 48, 49, 52, 50, 53, 51, 54, 52, 52,
918   53, 56, 54, 57, 55, 58, 56, 56, 57, 60, 58, 61, 59, 62, 0,  0
919 };
920 
921 DECLARE_ALIGNED(16, static const int16_t,
922                 default_scan_16x4_neighbors[65 * MAX_NEIGHBORS]) = {
923   0,  0,  0,  0,  0,  0,  1,  16, 1,  1,  16, 16, 2,  17, 17, 32, 18, 33, 2,
924   2,  32, 32, 3,  18, 33, 48, 19, 34, 34, 49, 3,  3,  4,  19, 35, 50, 20, 35,
925   4,  4,  36, 51, 5,  20, 21, 36, 37, 52, 5,  5,  6,  21, 22, 37, 38, 53, 6,
926   6,  7,  22, 23, 38, 39, 54, 7,  7,  8,  23, 24, 39, 40, 55, 8,  8,  9,  24,
927   25, 40, 41, 56, 9,  9,  10, 25, 26, 41, 42, 57, 10, 10, 11, 26, 27, 42, 43,
928   58, 11, 11, 12, 27, 28, 43, 44, 59, 12, 12, 13, 28, 29, 44, 45, 60, 13, 13,
929   14, 29, 30, 45, 46, 61, 14, 14, 15, 30, 31, 46, 47, 62, 0,  0
930 };
931 
932 DECLARE_ALIGNED(16, static const int16_t,
933                 mrow_scan_4x16_neighbors[65 * MAX_NEIGHBORS]) = {
934   0,  0,  0,  0,  1,  1,  2,  2,  0,  0,  1,  4,  2,  5,  3,  6,  4,  4,  5,
935   8,  6,  9,  7,  10, 8,  8,  9,  12, 10, 13, 11, 14, 12, 12, 13, 16, 14, 17,
936   15, 18, 16, 16, 17, 20, 18, 21, 19, 22, 20, 20, 21, 24, 22, 25, 23, 26, 24,
937   24, 25, 28, 26, 29, 27, 30, 28, 28, 29, 32, 30, 33, 31, 34, 32, 32, 33, 36,
938   34, 37, 35, 38, 36, 36, 37, 40, 38, 41, 39, 42, 40, 40, 41, 44, 42, 45, 43,
939   46, 44, 44, 45, 48, 46, 49, 47, 50, 48, 48, 49, 52, 50, 53, 51, 54, 52, 52,
940   53, 56, 54, 57, 55, 58, 56, 56, 57, 60, 58, 61, 59, 62, 0,  0
941 };
942 
943 DECLARE_ALIGNED(16, static const int16_t,
944                 mrow_scan_16x4_neighbors[65 * MAX_NEIGHBORS]) = {
945   0,  0,  0,  0,  1,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,  7,  7,  8,
946   8,  9,  9,  10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 0,  0,  1,  16, 2,  17,
947   3,  18, 4,  19, 5,  20, 6,  21, 7,  22, 8,  23, 9,  24, 10, 25, 11, 26, 12,
948   27, 13, 28, 14, 29, 15, 30, 16, 16, 17, 32, 18, 33, 19, 34, 20, 35, 21, 36,
949   22, 37, 23, 38, 24, 39, 25, 40, 26, 41, 27, 42, 28, 43, 29, 44, 30, 45, 31,
950   46, 32, 32, 33, 48, 34, 49, 35, 50, 36, 51, 37, 52, 38, 53, 39, 54, 40, 55,
951   41, 56, 42, 57, 43, 58, 44, 59, 45, 60, 46, 61, 47, 62, 0,  0
952 };
953 
954 DECLARE_ALIGNED(16, static const int16_t,
955                 mcol_scan_4x16_neighbors[65 * MAX_NEIGHBORS]) = {
956   0,  0,  0,  0,  4,  4,  8,  8,  12, 12, 16, 16, 20, 20, 24, 24, 28, 28, 32,
957   32, 36, 36, 40, 40, 44, 44, 48, 48, 52, 52, 56, 56, 0,  0,  1,  4,  5,  8,
958   9,  12, 13, 16, 17, 20, 21, 24, 25, 28, 29, 32, 33, 36, 37, 40, 41, 44, 45,
959   48, 49, 52, 53, 56, 57, 60, 1,  1,  2,  5,  6,  9,  10, 13, 14, 17, 18, 21,
960   22, 25, 26, 29, 30, 33, 34, 37, 38, 41, 42, 45, 46, 49, 50, 53, 54, 57, 58,
961   61, 2,  2,  3,  6,  7,  10, 11, 14, 15, 18, 19, 22, 23, 26, 27, 30, 31, 34,
962   35, 38, 39, 42, 43, 46, 47, 50, 51, 54, 55, 58, 59, 62, 0,  0
963 };
964 
965 DECLARE_ALIGNED(16, static const int16_t,
966                 mcol_scan_16x4_neighbors[65 * MAX_NEIGHBORS]) = {
967   0,  0,  0,  0,  16, 16, 32, 32, 0,  0,  1,  16, 17, 32, 33, 48, 1,  1,  2,
968   17, 18, 33, 34, 49, 2,  2,  3,  18, 19, 34, 35, 50, 3,  3,  4,  19, 20, 35,
969   36, 51, 4,  4,  5,  20, 21, 36, 37, 52, 5,  5,  6,  21, 22, 37, 38, 53, 6,
970   6,  7,  22, 23, 38, 39, 54, 7,  7,  8,  23, 24, 39, 40, 55, 8,  8,  9,  24,
971   25, 40, 41, 56, 9,  9,  10, 25, 26, 41, 42, 57, 10, 10, 11, 26, 27, 42, 43,
972   58, 11, 11, 12, 27, 28, 43, 44, 59, 12, 12, 13, 28, 29, 44, 45, 60, 13, 13,
973   14, 29, 30, 45, 46, 61, 14, 14, 15, 30, 31, 46, 47, 62, 0,  0
974 };
975 
976 DECLARE_ALIGNED(16, static const int16_t,
977                 default_scan_8x32_neighbors[257 * MAX_NEIGHBORS]) = {
978   0,   0,   0,   0,   0,   0,   1,   1,   1,   8,   8,   8,   2,   2,   2,
979   9,   9,   16,  16,  16,  3,   3,   3,   10,  10,  17,  17,  24,  24,  24,
980   4,   4,   4,   11,  11,  18,  18,  25,  25,  32,  32,  32,  5,   5,   5,
981   12,  12,  19,  19,  26,  26,  33,  33,  40,  40,  40,  6,   6,   6,   13,
982   13,  20,  20,  27,  27,  34,  34,  41,  41,  48,  48,  48,  7,   14,  14,
983   21,  21,  28,  28,  35,  35,  42,  42,  49,  49,  56,  56,  56,  15,  22,
984   22,  29,  29,  36,  36,  43,  43,  50,  50,  57,  57,  64,  64,  64,  23,
985   30,  30,  37,  37,  44,  44,  51,  51,  58,  58,  65,  65,  72,  72,  72,
986   31,  38,  38,  45,  45,  52,  52,  59,  59,  66,  66,  73,  73,  80,  80,
987   80,  39,  46,  46,  53,  53,  60,  60,  67,  67,  74,  74,  81,  81,  88,
988   88,  88,  47,  54,  54,  61,  61,  68,  68,  75,  75,  82,  82,  89,  89,
989   96,  96,  96,  55,  62,  62,  69,  69,  76,  76,  83,  83,  90,  90,  97,
990   97,  104, 104, 104, 63,  70,  70,  77,  77,  84,  84,  91,  91,  98,  98,
991   105, 105, 112, 112, 112, 71,  78,  78,  85,  85,  92,  92,  99,  99,  106,
992   106, 113, 113, 120, 120, 120, 79,  86,  86,  93,  93,  100, 100, 107, 107,
993   114, 114, 121, 121, 128, 128, 128, 87,  94,  94,  101, 101, 108, 108, 115,
994   115, 122, 122, 129, 129, 136, 136, 136, 95,  102, 102, 109, 109, 116, 116,
995   123, 123, 130, 130, 137, 137, 144, 144, 144, 103, 110, 110, 117, 117, 124,
996   124, 131, 131, 138, 138, 145, 145, 152, 152, 152, 111, 118, 118, 125, 125,
997   132, 132, 139, 139, 146, 146, 153, 153, 160, 160, 160, 119, 126, 126, 133,
998   133, 140, 140, 147, 147, 154, 154, 161, 161, 168, 168, 168, 127, 134, 134,
999   141, 141, 148, 148, 155, 155, 162, 162, 169, 169, 176, 176, 176, 135, 142,
1000   142, 149, 149, 156, 156, 163, 163, 170, 170, 177, 177, 184, 184, 184, 143,
1001   150, 150, 157, 157, 164, 164, 171, 171, 178, 178, 185, 185, 192, 192, 192,
1002   151, 158, 158, 165, 165, 172, 172, 179, 179, 186, 186, 193, 193, 200, 200,
1003   200, 159, 166, 166, 173, 173, 180, 180, 187, 187, 194, 194, 201, 201, 208,
1004   208, 208, 167, 174, 174, 181, 181, 188, 188, 195, 195, 202, 202, 209, 209,
1005   216, 216, 216, 175, 182, 182, 189, 189, 196, 196, 203, 203, 210, 210, 217,
1006   217, 224, 224, 224, 183, 190, 190, 197, 197, 204, 204, 211, 211, 218, 218,
1007   225, 225, 232, 232, 232, 191, 198, 198, 205, 205, 212, 212, 219, 219, 226,
1008   226, 233, 233, 240, 240, 240, 199, 206, 206, 213, 213, 220, 220, 227, 227,
1009   234, 234, 241, 241, 248, 207, 214, 214, 221, 221, 228, 228, 235, 235, 242,
1010   242, 249, 215, 222, 222, 229, 229, 236, 236, 243, 243, 250, 223, 230, 230,
1011   237, 237, 244, 244, 251, 231, 238, 238, 245, 245, 252, 239, 246, 246, 253,
1012   247, 254, 0,   0
1013 };
1014 
1015 DECLARE_ALIGNED(16, static const int16_t,
1016                 default_scan_32x8_neighbors[257 * MAX_NEIGHBORS]) = {
1017   0,   0,   0,   0,   0,   0,   1,   1,   1,   32,  32,  32,  2,   2,   2,
1018   33,  33,  64,  64,  64,  3,   3,   3,   34,  34,  65,  65,  96,  96,  96,
1019   4,   4,   4,   35,  35,  66,  66,  97,  97,  128, 128, 128, 5,   5,   5,
1020   36,  36,  67,  67,  98,  98,  129, 129, 160, 160, 160, 6,   6,   6,   37,
1021   37,  68,  68,  99,  99,  130, 130, 161, 161, 192, 192, 192, 7,   7,   7,
1022   38,  38,  69,  69,  100, 100, 131, 131, 162, 162, 193, 193, 224, 8,   8,
1023   8,   39,  39,  70,  70,  101, 101, 132, 132, 163, 163, 194, 194, 225, 9,
1024   9,   9,   40,  40,  71,  71,  102, 102, 133, 133, 164, 164, 195, 195, 226,
1025   10,  10,  10,  41,  41,  72,  72,  103, 103, 134, 134, 165, 165, 196, 196,
1026   227, 11,  11,  11,  42,  42,  73,  73,  104, 104, 135, 135, 166, 166, 197,
1027   197, 228, 12,  12,  12,  43,  43,  74,  74,  105, 105, 136, 136, 167, 167,
1028   198, 198, 229, 13,  13,  13,  44,  44,  75,  75,  106, 106, 137, 137, 168,
1029   168, 199, 199, 230, 14,  14,  14,  45,  45,  76,  76,  107, 107, 138, 138,
1030   169, 169, 200, 200, 231, 15,  15,  15,  46,  46,  77,  77,  108, 108, 139,
1031   139, 170, 170, 201, 201, 232, 16,  16,  16,  47,  47,  78,  78,  109, 109,
1032   140, 140, 171, 171, 202, 202, 233, 17,  17,  17,  48,  48,  79,  79,  110,
1033   110, 141, 141, 172, 172, 203, 203, 234, 18,  18,  18,  49,  49,  80,  80,
1034   111, 111, 142, 142, 173, 173, 204, 204, 235, 19,  19,  19,  50,  50,  81,
1035   81,  112, 112, 143, 143, 174, 174, 205, 205, 236, 20,  20,  20,  51,  51,
1036   82,  82,  113, 113, 144, 144, 175, 175, 206, 206, 237, 21,  21,  21,  52,
1037   52,  83,  83,  114, 114, 145, 145, 176, 176, 207, 207, 238, 22,  22,  22,
1038   53,  53,  84,  84,  115, 115, 146, 146, 177, 177, 208, 208, 239, 23,  23,
1039   23,  54,  54,  85,  85,  116, 116, 147, 147, 178, 178, 209, 209, 240, 24,
1040   24,  24,  55,  55,  86,  86,  117, 117, 148, 148, 179, 179, 210, 210, 241,
1041   25,  25,  25,  56,  56,  87,  87,  118, 118, 149, 149, 180, 180, 211, 211,
1042   242, 26,  26,  26,  57,  57,  88,  88,  119, 119, 150, 150, 181, 181, 212,
1043   212, 243, 27,  27,  27,  58,  58,  89,  89,  120, 120, 151, 151, 182, 182,
1044   213, 213, 244, 28,  28,  28,  59,  59,  90,  90,  121, 121, 152, 152, 183,
1045   183, 214, 214, 245, 29,  29,  29,  60,  60,  91,  91,  122, 122, 153, 153,
1046   184, 184, 215, 215, 246, 30,  30,  30,  61,  61,  92,  92,  123, 123, 154,
1047   154, 185, 185, 216, 216, 247, 31,  62,  62,  93,  93,  124, 124, 155, 155,
1048   186, 186, 217, 217, 248, 63,  94,  94,  125, 125, 156, 156, 187, 187, 218,
1049   218, 249, 95,  126, 126, 157, 157, 188, 188, 219, 219, 250, 127, 158, 158,
1050   189, 189, 220, 220, 251, 159, 190, 190, 221, 221, 252, 191, 222, 222, 253,
1051   223, 254, 0,   0
1052 };
1053 
1054 DECLARE_ALIGNED(16, static const int16_t,
1055                 mrow_scan_8x32_neighbors[257 * MAX_NEIGHBORS]) = {
1056   0,   0,   0,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,
1057   6,   0,   0,   1,   8,   2,   9,   3,   10,  4,   11,  5,   12,  6,   13,
1058   7,   14,  8,   8,   9,   16,  10,  17,  11,  18,  12,  19,  13,  20,  14,
1059   21,  15,  22,  16,  16,  17,  24,  18,  25,  19,  26,  20,  27,  21,  28,
1060   22,  29,  23,  30,  24,  24,  25,  32,  26,  33,  27,  34,  28,  35,  29,
1061   36,  30,  37,  31,  38,  32,  32,  33,  40,  34,  41,  35,  42,  36,  43,
1062   37,  44,  38,  45,  39,  46,  40,  40,  41,  48,  42,  49,  43,  50,  44,
1063   51,  45,  52,  46,  53,  47,  54,  48,  48,  49,  56,  50,  57,  51,  58,
1064   52,  59,  53,  60,  54,  61,  55,  62,  56,  56,  57,  64,  58,  65,  59,
1065   66,  60,  67,  61,  68,  62,  69,  63,  70,  64,  64,  65,  72,  66,  73,
1066   67,  74,  68,  75,  69,  76,  70,  77,  71,  78,  72,  72,  73,  80,  74,
1067   81,  75,  82,  76,  83,  77,  84,  78,  85,  79,  86,  80,  80,  81,  88,
1068   82,  89,  83,  90,  84,  91,  85,  92,  86,  93,  87,  94,  88,  88,  89,
1069   96,  90,  97,  91,  98,  92,  99,  93,  100, 94,  101, 95,  102, 96,  96,
1070   97,  104, 98,  105, 99,  106, 100, 107, 101, 108, 102, 109, 103, 110, 104,
1071   104, 105, 112, 106, 113, 107, 114, 108, 115, 109, 116, 110, 117, 111, 118,
1072   112, 112, 113, 120, 114, 121, 115, 122, 116, 123, 117, 124, 118, 125, 119,
1073   126, 120, 120, 121, 128, 122, 129, 123, 130, 124, 131, 125, 132, 126, 133,
1074   127, 134, 128, 128, 129, 136, 130, 137, 131, 138, 132, 139, 133, 140, 134,
1075   141, 135, 142, 136, 136, 137, 144, 138, 145, 139, 146, 140, 147, 141, 148,
1076   142, 149, 143, 150, 144, 144, 145, 152, 146, 153, 147, 154, 148, 155, 149,
1077   156, 150, 157, 151, 158, 152, 152, 153, 160, 154, 161, 155, 162, 156, 163,
1078   157, 164, 158, 165, 159, 166, 160, 160, 161, 168, 162, 169, 163, 170, 164,
1079   171, 165, 172, 166, 173, 167, 174, 168, 168, 169, 176, 170, 177, 171, 178,
1080   172, 179, 173, 180, 174, 181, 175, 182, 176, 176, 177, 184, 178, 185, 179,
1081   186, 180, 187, 181, 188, 182, 189, 183, 190, 184, 184, 185, 192, 186, 193,
1082   187, 194, 188, 195, 189, 196, 190, 197, 191, 198, 192, 192, 193, 200, 194,
1083   201, 195, 202, 196, 203, 197, 204, 198, 205, 199, 206, 200, 200, 201, 208,
1084   202, 209, 203, 210, 204, 211, 205, 212, 206, 213, 207, 214, 208, 208, 209,
1085   216, 210, 217, 211, 218, 212, 219, 213, 220, 214, 221, 215, 222, 216, 216,
1086   217, 224, 218, 225, 219, 226, 220, 227, 221, 228, 222, 229, 223, 230, 224,
1087   224, 225, 232, 226, 233, 227, 234, 228, 235, 229, 236, 230, 237, 231, 238,
1088   232, 232, 233, 240, 234, 241, 235, 242, 236, 243, 237, 244, 238, 245, 239,
1089   246, 240, 240, 241, 248, 242, 249, 243, 250, 244, 251, 245, 252, 246, 253,
1090   247, 254, 0,   0
1091 };
1092 
1093 DECLARE_ALIGNED(16, static const int16_t,
1094                 mrow_scan_32x8_neighbors[257 * MAX_NEIGHBORS]) = {
1095   0,   0,   0,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,
1096   6,   7,   7,   8,   8,   9,   9,   10,  10,  11,  11,  12,  12,  13,  13,
1097   14,  14,  15,  15,  16,  16,  17,  17,  18,  18,  19,  19,  20,  20,  21,
1098   21,  22,  22,  23,  23,  24,  24,  25,  25,  26,  26,  27,  27,  28,  28,
1099   29,  29,  30,  30,  0,   0,   1,   32,  2,   33,  3,   34,  4,   35,  5,
1100   36,  6,   37,  7,   38,  8,   39,  9,   40,  10,  41,  11,  42,  12,  43,
1101   13,  44,  14,  45,  15,  46,  16,  47,  17,  48,  18,  49,  19,  50,  20,
1102   51,  21,  52,  22,  53,  23,  54,  24,  55,  25,  56,  26,  57,  27,  58,
1103   28,  59,  29,  60,  30,  61,  31,  62,  32,  32,  33,  64,  34,  65,  35,
1104   66,  36,  67,  37,  68,  38,  69,  39,  70,  40,  71,  41,  72,  42,  73,
1105   43,  74,  44,  75,  45,  76,  46,  77,  47,  78,  48,  79,  49,  80,  50,
1106   81,  51,  82,  52,  83,  53,  84,  54,  85,  55,  86,  56,  87,  57,  88,
1107   58,  89,  59,  90,  60,  91,  61,  92,  62,  93,  63,  94,  64,  64,  65,
1108   96,  66,  97,  67,  98,  68,  99,  69,  100, 70,  101, 71,  102, 72,  103,
1109   73,  104, 74,  105, 75,  106, 76,  107, 77,  108, 78,  109, 79,  110, 80,
1110   111, 81,  112, 82,  113, 83,  114, 84,  115, 85,  116, 86,  117, 87,  118,
1111   88,  119, 89,  120, 90,  121, 91,  122, 92,  123, 93,  124, 94,  125, 95,
1112   126, 96,  96,  97,  128, 98,  129, 99,  130, 100, 131, 101, 132, 102, 133,
1113   103, 134, 104, 135, 105, 136, 106, 137, 107, 138, 108, 139, 109, 140, 110,
1114   141, 111, 142, 112, 143, 113, 144, 114, 145, 115, 146, 116, 147, 117, 148,
1115   118, 149, 119, 150, 120, 151, 121, 152, 122, 153, 123, 154, 124, 155, 125,
1116   156, 126, 157, 127, 158, 128, 128, 129, 160, 130, 161, 131, 162, 132, 163,
1117   133, 164, 134, 165, 135, 166, 136, 167, 137, 168, 138, 169, 139, 170, 140,
1118   171, 141, 172, 142, 173, 143, 174, 144, 175, 145, 176, 146, 177, 147, 178,
1119   148, 179, 149, 180, 150, 181, 151, 182, 152, 183, 153, 184, 154, 185, 155,
1120   186, 156, 187, 157, 188, 158, 189, 159, 190, 160, 160, 161, 192, 162, 193,
1121   163, 194, 164, 195, 165, 196, 166, 197, 167, 198, 168, 199, 169, 200, 170,
1122   201, 171, 202, 172, 203, 173, 204, 174, 205, 175, 206, 176, 207, 177, 208,
1123   178, 209, 179, 210, 180, 211, 181, 212, 182, 213, 183, 214, 184, 215, 185,
1124   216, 186, 217, 187, 218, 188, 219, 189, 220, 190, 221, 191, 222, 192, 192,
1125   193, 224, 194, 225, 195, 226, 196, 227, 197, 228, 198, 229, 199, 230, 200,
1126   231, 201, 232, 202, 233, 203, 234, 204, 235, 205, 236, 206, 237, 207, 238,
1127   208, 239, 209, 240, 210, 241, 211, 242, 212, 243, 213, 244, 214, 245, 215,
1128   246, 216, 247, 217, 248, 218, 249, 219, 250, 220, 251, 221, 252, 222, 253,
1129   223, 254, 0,   0
1130 };
1131 
1132 DECLARE_ALIGNED(16, static const int16_t,
1133                 mcol_scan_8x32_neighbors[257 * MAX_NEIGHBORS]) = {
1134   0,   0,   0,   0,   8,   8,   16,  16,  24,  24,  32,  32,  40,  40,  48,
1135   48,  56,  56,  64,  64,  72,  72,  80,  80,  88,  88,  96,  96,  104, 104,
1136   112, 112, 120, 120, 128, 128, 136, 136, 144, 144, 152, 152, 160, 160, 168,
1137   168, 176, 176, 184, 184, 192, 192, 200, 200, 208, 208, 216, 216, 224, 224,
1138   232, 232, 240, 240, 0,   0,   1,   8,   9,   16,  17,  24,  25,  32,  33,
1139   40,  41,  48,  49,  56,  57,  64,  65,  72,  73,  80,  81,  88,  89,  96,
1140   97,  104, 105, 112, 113, 120, 121, 128, 129, 136, 137, 144, 145, 152, 153,
1141   160, 161, 168, 169, 176, 177, 184, 185, 192, 193, 200, 201, 208, 209, 216,
1142   217, 224, 225, 232, 233, 240, 241, 248, 1,   1,   2,   9,   10,  17,  18,
1143   25,  26,  33,  34,  41,  42,  49,  50,  57,  58,  65,  66,  73,  74,  81,
1144   82,  89,  90,  97,  98,  105, 106, 113, 114, 121, 122, 129, 130, 137, 138,
1145   145, 146, 153, 154, 161, 162, 169, 170, 177, 178, 185, 186, 193, 194, 201,
1146   202, 209, 210, 217, 218, 225, 226, 233, 234, 241, 242, 249, 2,   2,   3,
1147   10,  11,  18,  19,  26,  27,  34,  35,  42,  43,  50,  51,  58,  59,  66,
1148   67,  74,  75,  82,  83,  90,  91,  98,  99,  106, 107, 114, 115, 122, 123,
1149   130, 131, 138, 139, 146, 147, 154, 155, 162, 163, 170, 171, 178, 179, 186,
1150   187, 194, 195, 202, 203, 210, 211, 218, 219, 226, 227, 234, 235, 242, 243,
1151   250, 3,   3,   4,   11,  12,  19,  20,  27,  28,  35,  36,  43,  44,  51,
1152   52,  59,  60,  67,  68,  75,  76,  83,  84,  91,  92,  99,  100, 107, 108,
1153   115, 116, 123, 124, 131, 132, 139, 140, 147, 148, 155, 156, 163, 164, 171,
1154   172, 179, 180, 187, 188, 195, 196, 203, 204, 211, 212, 219, 220, 227, 228,
1155   235, 236, 243, 244, 251, 4,   4,   5,   12,  13,  20,  21,  28,  29,  36,
1156   37,  44,  45,  52,  53,  60,  61,  68,  69,  76,  77,  84,  85,  92,  93,
1157   100, 101, 108, 109, 116, 117, 124, 125, 132, 133, 140, 141, 148, 149, 156,
1158   157, 164, 165, 172, 173, 180, 181, 188, 189, 196, 197, 204, 205, 212, 213,
1159   220, 221, 228, 229, 236, 237, 244, 245, 252, 5,   5,   6,   13,  14,  21,
1160   22,  29,  30,  37,  38,  45,  46,  53,  54,  61,  62,  69,  70,  77,  78,
1161   85,  86,  93,  94,  101, 102, 109, 110, 117, 118, 125, 126, 133, 134, 141,
1162   142, 149, 150, 157, 158, 165, 166, 173, 174, 181, 182, 189, 190, 197, 198,
1163   205, 206, 213, 214, 221, 222, 229, 230, 237, 238, 245, 246, 253, 6,   6,
1164   7,   14,  15,  22,  23,  30,  31,  38,  39,  46,  47,  54,  55,  62,  63,
1165   70,  71,  78,  79,  86,  87,  94,  95,  102, 103, 110, 111, 118, 119, 126,
1166   127, 134, 135, 142, 143, 150, 151, 158, 159, 166, 167, 174, 175, 182, 183,
1167   190, 191, 198, 199, 206, 207, 214, 215, 222, 223, 230, 231, 238, 239, 246,
1168   247, 254, 0,   0
1169 };
1170 
1171 DECLARE_ALIGNED(16, static const int16_t,
1172                 mcol_scan_32x8_neighbors[257 * MAX_NEIGHBORS]) = {
1173   0,  0,  0,  0,  32, 32, 64, 64,  96,  96,  128, 128, 160, 160, 192, 192,
1174   0,  0,  1,  32, 33, 64, 65, 96,  97,  128, 129, 160, 161, 192, 193, 224,
1175   1,  1,  2,  33, 34, 65, 66, 97,  98,  129, 130, 161, 162, 193, 194, 225,
1176   2,  2,  3,  34, 35, 66, 67, 98,  99,  130, 131, 162, 163, 194, 195, 226,
1177   3,  3,  4,  35, 36, 67, 68, 99,  100, 131, 132, 163, 164, 195, 196, 227,
1178   4,  4,  5,  36, 37, 68, 69, 100, 101, 132, 133, 164, 165, 196, 197, 228,
1179   5,  5,  6,  37, 38, 69, 70, 101, 102, 133, 134, 165, 166, 197, 198, 229,
1180   6,  6,  7,  38, 39, 70, 71, 102, 103, 134, 135, 166, 167, 198, 199, 230,
1181   7,  7,  8,  39, 40, 71, 72, 103, 104, 135, 136, 167, 168, 199, 200, 231,
1182   8,  8,  9,  40, 41, 72, 73, 104, 105, 136, 137, 168, 169, 200, 201, 232,
1183   9,  9,  10, 41, 42, 73, 74, 105, 106, 137, 138, 169, 170, 201, 202, 233,
1184   10, 10, 11, 42, 43, 74, 75, 106, 107, 138, 139, 170, 171, 202, 203, 234,
1185   11, 11, 12, 43, 44, 75, 76, 107, 108, 139, 140, 171, 172, 203, 204, 235,
1186   12, 12, 13, 44, 45, 76, 77, 108, 109, 140, 141, 172, 173, 204, 205, 236,
1187   13, 13, 14, 45, 46, 77, 78, 109, 110, 141, 142, 173, 174, 205, 206, 237,
1188   14, 14, 15, 46, 47, 78, 79, 110, 111, 142, 143, 174, 175, 206, 207, 238,
1189   15, 15, 16, 47, 48, 79, 80, 111, 112, 143, 144, 175, 176, 207, 208, 239,
1190   16, 16, 17, 48, 49, 80, 81, 112, 113, 144, 145, 176, 177, 208, 209, 240,
1191   17, 17, 18, 49, 50, 81, 82, 113, 114, 145, 146, 177, 178, 209, 210, 241,
1192   18, 18, 19, 50, 51, 82, 83, 114, 115, 146, 147, 178, 179, 210, 211, 242,
1193   19, 19, 20, 51, 52, 83, 84, 115, 116, 147, 148, 179, 180, 211, 212, 243,
1194   20, 20, 21, 52, 53, 84, 85, 116, 117, 148, 149, 180, 181, 212, 213, 244,
1195   21, 21, 22, 53, 54, 85, 86, 117, 118, 149, 150, 181, 182, 213, 214, 245,
1196   22, 22, 23, 54, 55, 86, 87, 118, 119, 150, 151, 182, 183, 214, 215, 246,
1197   23, 23, 24, 55, 56, 87, 88, 119, 120, 151, 152, 183, 184, 215, 216, 247,
1198   24, 24, 25, 56, 57, 88, 89, 120, 121, 152, 153, 184, 185, 216, 217, 248,
1199   25, 25, 26, 57, 58, 89, 90, 121, 122, 153, 154, 185, 186, 217, 218, 249,
1200   26, 26, 27, 58, 59, 90, 91, 122, 123, 154, 155, 186, 187, 218, 219, 250,
1201   27, 27, 28, 59, 60, 91, 92, 123, 124, 155, 156, 187, 188, 219, 220, 251,
1202   28, 28, 29, 60, 61, 92, 93, 124, 125, 156, 157, 188, 189, 220, 221, 252,
1203   29, 29, 30, 61, 62, 93, 94, 125, 126, 157, 158, 189, 190, 221, 222, 253,
1204   30, 30, 31, 62, 63, 94, 95, 126, 127, 158, 159, 190, 191, 222, 223, 254,
1205   0,  0
1206 };
1207 
1208 DECLARE_ALIGNED(16, static const int16_t,
1209                 mcol_scan_8x8_neighbors[65 * MAX_NEIGHBORS]) = {
1210   0,  0,  0,  0,  8,  8,  16, 16, 24, 24, 32, 32, 40, 40, 48, 48, 0,  0,  1,
1211   8,  9,  16, 17, 24, 25, 32, 33, 40, 41, 48, 49, 56, 1,  1,  2,  9,  10, 17,
1212   18, 25, 26, 33, 34, 41, 42, 49, 50, 57, 2,  2,  3,  10, 11, 18, 19, 26, 27,
1213   34, 35, 42, 43, 50, 51, 58, 3,  3,  4,  11, 12, 19, 20, 27, 28, 35, 36, 43,
1214   44, 51, 52, 59, 4,  4,  5,  12, 13, 20, 21, 28, 29, 36, 37, 44, 45, 52, 53,
1215   60, 5,  5,  6,  13, 14, 21, 22, 29, 30, 37, 38, 45, 46, 53, 54, 61, 6,  6,
1216   7,  14, 15, 22, 23, 30, 31, 38, 39, 46, 47, 54, 55, 62, 0,  0,
1217 };
1218 
1219 DECLARE_ALIGNED(16, static const int16_t,
1220                 mrow_scan_8x8_neighbors[65 * MAX_NEIGHBORS]) = {
1221   0,  0,  0,  0,  1,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,  0,  0,  1,
1222   8,  2,  9,  3,  10, 4,  11, 5,  12, 6,  13, 7,  14, 8,  8,  9,  16, 10, 17,
1223   11, 18, 12, 19, 13, 20, 14, 21, 15, 22, 16, 16, 17, 24, 18, 25, 19, 26, 20,
1224   27, 21, 28, 22, 29, 23, 30, 24, 24, 25, 32, 26, 33, 27, 34, 28, 35, 29, 36,
1225   30, 37, 31, 38, 32, 32, 33, 40, 34, 41, 35, 42, 36, 43, 37, 44, 38, 45, 39,
1226   46, 40, 40, 41, 48, 42, 49, 43, 50, 44, 51, 45, 52, 46, 53, 47, 54, 48, 48,
1227   49, 56, 50, 57, 51, 58, 52, 59, 53, 60, 54, 61, 55, 62, 0,  0,
1228 };
1229 
1230 DECLARE_ALIGNED(16, static const int16_t,
1231                 default_scan_8x8_neighbors[65 * MAX_NEIGHBORS]) = {
1232   0,  0,  0,  0,  0,  0,  8,  8,  1,  8,  1,  1,  2,  2,  2,  9,  9,  16, 16,
1233   16, 24, 24, 17, 24, 10, 17, 3,  10, 3,  3,  4,  4,  4,  11, 11, 18, 18, 25,
1234   25, 32, 32, 32, 40, 40, 33, 40, 26, 33, 19, 26, 12, 19, 5,  12, 5,  5,  6,
1235   6,  6,  13, 13, 20, 20, 27, 27, 34, 34, 41, 41, 48, 48, 48, 49, 56, 42, 49,
1236   35, 42, 28, 35, 21, 28, 14, 21, 7,  14, 15, 22, 22, 29, 29, 36, 36, 43, 43,
1237   50, 50, 57, 51, 58, 44, 51, 37, 44, 30, 37, 23, 30, 31, 38, 38, 45, 45, 52,
1238   52, 59, 53, 60, 46, 53, 39, 46, 47, 54, 54, 61, 55, 62, 0,  0
1239 };
1240 
1241 DECLARE_ALIGNED(16, static const int16_t,
1242                 default_scan_8x16_neighbors[129 * MAX_NEIGHBORS]) = {
1243   0,   0,   0,   0,   0,   0,   1,   1,   1,   8,   8,   8,   2,   2,   2,
1244   9,   9,   16,  16,  16,  3,   3,   3,   10,  10,  17,  17,  24,  24,  24,
1245   4,   4,   4,   11,  11,  18,  18,  25,  25,  32,  32,  32,  5,   5,   5,
1246   12,  12,  19,  19,  26,  26,  33,  33,  40,  40,  40,  6,   6,   6,   13,
1247   13,  20,  20,  27,  27,  34,  34,  41,  41,  48,  48,  48,  7,   14,  14,
1248   21,  21,  28,  28,  35,  35,  42,  42,  49,  49,  56,  56,  56,  15,  22,
1249   22,  29,  29,  36,  36,  43,  43,  50,  50,  57,  57,  64,  64,  64,  23,
1250   30,  30,  37,  37,  44,  44,  51,  51,  58,  58,  65,  65,  72,  72,  72,
1251   31,  38,  38,  45,  45,  52,  52,  59,  59,  66,  66,  73,  73,  80,  80,
1252   80,  39,  46,  46,  53,  53,  60,  60,  67,  67,  74,  74,  81,  81,  88,
1253   88,  88,  47,  54,  54,  61,  61,  68,  68,  75,  75,  82,  82,  89,  89,
1254   96,  96,  96,  55,  62,  62,  69,  69,  76,  76,  83,  83,  90,  90,  97,
1255   97,  104, 104, 104, 63,  70,  70,  77,  77,  84,  84,  91,  91,  98,  98,
1256   105, 105, 112, 112, 112, 71,  78,  78,  85,  85,  92,  92,  99,  99,  106,
1257   106, 113, 113, 120, 79,  86,  86,  93,  93,  100, 100, 107, 107, 114, 114,
1258   121, 87,  94,  94,  101, 101, 108, 108, 115, 115, 122, 95,  102, 102, 109,
1259   109, 116, 116, 123, 103, 110, 110, 117, 117, 124, 111, 118, 118, 125, 119,
1260   126, 0,   0
1261 };
1262 
1263 DECLARE_ALIGNED(16, static const int16_t,
1264                 default_scan_16x8_neighbors[129 * MAX_NEIGHBORS]) = {
1265   0,   0,   0,   0,   0,   0,  1,  1,   1,   16,  16,  16,  2,   2,   2,
1266   17,  17,  32,  32,  32,  3,  3,  3,   18,  18,  33,  33,  48,  48,  48,
1267   4,   4,   4,   19,  19,  34, 34, 49,  49,  64,  64,  64,  5,   5,   5,
1268   20,  20,  35,  35,  50,  50, 65, 65,  80,  80,  80,  6,   6,   6,   21,
1269   21,  36,  36,  51,  51,  66, 66, 81,  81,  96,  96,  96,  7,   7,   7,
1270   22,  22,  37,  37,  52,  52, 67, 67,  82,  82,  97,  97,  112, 8,   8,
1271   8,   23,  23,  38,  38,  53, 53, 68,  68,  83,  83,  98,  98,  113, 9,
1272   9,   9,   24,  24,  39,  39, 54, 54,  69,  69,  84,  84,  99,  99,  114,
1273   10,  10,  10,  25,  25,  40, 40, 55,  55,  70,  70,  85,  85,  100, 100,
1274   115, 11,  11,  11,  26,  26, 41, 41,  56,  56,  71,  71,  86,  86,  101,
1275   101, 116, 12,  12,  12,  27, 27, 42,  42,  57,  57,  72,  72,  87,  87,
1276   102, 102, 117, 13,  13,  13, 28, 28,  43,  43,  58,  58,  73,  73,  88,
1277   88,  103, 103, 118, 14,  14, 14, 29,  29,  44,  44,  59,  59,  74,  74,
1278   89,  89,  104, 104, 119, 15, 30, 30,  45,  45,  60,  60,  75,  75,  90,
1279   90,  105, 105, 120, 31,  46, 46, 61,  61,  76,  76,  91,  91,  106, 106,
1280   121, 47,  62,  62,  77,  77, 92, 92,  107, 107, 122, 63,  78,  78,  93,
1281   93,  108, 108, 123, 79,  94, 94, 109, 109, 124, 95,  110, 110, 125, 111,
1282   126, 0,   0
1283 };
1284 
1285 DECLARE_ALIGNED(16, static const int16_t,
1286                 mcol_scan_8x16_neighbors[129 * MAX_NEIGHBORS]) = {
1287   0,  0,  0,  0,  8,  8,  16, 16, 24, 24,  32,  32,  40,  40,  48,  48,
1288   56, 56, 64, 64, 72, 72, 80, 80, 88, 88,  96,  96,  104, 104, 112, 112,
1289   0,  0,  1,  8,  9,  16, 17, 24, 25, 32,  33,  40,  41,  48,  49,  56,
1290   57, 64, 65, 72, 73, 80, 81, 88, 89, 96,  97,  104, 105, 112, 113, 120,
1291   1,  1,  2,  9,  10, 17, 18, 25, 26, 33,  34,  41,  42,  49,  50,  57,
1292   58, 65, 66, 73, 74, 81, 82, 89, 90, 97,  98,  105, 106, 113, 114, 121,
1293   2,  2,  3,  10, 11, 18, 19, 26, 27, 34,  35,  42,  43,  50,  51,  58,
1294   59, 66, 67, 74, 75, 82, 83, 90, 91, 98,  99,  106, 107, 114, 115, 122,
1295   3,  3,  4,  11, 12, 19, 20, 27, 28, 35,  36,  43,  44,  51,  52,  59,
1296   60, 67, 68, 75, 76, 83, 84, 91, 92, 99,  100, 107, 108, 115, 116, 123,
1297   4,  4,  5,  12, 13, 20, 21, 28, 29, 36,  37,  44,  45,  52,  53,  60,
1298   61, 68, 69, 76, 77, 84, 85, 92, 93, 100, 101, 108, 109, 116, 117, 124,
1299   5,  5,  6,  13, 14, 21, 22, 29, 30, 37,  38,  45,  46,  53,  54,  61,
1300   62, 69, 70, 77, 78, 85, 86, 93, 94, 101, 102, 109, 110, 117, 118, 125,
1301   6,  6,  7,  14, 15, 22, 23, 30, 31, 38,  39,  46,  47,  54,  55,  62,
1302   63, 70, 71, 78, 79, 86, 87, 94, 95, 102, 103, 110, 111, 118, 119, 126,
1303   0,  0
1304 };
1305 
1306 DECLARE_ALIGNED(16, static const int16_t,
1307                 mcol_scan_16x8_neighbors[129 * MAX_NEIGHBORS]) = {
1308   0,  0,  0,  0,  16, 16, 32, 32, 48, 48, 64, 64, 80, 80,  96,  96,
1309   0,  0,  1,  16, 17, 32, 33, 48, 49, 64, 65, 80, 81, 96,  97,  112,
1310   1,  1,  2,  17, 18, 33, 34, 49, 50, 65, 66, 81, 82, 97,  98,  113,
1311   2,  2,  3,  18, 19, 34, 35, 50, 51, 66, 67, 82, 83, 98,  99,  114,
1312   3,  3,  4,  19, 20, 35, 36, 51, 52, 67, 68, 83, 84, 99,  100, 115,
1313   4,  4,  5,  20, 21, 36, 37, 52, 53, 68, 69, 84, 85, 100, 101, 116,
1314   5,  5,  6,  21, 22, 37, 38, 53, 54, 69, 70, 85, 86, 101, 102, 117,
1315   6,  6,  7,  22, 23, 38, 39, 54, 55, 70, 71, 86, 87, 102, 103, 118,
1316   7,  7,  8,  23, 24, 39, 40, 55, 56, 71, 72, 87, 88, 103, 104, 119,
1317   8,  8,  9,  24, 25, 40, 41, 56, 57, 72, 73, 88, 89, 104, 105, 120,
1318   9,  9,  10, 25, 26, 41, 42, 57, 58, 73, 74, 89, 90, 105, 106, 121,
1319   10, 10, 11, 26, 27, 42, 43, 58, 59, 74, 75, 90, 91, 106, 107, 122,
1320   11, 11, 12, 27, 28, 43, 44, 59, 60, 75, 76, 91, 92, 107, 108, 123,
1321   12, 12, 13, 28, 29, 44, 45, 60, 61, 76, 77, 92, 93, 108, 109, 124,
1322   13, 13, 14, 29, 30, 45, 46, 61, 62, 77, 78, 93, 94, 109, 110, 125,
1323   14, 14, 15, 30, 31, 46, 47, 62, 63, 78, 79, 94, 95, 110, 111, 126,
1324   0,  0
1325 };
1326 
1327 DECLARE_ALIGNED(16, static const int16_t,
1328                 mrow_scan_8x16_neighbors[129 * MAX_NEIGHBORS]) = {
1329   0,   0,   0,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,
1330   6,   0,   0,   1,   8,   2,   9,   3,   10,  4,   11,  5,   12,  6,   13,
1331   7,   14,  8,   8,   9,   16,  10,  17,  11,  18,  12,  19,  13,  20,  14,
1332   21,  15,  22,  16,  16,  17,  24,  18,  25,  19,  26,  20,  27,  21,  28,
1333   22,  29,  23,  30,  24,  24,  25,  32,  26,  33,  27,  34,  28,  35,  29,
1334   36,  30,  37,  31,  38,  32,  32,  33,  40,  34,  41,  35,  42,  36,  43,
1335   37,  44,  38,  45,  39,  46,  40,  40,  41,  48,  42,  49,  43,  50,  44,
1336   51,  45,  52,  46,  53,  47,  54,  48,  48,  49,  56,  50,  57,  51,  58,
1337   52,  59,  53,  60,  54,  61,  55,  62,  56,  56,  57,  64,  58,  65,  59,
1338   66,  60,  67,  61,  68,  62,  69,  63,  70,  64,  64,  65,  72,  66,  73,
1339   67,  74,  68,  75,  69,  76,  70,  77,  71,  78,  72,  72,  73,  80,  74,
1340   81,  75,  82,  76,  83,  77,  84,  78,  85,  79,  86,  80,  80,  81,  88,
1341   82,  89,  83,  90,  84,  91,  85,  92,  86,  93,  87,  94,  88,  88,  89,
1342   96,  90,  97,  91,  98,  92,  99,  93,  100, 94,  101, 95,  102, 96,  96,
1343   97,  104, 98,  105, 99,  106, 100, 107, 101, 108, 102, 109, 103, 110, 104,
1344   104, 105, 112, 106, 113, 107, 114, 108, 115, 109, 116, 110, 117, 111, 118,
1345   112, 112, 113, 120, 114, 121, 115, 122, 116, 123, 117, 124, 118, 125, 119,
1346   126, 0,   0
1347 };
1348 
1349 DECLARE_ALIGNED(16, static const int16_t,
1350                 mrow_scan_16x8_neighbors[129 * MAX_NEIGHBORS]) = {
1351   0,   0,   0,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,
1352   6,   7,   7,   8,   8,   9,   9,   10,  10,  11,  11,  12,  12,  13,  13,
1353   14,  14,  0,   0,   1,   16,  2,   17,  3,   18,  4,   19,  5,   20,  6,
1354   21,  7,   22,  8,   23,  9,   24,  10,  25,  11,  26,  12,  27,  13,  28,
1355   14,  29,  15,  30,  16,  16,  17,  32,  18,  33,  19,  34,  20,  35,  21,
1356   36,  22,  37,  23,  38,  24,  39,  25,  40,  26,  41,  27,  42,  28,  43,
1357   29,  44,  30,  45,  31,  46,  32,  32,  33,  48,  34,  49,  35,  50,  36,
1358   51,  37,  52,  38,  53,  39,  54,  40,  55,  41,  56,  42,  57,  43,  58,
1359   44,  59,  45,  60,  46,  61,  47,  62,  48,  48,  49,  64,  50,  65,  51,
1360   66,  52,  67,  53,  68,  54,  69,  55,  70,  56,  71,  57,  72,  58,  73,
1361   59,  74,  60,  75,  61,  76,  62,  77,  63,  78,  64,  64,  65,  80,  66,
1362   81,  67,  82,  68,  83,  69,  84,  70,  85,  71,  86,  72,  87,  73,  88,
1363   74,  89,  75,  90,  76,  91,  77,  92,  78,  93,  79,  94,  80,  80,  81,
1364   96,  82,  97,  83,  98,  84,  99,  85,  100, 86,  101, 87,  102, 88,  103,
1365   89,  104, 90,  105, 91,  106, 92,  107, 93,  108, 94,  109, 95,  110, 96,
1366   96,  97,  112, 98,  113, 99,  114, 100, 115, 101, 116, 102, 117, 103, 118,
1367   104, 119, 105, 120, 106, 121, 107, 122, 108, 123, 109, 124, 110, 125, 111,
1368   126, 0,   0
1369 };
1370 
1371 DECLARE_ALIGNED(16, static const int16_t,
1372                 default_scan_16x32_neighbors[513 * MAX_NEIGHBORS]) = {
1373   0,   0,   0,   0,   0,   0,   1,   1,   1,   16,  16,  16,  2,   2,   2,
1374   17,  17,  32,  32,  32,  3,   3,   3,   18,  18,  33,  33,  48,  48,  48,
1375   4,   4,   4,   19,  19,  34,  34,  49,  49,  64,  64,  64,  5,   5,   5,
1376   20,  20,  35,  35,  50,  50,  65,  65,  80,  80,  80,  6,   6,   6,   21,
1377   21,  36,  36,  51,  51,  66,  66,  81,  81,  96,  96,  96,  7,   7,   7,
1378   22,  22,  37,  37,  52,  52,  67,  67,  82,  82,  97,  97,  112, 112, 112,
1379   8,   8,   8,   23,  23,  38,  38,  53,  53,  68,  68,  83,  83,  98,  98,
1380   113, 113, 128, 128, 128, 9,   9,   9,   24,  24,  39,  39,  54,  54,  69,
1381   69,  84,  84,  99,  99,  114, 114, 129, 129, 144, 144, 144, 10,  10,  10,
1382   25,  25,  40,  40,  55,  55,  70,  70,  85,  85,  100, 100, 115, 115, 130,
1383   130, 145, 145, 160, 160, 160, 11,  11,  11,  26,  26,  41,  41,  56,  56,
1384   71,  71,  86,  86,  101, 101, 116, 116, 131, 131, 146, 146, 161, 161, 176,
1385   176, 176, 12,  12,  12,  27,  27,  42,  42,  57,  57,  72,  72,  87,  87,
1386   102, 102, 117, 117, 132, 132, 147, 147, 162, 162, 177, 177, 192, 192, 192,
1387   13,  13,  13,  28,  28,  43,  43,  58,  58,  73,  73,  88,  88,  103, 103,
1388   118, 118, 133, 133, 148, 148, 163, 163, 178, 178, 193, 193, 208, 208, 208,
1389   14,  14,  14,  29,  29,  44,  44,  59,  59,  74,  74,  89,  89,  104, 104,
1390   119, 119, 134, 134, 149, 149, 164, 164, 179, 179, 194, 194, 209, 209, 224,
1391   224, 224, 15,  30,  30,  45,  45,  60,  60,  75,  75,  90,  90,  105, 105,
1392   120, 120, 135, 135, 150, 150, 165, 165, 180, 180, 195, 195, 210, 210, 225,
1393   225, 240, 240, 240, 31,  46,  46,  61,  61,  76,  76,  91,  91,  106, 106,
1394   121, 121, 136, 136, 151, 151, 166, 166, 181, 181, 196, 196, 211, 211, 226,
1395   226, 241, 241, 256, 256, 256, 47,  62,  62,  77,  77,  92,  92,  107, 107,
1396   122, 122, 137, 137, 152, 152, 167, 167, 182, 182, 197, 197, 212, 212, 227,
1397   227, 242, 242, 257, 257, 272, 272, 272, 63,  78,  78,  93,  93,  108, 108,
1398   123, 123, 138, 138, 153, 153, 168, 168, 183, 183, 198, 198, 213, 213, 228,
1399   228, 243, 243, 258, 258, 273, 273, 288, 288, 288, 79,  94,  94,  109, 109,
1400   124, 124, 139, 139, 154, 154, 169, 169, 184, 184, 199, 199, 214, 214, 229,
1401   229, 244, 244, 259, 259, 274, 274, 289, 289, 304, 304, 304, 95,  110, 110,
1402   125, 125, 140, 140, 155, 155, 170, 170, 185, 185, 200, 200, 215, 215, 230,
1403   230, 245, 245, 260, 260, 275, 275, 290, 290, 305, 305, 320, 320, 320, 111,
1404   126, 126, 141, 141, 156, 156, 171, 171, 186, 186, 201, 201, 216, 216, 231,
1405   231, 246, 246, 261, 261, 276, 276, 291, 291, 306, 306, 321, 321, 336, 336,
1406   336, 127, 142, 142, 157, 157, 172, 172, 187, 187, 202, 202, 217, 217, 232,
1407   232, 247, 247, 262, 262, 277, 277, 292, 292, 307, 307, 322, 322, 337, 337,
1408   352, 352, 352, 143, 158, 158, 173, 173, 188, 188, 203, 203, 218, 218, 233,
1409   233, 248, 248, 263, 263, 278, 278, 293, 293, 308, 308, 323, 323, 338, 338,
1410   353, 353, 368, 368, 368, 159, 174, 174, 189, 189, 204, 204, 219, 219, 234,
1411   234, 249, 249, 264, 264, 279, 279, 294, 294, 309, 309, 324, 324, 339, 339,
1412   354, 354, 369, 369, 384, 384, 384, 175, 190, 190, 205, 205, 220, 220, 235,
1413   235, 250, 250, 265, 265, 280, 280, 295, 295, 310, 310, 325, 325, 340, 340,
1414   355, 355, 370, 370, 385, 385, 400, 400, 400, 191, 206, 206, 221, 221, 236,
1415   236, 251, 251, 266, 266, 281, 281, 296, 296, 311, 311, 326, 326, 341, 341,
1416   356, 356, 371, 371, 386, 386, 401, 401, 416, 416, 416, 207, 222, 222, 237,
1417   237, 252, 252, 267, 267, 282, 282, 297, 297, 312, 312, 327, 327, 342, 342,
1418   357, 357, 372, 372, 387, 387, 402, 402, 417, 417, 432, 432, 432, 223, 238,
1419   238, 253, 253, 268, 268, 283, 283, 298, 298, 313, 313, 328, 328, 343, 343,
1420   358, 358, 373, 373, 388, 388, 403, 403, 418, 418, 433, 433, 448, 448, 448,
1421   239, 254, 254, 269, 269, 284, 284, 299, 299, 314, 314, 329, 329, 344, 344,
1422   359, 359, 374, 374, 389, 389, 404, 404, 419, 419, 434, 434, 449, 449, 464,
1423   464, 464, 255, 270, 270, 285, 285, 300, 300, 315, 315, 330, 330, 345, 345,
1424   360, 360, 375, 375, 390, 390, 405, 405, 420, 420, 435, 435, 450, 450, 465,
1425   465, 480, 480, 480, 271, 286, 286, 301, 301, 316, 316, 331, 331, 346, 346,
1426   361, 361, 376, 376, 391, 391, 406, 406, 421, 421, 436, 436, 451, 451, 466,
1427   466, 481, 481, 496, 287, 302, 302, 317, 317, 332, 332, 347, 347, 362, 362,
1428   377, 377, 392, 392, 407, 407, 422, 422, 437, 437, 452, 452, 467, 467, 482,
1429   482, 497, 303, 318, 318, 333, 333, 348, 348, 363, 363, 378, 378, 393, 393,
1430   408, 408, 423, 423, 438, 438, 453, 453, 468, 468, 483, 483, 498, 319, 334,
1431   334, 349, 349, 364, 364, 379, 379, 394, 394, 409, 409, 424, 424, 439, 439,
1432   454, 454, 469, 469, 484, 484, 499, 335, 350, 350, 365, 365, 380, 380, 395,
1433   395, 410, 410, 425, 425, 440, 440, 455, 455, 470, 470, 485, 485, 500, 351,
1434   366, 366, 381, 381, 396, 396, 411, 411, 426, 426, 441, 441, 456, 456, 471,
1435   471, 486, 486, 501, 367, 382, 382, 397, 397, 412, 412, 427, 427, 442, 442,
1436   457, 457, 472, 472, 487, 487, 502, 383, 398, 398, 413, 413, 428, 428, 443,
1437   443, 458, 458, 473, 473, 488, 488, 503, 399, 414, 414, 429, 429, 444, 444,
1438   459, 459, 474, 474, 489, 489, 504, 415, 430, 430, 445, 445, 460, 460, 475,
1439   475, 490, 490, 505, 431, 446, 446, 461, 461, 476, 476, 491, 491, 506, 447,
1440   462, 462, 477, 477, 492, 492, 507, 463, 478, 478, 493, 493, 508, 479, 494,
1441   494, 509, 495, 510, 0,   0
1442 };
1443 
1444 DECLARE_ALIGNED(16, static const int16_t,
1445                 default_scan_32x16_neighbors[513 * MAX_NEIGHBORS]) = {
1446   0,   0,   0,   0,   0,   0,   1,   1,   1,   32,  32,  32,  2,   2,   2,
1447   33,  33,  64,  64,  64,  3,   3,   3,   34,  34,  65,  65,  96,  96,  96,
1448   4,   4,   4,   35,  35,  66,  66,  97,  97,  128, 128, 128, 5,   5,   5,
1449   36,  36,  67,  67,  98,  98,  129, 129, 160, 160, 160, 6,   6,   6,   37,
1450   37,  68,  68,  99,  99,  130, 130, 161, 161, 192, 192, 192, 7,   7,   7,
1451   38,  38,  69,  69,  100, 100, 131, 131, 162, 162, 193, 193, 224, 224, 224,
1452   8,   8,   8,   39,  39,  70,  70,  101, 101, 132, 132, 163, 163, 194, 194,
1453   225, 225, 256, 256, 256, 9,   9,   9,   40,  40,  71,  71,  102, 102, 133,
1454   133, 164, 164, 195, 195, 226, 226, 257, 257, 288, 288, 288, 10,  10,  10,
1455   41,  41,  72,  72,  103, 103, 134, 134, 165, 165, 196, 196, 227, 227, 258,
1456   258, 289, 289, 320, 320, 320, 11,  11,  11,  42,  42,  73,  73,  104, 104,
1457   135, 135, 166, 166, 197, 197, 228, 228, 259, 259, 290, 290, 321, 321, 352,
1458   352, 352, 12,  12,  12,  43,  43,  74,  74,  105, 105, 136, 136, 167, 167,
1459   198, 198, 229, 229, 260, 260, 291, 291, 322, 322, 353, 353, 384, 384, 384,
1460   13,  13,  13,  44,  44,  75,  75,  106, 106, 137, 137, 168, 168, 199, 199,
1461   230, 230, 261, 261, 292, 292, 323, 323, 354, 354, 385, 385, 416, 416, 416,
1462   14,  14,  14,  45,  45,  76,  76,  107, 107, 138, 138, 169, 169, 200, 200,
1463   231, 231, 262, 262, 293, 293, 324, 324, 355, 355, 386, 386, 417, 417, 448,
1464   448, 448, 15,  15,  15,  46,  46,  77,  77,  108, 108, 139, 139, 170, 170,
1465   201, 201, 232, 232, 263, 263, 294, 294, 325, 325, 356, 356, 387, 387, 418,
1466   418, 449, 449, 480, 16,  16,  16,  47,  47,  78,  78,  109, 109, 140, 140,
1467   171, 171, 202, 202, 233, 233, 264, 264, 295, 295, 326, 326, 357, 357, 388,
1468   388, 419, 419, 450, 450, 481, 17,  17,  17,  48,  48,  79,  79,  110, 110,
1469   141, 141, 172, 172, 203, 203, 234, 234, 265, 265, 296, 296, 327, 327, 358,
1470   358, 389, 389, 420, 420, 451, 451, 482, 18,  18,  18,  49,  49,  80,  80,
1471   111, 111, 142, 142, 173, 173, 204, 204, 235, 235, 266, 266, 297, 297, 328,
1472   328, 359, 359, 390, 390, 421, 421, 452, 452, 483, 19,  19,  19,  50,  50,
1473   81,  81,  112, 112, 143, 143, 174, 174, 205, 205, 236, 236, 267, 267, 298,
1474   298, 329, 329, 360, 360, 391, 391, 422, 422, 453, 453, 484, 20,  20,  20,
1475   51,  51,  82,  82,  113, 113, 144, 144, 175, 175, 206, 206, 237, 237, 268,
1476   268, 299, 299, 330, 330, 361, 361, 392, 392, 423, 423, 454, 454, 485, 21,
1477   21,  21,  52,  52,  83,  83,  114, 114, 145, 145, 176, 176, 207, 207, 238,
1478   238, 269, 269, 300, 300, 331, 331, 362, 362, 393, 393, 424, 424, 455, 455,
1479   486, 22,  22,  22,  53,  53,  84,  84,  115, 115, 146, 146, 177, 177, 208,
1480   208, 239, 239, 270, 270, 301, 301, 332, 332, 363, 363, 394, 394, 425, 425,
1481   456, 456, 487, 23,  23,  23,  54,  54,  85,  85,  116, 116, 147, 147, 178,
1482   178, 209, 209, 240, 240, 271, 271, 302, 302, 333, 333, 364, 364, 395, 395,
1483   426, 426, 457, 457, 488, 24,  24,  24,  55,  55,  86,  86,  117, 117, 148,
1484   148, 179, 179, 210, 210, 241, 241, 272, 272, 303, 303, 334, 334, 365, 365,
1485   396, 396, 427, 427, 458, 458, 489, 25,  25,  25,  56,  56,  87,  87,  118,
1486   118, 149, 149, 180, 180, 211, 211, 242, 242, 273, 273, 304, 304, 335, 335,
1487   366, 366, 397, 397, 428, 428, 459, 459, 490, 26,  26,  26,  57,  57,  88,
1488   88,  119, 119, 150, 150, 181, 181, 212, 212, 243, 243, 274, 274, 305, 305,
1489   336, 336, 367, 367, 398, 398, 429, 429, 460, 460, 491, 27,  27,  27,  58,
1490   58,  89,  89,  120, 120, 151, 151, 182, 182, 213, 213, 244, 244, 275, 275,
1491   306, 306, 337, 337, 368, 368, 399, 399, 430, 430, 461, 461, 492, 28,  28,
1492   28,  59,  59,  90,  90,  121, 121, 152, 152, 183, 183, 214, 214, 245, 245,
1493   276, 276, 307, 307, 338, 338, 369, 369, 400, 400, 431, 431, 462, 462, 493,
1494   29,  29,  29,  60,  60,  91,  91,  122, 122, 153, 153, 184, 184, 215, 215,
1495   246, 246, 277, 277, 308, 308, 339, 339, 370, 370, 401, 401, 432, 432, 463,
1496   463, 494, 30,  30,  30,  61,  61,  92,  92,  123, 123, 154, 154, 185, 185,
1497   216, 216, 247, 247, 278, 278, 309, 309, 340, 340, 371, 371, 402, 402, 433,
1498   433, 464, 464, 495, 31,  62,  62,  93,  93,  124, 124, 155, 155, 186, 186,
1499   217, 217, 248, 248, 279, 279, 310, 310, 341, 341, 372, 372, 403, 403, 434,
1500   434, 465, 465, 496, 63,  94,  94,  125, 125, 156, 156, 187, 187, 218, 218,
1501   249, 249, 280, 280, 311, 311, 342, 342, 373, 373, 404, 404, 435, 435, 466,
1502   466, 497, 95,  126, 126, 157, 157, 188, 188, 219, 219, 250, 250, 281, 281,
1503   312, 312, 343, 343, 374, 374, 405, 405, 436, 436, 467, 467, 498, 127, 158,
1504   158, 189, 189, 220, 220, 251, 251, 282, 282, 313, 313, 344, 344, 375, 375,
1505   406, 406, 437, 437, 468, 468, 499, 159, 190, 190, 221, 221, 252, 252, 283,
1506   283, 314, 314, 345, 345, 376, 376, 407, 407, 438, 438, 469, 469, 500, 191,
1507   222, 222, 253, 253, 284, 284, 315, 315, 346, 346, 377, 377, 408, 408, 439,
1508   439, 470, 470, 501, 223, 254, 254, 285, 285, 316, 316, 347, 347, 378, 378,
1509   409, 409, 440, 440, 471, 471, 502, 255, 286, 286, 317, 317, 348, 348, 379,
1510   379, 410, 410, 441, 441, 472, 472, 503, 287, 318, 318, 349, 349, 380, 380,
1511   411, 411, 442, 442, 473, 473, 504, 319, 350, 350, 381, 381, 412, 412, 443,
1512   443, 474, 474, 505, 351, 382, 382, 413, 413, 444, 444, 475, 475, 506, 383,
1513   414, 414, 445, 445, 476, 476, 507, 415, 446, 446, 477, 477, 508, 447, 478,
1514   478, 509, 479, 510, 0,   0
1515 };
1516 
1517 DECLARE_ALIGNED(16, static const int16_t,
1518                 mcol_scan_16x32_neighbors[513 * MAX_NEIGHBORS]) = {
1519   0,   0,   0,   0,   16,  16,  32,  32,  48,  48,  64,  64,  80,  80,  96,
1520   96,  112, 112, 128, 128, 144, 144, 160, 160, 176, 176, 192, 192, 208, 208,
1521   224, 224, 240, 240, 256, 256, 272, 272, 288, 288, 304, 304, 320, 320, 336,
1522   336, 352, 352, 368, 368, 384, 384, 400, 400, 416, 416, 432, 432, 448, 448,
1523   464, 464, 480, 480, 0,   0,   1,   16,  17,  32,  33,  48,  49,  64,  65,
1524   80,  81,  96,  97,  112, 113, 128, 129, 144, 145, 160, 161, 176, 177, 192,
1525   193, 208, 209, 224, 225, 240, 241, 256, 257, 272, 273, 288, 289, 304, 305,
1526   320, 321, 336, 337, 352, 353, 368, 369, 384, 385, 400, 401, 416, 417, 432,
1527   433, 448, 449, 464, 465, 480, 481, 496, 1,   1,   2,   17,  18,  33,  34,
1528   49,  50,  65,  66,  81,  82,  97,  98,  113, 114, 129, 130, 145, 146, 161,
1529   162, 177, 178, 193, 194, 209, 210, 225, 226, 241, 242, 257, 258, 273, 274,
1530   289, 290, 305, 306, 321, 322, 337, 338, 353, 354, 369, 370, 385, 386, 401,
1531   402, 417, 418, 433, 434, 449, 450, 465, 466, 481, 482, 497, 2,   2,   3,
1532   18,  19,  34,  35,  50,  51,  66,  67,  82,  83,  98,  99,  114, 115, 130,
1533   131, 146, 147, 162, 163, 178, 179, 194, 195, 210, 211, 226, 227, 242, 243,
1534   258, 259, 274, 275, 290, 291, 306, 307, 322, 323, 338, 339, 354, 355, 370,
1535   371, 386, 387, 402, 403, 418, 419, 434, 435, 450, 451, 466, 467, 482, 483,
1536   498, 3,   3,   4,   19,  20,  35,  36,  51,  52,  67,  68,  83,  84,  99,
1537   100, 115, 116, 131, 132, 147, 148, 163, 164, 179, 180, 195, 196, 211, 212,
1538   227, 228, 243, 244, 259, 260, 275, 276, 291, 292, 307, 308, 323, 324, 339,
1539   340, 355, 356, 371, 372, 387, 388, 403, 404, 419, 420, 435, 436, 451, 452,
1540   467, 468, 483, 484, 499, 4,   4,   5,   20,  21,  36,  37,  52,  53,  68,
1541   69,  84,  85,  100, 101, 116, 117, 132, 133, 148, 149, 164, 165, 180, 181,
1542   196, 197, 212, 213, 228, 229, 244, 245, 260, 261, 276, 277, 292, 293, 308,
1543   309, 324, 325, 340, 341, 356, 357, 372, 373, 388, 389, 404, 405, 420, 421,
1544   436, 437, 452, 453, 468, 469, 484, 485, 500, 5,   5,   6,   21,  22,  37,
1545   38,  53,  54,  69,  70,  85,  86,  101, 102, 117, 118, 133, 134, 149, 150,
1546   165, 166, 181, 182, 197, 198, 213, 214, 229, 230, 245, 246, 261, 262, 277,
1547   278, 293, 294, 309, 310, 325, 326, 341, 342, 357, 358, 373, 374, 389, 390,
1548   405, 406, 421, 422, 437, 438, 453, 454, 469, 470, 485, 486, 501, 6,   6,
1549   7,   22,  23,  38,  39,  54,  55,  70,  71,  86,  87,  102, 103, 118, 119,
1550   134, 135, 150, 151, 166, 167, 182, 183, 198, 199, 214, 215, 230, 231, 246,
1551   247, 262, 263, 278, 279, 294, 295, 310, 311, 326, 327, 342, 343, 358, 359,
1552   374, 375, 390, 391, 406, 407, 422, 423, 438, 439, 454, 455, 470, 471, 486,
1553   487, 502, 7,   7,   8,   23,  24,  39,  40,  55,  56,  71,  72,  87,  88,
1554   103, 104, 119, 120, 135, 136, 151, 152, 167, 168, 183, 184, 199, 200, 215,
1555   216, 231, 232, 247, 248, 263, 264, 279, 280, 295, 296, 311, 312, 327, 328,
1556   343, 344, 359, 360, 375, 376, 391, 392, 407, 408, 423, 424, 439, 440, 455,
1557   456, 471, 472, 487, 488, 503, 8,   8,   9,   24,  25,  40,  41,  56,  57,
1558   72,  73,  88,  89,  104, 105, 120, 121, 136, 137, 152, 153, 168, 169, 184,
1559   185, 200, 201, 216, 217, 232, 233, 248, 249, 264, 265, 280, 281, 296, 297,
1560   312, 313, 328, 329, 344, 345, 360, 361, 376, 377, 392, 393, 408, 409, 424,
1561   425, 440, 441, 456, 457, 472, 473, 488, 489, 504, 9,   9,   10,  25,  26,
1562   41,  42,  57,  58,  73,  74,  89,  90,  105, 106, 121, 122, 137, 138, 153,
1563   154, 169, 170, 185, 186, 201, 202, 217, 218, 233, 234, 249, 250, 265, 266,
1564   281, 282, 297, 298, 313, 314, 329, 330, 345, 346, 361, 362, 377, 378, 393,
1565   394, 409, 410, 425, 426, 441, 442, 457, 458, 473, 474, 489, 490, 505, 10,
1566   10,  11,  26,  27,  42,  43,  58,  59,  74,  75,  90,  91,  106, 107, 122,
1567   123, 138, 139, 154, 155, 170, 171, 186, 187, 202, 203, 218, 219, 234, 235,
1568   250, 251, 266, 267, 282, 283, 298, 299, 314, 315, 330, 331, 346, 347, 362,
1569   363, 378, 379, 394, 395, 410, 411, 426, 427, 442, 443, 458, 459, 474, 475,
1570   490, 491, 506, 11,  11,  12,  27,  28,  43,  44,  59,  60,  75,  76,  91,
1571   92,  107, 108, 123, 124, 139, 140, 155, 156, 171, 172, 187, 188, 203, 204,
1572   219, 220, 235, 236, 251, 252, 267, 268, 283, 284, 299, 300, 315, 316, 331,
1573   332, 347, 348, 363, 364, 379, 380, 395, 396, 411, 412, 427, 428, 443, 444,
1574   459, 460, 475, 476, 491, 492, 507, 12,  12,  13,  28,  29,  44,  45,  60,
1575   61,  76,  77,  92,  93,  108, 109, 124, 125, 140, 141, 156, 157, 172, 173,
1576   188, 189, 204, 205, 220, 221, 236, 237, 252, 253, 268, 269, 284, 285, 300,
1577   301, 316, 317, 332, 333, 348, 349, 364, 365, 380, 381, 396, 397, 412, 413,
1578   428, 429, 444, 445, 460, 461, 476, 477, 492, 493, 508, 13,  13,  14,  29,
1579   30,  45,  46,  61,  62,  77,  78,  93,  94,  109, 110, 125, 126, 141, 142,
1580   157, 158, 173, 174, 189, 190, 205, 206, 221, 222, 237, 238, 253, 254, 269,
1581   270, 285, 286, 301, 302, 317, 318, 333, 334, 349, 350, 365, 366, 381, 382,
1582   397, 398, 413, 414, 429, 430, 445, 446, 461, 462, 477, 478, 493, 494, 509,
1583   14,  14,  15,  30,  31,  46,  47,  62,  63,  78,  79,  94,  95,  110, 111,
1584   126, 127, 142, 143, 158, 159, 174, 175, 190, 191, 206, 207, 222, 223, 238,
1585   239, 254, 255, 270, 271, 286, 287, 302, 303, 318, 319, 334, 335, 350, 351,
1586   366, 367, 382, 383, 398, 399, 414, 415, 430, 431, 446, 447, 462, 463, 478,
1587   479, 494, 495, 510, 0,   0
1588 };
1589 
1590 DECLARE_ALIGNED(16, static const int16_t,
1591                 mcol_scan_32x16_neighbors[513 * MAX_NEIGHBORS]) = {
1592   0,   0,   0,   0,   32,  32,  64,  64,  96,  96,  128, 128, 160, 160, 192,
1593   192, 224, 224, 256, 256, 288, 288, 320, 320, 352, 352, 384, 384, 416, 416,
1594   448, 448, 0,   0,   1,   32,  33,  64,  65,  96,  97,  128, 129, 160, 161,
1595   192, 193, 224, 225, 256, 257, 288, 289, 320, 321, 352, 353, 384, 385, 416,
1596   417, 448, 449, 480, 1,   1,   2,   33,  34,  65,  66,  97,  98,  129, 130,
1597   161, 162, 193, 194, 225, 226, 257, 258, 289, 290, 321, 322, 353, 354, 385,
1598   386, 417, 418, 449, 450, 481, 2,   2,   3,   34,  35,  66,  67,  98,  99,
1599   130, 131, 162, 163, 194, 195, 226, 227, 258, 259, 290, 291, 322, 323, 354,
1600   355, 386, 387, 418, 419, 450, 451, 482, 3,   3,   4,   35,  36,  67,  68,
1601   99,  100, 131, 132, 163, 164, 195, 196, 227, 228, 259, 260, 291, 292, 323,
1602   324, 355, 356, 387, 388, 419, 420, 451, 452, 483, 4,   4,   5,   36,  37,
1603   68,  69,  100, 101, 132, 133, 164, 165, 196, 197, 228, 229, 260, 261, 292,
1604   293, 324, 325, 356, 357, 388, 389, 420, 421, 452, 453, 484, 5,   5,   6,
1605   37,  38,  69,  70,  101, 102, 133, 134, 165, 166, 197, 198, 229, 230, 261,
1606   262, 293, 294, 325, 326, 357, 358, 389, 390, 421, 422, 453, 454, 485, 6,
1607   6,   7,   38,  39,  70,  71,  102, 103, 134, 135, 166, 167, 198, 199, 230,
1608   231, 262, 263, 294, 295, 326, 327, 358, 359, 390, 391, 422, 423, 454, 455,
1609   486, 7,   7,   8,   39,  40,  71,  72,  103, 104, 135, 136, 167, 168, 199,
1610   200, 231, 232, 263, 264, 295, 296, 327, 328, 359, 360, 391, 392, 423, 424,
1611   455, 456, 487, 8,   8,   9,   40,  41,  72,  73,  104, 105, 136, 137, 168,
1612   169, 200, 201, 232, 233, 264, 265, 296, 297, 328, 329, 360, 361, 392, 393,
1613   424, 425, 456, 457, 488, 9,   9,   10,  41,  42,  73,  74,  105, 106, 137,
1614   138, 169, 170, 201, 202, 233, 234, 265, 266, 297, 298, 329, 330, 361, 362,
1615   393, 394, 425, 426, 457, 458, 489, 10,  10,  11,  42,  43,  74,  75,  106,
1616   107, 138, 139, 170, 171, 202, 203, 234, 235, 266, 267, 298, 299, 330, 331,
1617   362, 363, 394, 395, 426, 427, 458, 459, 490, 11,  11,  12,  43,  44,  75,
1618   76,  107, 108, 139, 140, 171, 172, 203, 204, 235, 236, 267, 268, 299, 300,
1619   331, 332, 363, 364, 395, 396, 427, 428, 459, 460, 491, 12,  12,  13,  44,
1620   45,  76,  77,  108, 109, 140, 141, 172, 173, 204, 205, 236, 237, 268, 269,
1621   300, 301, 332, 333, 364, 365, 396, 397, 428, 429, 460, 461, 492, 13,  13,
1622   14,  45,  46,  77,  78,  109, 110, 141, 142, 173, 174, 205, 206, 237, 238,
1623   269, 270, 301, 302, 333, 334, 365, 366, 397, 398, 429, 430, 461, 462, 493,
1624   14,  14,  15,  46,  47,  78,  79,  110, 111, 142, 143, 174, 175, 206, 207,
1625   238, 239, 270, 271, 302, 303, 334, 335, 366, 367, 398, 399, 430, 431, 462,
1626   463, 494, 15,  15,  16,  47,  48,  79,  80,  111, 112, 143, 144, 175, 176,
1627   207, 208, 239, 240, 271, 272, 303, 304, 335, 336, 367, 368, 399, 400, 431,
1628   432, 463, 464, 495, 16,  16,  17,  48,  49,  80,  81,  112, 113, 144, 145,
1629   176, 177, 208, 209, 240, 241, 272, 273, 304, 305, 336, 337, 368, 369, 400,
1630   401, 432, 433, 464, 465, 496, 17,  17,  18,  49,  50,  81,  82,  113, 114,
1631   145, 146, 177, 178, 209, 210, 241, 242, 273, 274, 305, 306, 337, 338, 369,
1632   370, 401, 402, 433, 434, 465, 466, 497, 18,  18,  19,  50,  51,  82,  83,
1633   114, 115, 146, 147, 178, 179, 210, 211, 242, 243, 274, 275, 306, 307, 338,
1634   339, 370, 371, 402, 403, 434, 435, 466, 467, 498, 19,  19,  20,  51,  52,
1635   83,  84,  115, 116, 147, 148, 179, 180, 211, 212, 243, 244, 275, 276, 307,
1636   308, 339, 340, 371, 372, 403, 404, 435, 436, 467, 468, 499, 20,  20,  21,
1637   52,  53,  84,  85,  116, 117, 148, 149, 180, 181, 212, 213, 244, 245, 276,
1638   277, 308, 309, 340, 341, 372, 373, 404, 405, 436, 437, 468, 469, 500, 21,
1639   21,  22,  53,  54,  85,  86,  117, 118, 149, 150, 181, 182, 213, 214, 245,
1640   246, 277, 278, 309, 310, 341, 342, 373, 374, 405, 406, 437, 438, 469, 470,
1641   501, 22,  22,  23,  54,  55,  86,  87,  118, 119, 150, 151, 182, 183, 214,
1642   215, 246, 247, 278, 279, 310, 311, 342, 343, 374, 375, 406, 407, 438, 439,
1643   470, 471, 502, 23,  23,  24,  55,  56,  87,  88,  119, 120, 151, 152, 183,
1644   184, 215, 216, 247, 248, 279, 280, 311, 312, 343, 344, 375, 376, 407, 408,
1645   439, 440, 471, 472, 503, 24,  24,  25,  56,  57,  88,  89,  120, 121, 152,
1646   153, 184, 185, 216, 217, 248, 249, 280, 281, 312, 313, 344, 345, 376, 377,
1647   408, 409, 440, 441, 472, 473, 504, 25,  25,  26,  57,  58,  89,  90,  121,
1648   122, 153, 154, 185, 186, 217, 218, 249, 250, 281, 282, 313, 314, 345, 346,
1649   377, 378, 409, 410, 441, 442, 473, 474, 505, 26,  26,  27,  58,  59,  90,
1650   91,  122, 123, 154, 155, 186, 187, 218, 219, 250, 251, 282, 283, 314, 315,
1651   346, 347, 378, 379, 410, 411, 442, 443, 474, 475, 506, 27,  27,  28,  59,
1652   60,  91,  92,  123, 124, 155, 156, 187, 188, 219, 220, 251, 252, 283, 284,
1653   315, 316, 347, 348, 379, 380, 411, 412, 443, 444, 475, 476, 507, 28,  28,
1654   29,  60,  61,  92,  93,  124, 125, 156, 157, 188, 189, 220, 221, 252, 253,
1655   284, 285, 316, 317, 348, 349, 380, 381, 412, 413, 444, 445, 476, 477, 508,
1656   29,  29,  30,  61,  62,  93,  94,  125, 126, 157, 158, 189, 190, 221, 222,
1657   253, 254, 285, 286, 317, 318, 349, 350, 381, 382, 413, 414, 445, 446, 477,
1658   478, 509, 30,  30,  31,  62,  63,  94,  95,  126, 127, 158, 159, 190, 191,
1659   222, 223, 254, 255, 286, 287, 318, 319, 350, 351, 382, 383, 414, 415, 446,
1660   447, 478, 479, 510, 0,   0
1661 };
1662 
1663 DECLARE_ALIGNED(16, static const int16_t,
1664                 mrow_scan_16x32_neighbors[513 * MAX_NEIGHBORS]) = {
1665   0,   0,   0,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,
1666   6,   7,   7,   8,   8,   9,   9,   10,  10,  11,  11,  12,  12,  13,  13,
1667   14,  14,  0,   0,   1,   16,  2,   17,  3,   18,  4,   19,  5,   20,  6,
1668   21,  7,   22,  8,   23,  9,   24,  10,  25,  11,  26,  12,  27,  13,  28,
1669   14,  29,  15,  30,  16,  16,  17,  32,  18,  33,  19,  34,  20,  35,  21,
1670   36,  22,  37,  23,  38,  24,  39,  25,  40,  26,  41,  27,  42,  28,  43,
1671   29,  44,  30,  45,  31,  46,  32,  32,  33,  48,  34,  49,  35,  50,  36,
1672   51,  37,  52,  38,  53,  39,  54,  40,  55,  41,  56,  42,  57,  43,  58,
1673   44,  59,  45,  60,  46,  61,  47,  62,  48,  48,  49,  64,  50,  65,  51,
1674   66,  52,  67,  53,  68,  54,  69,  55,  70,  56,  71,  57,  72,  58,  73,
1675   59,  74,  60,  75,  61,  76,  62,  77,  63,  78,  64,  64,  65,  80,  66,
1676   81,  67,  82,  68,  83,  69,  84,  70,  85,  71,  86,  72,  87,  73,  88,
1677   74,  89,  75,  90,  76,  91,  77,  92,  78,  93,  79,  94,  80,  80,  81,
1678   96,  82,  97,  83,  98,  84,  99,  85,  100, 86,  101, 87,  102, 88,  103,
1679   89,  104, 90,  105, 91,  106, 92,  107, 93,  108, 94,  109, 95,  110, 96,
1680   96,  97,  112, 98,  113, 99,  114, 100, 115, 101, 116, 102, 117, 103, 118,
1681   104, 119, 105, 120, 106, 121, 107, 122, 108, 123, 109, 124, 110, 125, 111,
1682   126, 112, 112, 113, 128, 114, 129, 115, 130, 116, 131, 117, 132, 118, 133,
1683   119, 134, 120, 135, 121, 136, 122, 137, 123, 138, 124, 139, 125, 140, 126,
1684   141, 127, 142, 128, 128, 129, 144, 130, 145, 131, 146, 132, 147, 133, 148,
1685   134, 149, 135, 150, 136, 151, 137, 152, 138, 153, 139, 154, 140, 155, 141,
1686   156, 142, 157, 143, 158, 144, 144, 145, 160, 146, 161, 147, 162, 148, 163,
1687   149, 164, 150, 165, 151, 166, 152, 167, 153, 168, 154, 169, 155, 170, 156,
1688   171, 157, 172, 158, 173, 159, 174, 160, 160, 161, 176, 162, 177, 163, 178,
1689   164, 179, 165, 180, 166, 181, 167, 182, 168, 183, 169, 184, 170, 185, 171,
1690   186, 172, 187, 173, 188, 174, 189, 175, 190, 176, 176, 177, 192, 178, 193,
1691   179, 194, 180, 195, 181, 196, 182, 197, 183, 198, 184, 199, 185, 200, 186,
1692   201, 187, 202, 188, 203, 189, 204, 190, 205, 191, 206, 192, 192, 193, 208,
1693   194, 209, 195, 210, 196, 211, 197, 212, 198, 213, 199, 214, 200, 215, 201,
1694   216, 202, 217, 203, 218, 204, 219, 205, 220, 206, 221, 207, 222, 208, 208,
1695   209, 224, 210, 225, 211, 226, 212, 227, 213, 228, 214, 229, 215, 230, 216,
1696   231, 217, 232, 218, 233, 219, 234, 220, 235, 221, 236, 222, 237, 223, 238,
1697   224, 224, 225, 240, 226, 241, 227, 242, 228, 243, 229, 244, 230, 245, 231,
1698   246, 232, 247, 233, 248, 234, 249, 235, 250, 236, 251, 237, 252, 238, 253,
1699   239, 254, 240, 240, 241, 256, 242, 257, 243, 258, 244, 259, 245, 260, 246,
1700   261, 247, 262, 248, 263, 249, 264, 250, 265, 251, 266, 252, 267, 253, 268,
1701   254, 269, 255, 270, 256, 256, 257, 272, 258, 273, 259, 274, 260, 275, 261,
1702   276, 262, 277, 263, 278, 264, 279, 265, 280, 266, 281, 267, 282, 268, 283,
1703   269, 284, 270, 285, 271, 286, 272, 272, 273, 288, 274, 289, 275, 290, 276,
1704   291, 277, 292, 278, 293, 279, 294, 280, 295, 281, 296, 282, 297, 283, 298,
1705   284, 299, 285, 300, 286, 301, 287, 302, 288, 288, 289, 304, 290, 305, 291,
1706   306, 292, 307, 293, 308, 294, 309, 295, 310, 296, 311, 297, 312, 298, 313,
1707   299, 314, 300, 315, 301, 316, 302, 317, 303, 318, 304, 304, 305, 320, 306,
1708   321, 307, 322, 308, 323, 309, 324, 310, 325, 311, 326, 312, 327, 313, 328,
1709   314, 329, 315, 330, 316, 331, 317, 332, 318, 333, 319, 334, 320, 320, 321,
1710   336, 322, 337, 323, 338, 324, 339, 325, 340, 326, 341, 327, 342, 328, 343,
1711   329, 344, 330, 345, 331, 346, 332, 347, 333, 348, 334, 349, 335, 350, 336,
1712   336, 337, 352, 338, 353, 339, 354, 340, 355, 341, 356, 342, 357, 343, 358,
1713   344, 359, 345, 360, 346, 361, 347, 362, 348, 363, 349, 364, 350, 365, 351,
1714   366, 352, 352, 353, 368, 354, 369, 355, 370, 356, 371, 357, 372, 358, 373,
1715   359, 374, 360, 375, 361, 376, 362, 377, 363, 378, 364, 379, 365, 380, 366,
1716   381, 367, 382, 368, 368, 369, 384, 370, 385, 371, 386, 372, 387, 373, 388,
1717   374, 389, 375, 390, 376, 391, 377, 392, 378, 393, 379, 394, 380, 395, 381,
1718   396, 382, 397, 383, 398, 384, 384, 385, 400, 386, 401, 387, 402, 388, 403,
1719   389, 404, 390, 405, 391, 406, 392, 407, 393, 408, 394, 409, 395, 410, 396,
1720   411, 397, 412, 398, 413, 399, 414, 400, 400, 401, 416, 402, 417, 403, 418,
1721   404, 419, 405, 420, 406, 421, 407, 422, 408, 423, 409, 424, 410, 425, 411,
1722   426, 412, 427, 413, 428, 414, 429, 415, 430, 416, 416, 417, 432, 418, 433,
1723   419, 434, 420, 435, 421, 436, 422, 437, 423, 438, 424, 439, 425, 440, 426,
1724   441, 427, 442, 428, 443, 429, 444, 430, 445, 431, 446, 432, 432, 433, 448,
1725   434, 449, 435, 450, 436, 451, 437, 452, 438, 453, 439, 454, 440, 455, 441,
1726   456, 442, 457, 443, 458, 444, 459, 445, 460, 446, 461, 447, 462, 448, 448,
1727   449, 464, 450, 465, 451, 466, 452, 467, 453, 468, 454, 469, 455, 470, 456,
1728   471, 457, 472, 458, 473, 459, 474, 460, 475, 461, 476, 462, 477, 463, 478,
1729   464, 464, 465, 480, 466, 481, 467, 482, 468, 483, 469, 484, 470, 485, 471,
1730   486, 472, 487, 473, 488, 474, 489, 475, 490, 476, 491, 477, 492, 478, 493,
1731   479, 494, 480, 480, 481, 496, 482, 497, 483, 498, 484, 499, 485, 500, 486,
1732   501, 487, 502, 488, 503, 489, 504, 490, 505, 491, 506, 492, 507, 493, 508,
1733   494, 509, 495, 510, 0,   0
1734 };
1735 
1736 DECLARE_ALIGNED(16, static const int16_t,
1737                 mrow_scan_32x16_neighbors[513 * MAX_NEIGHBORS]) = {
1738   0,   0,   0,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,
1739   6,   7,   7,   8,   8,   9,   9,   10,  10,  11,  11,  12,  12,  13,  13,
1740   14,  14,  15,  15,  16,  16,  17,  17,  18,  18,  19,  19,  20,  20,  21,
1741   21,  22,  22,  23,  23,  24,  24,  25,  25,  26,  26,  27,  27,  28,  28,
1742   29,  29,  30,  30,  0,   0,   1,   32,  2,   33,  3,   34,  4,   35,  5,
1743   36,  6,   37,  7,   38,  8,   39,  9,   40,  10,  41,  11,  42,  12,  43,
1744   13,  44,  14,  45,  15,  46,  16,  47,  17,  48,  18,  49,  19,  50,  20,
1745   51,  21,  52,  22,  53,  23,  54,  24,  55,  25,  56,  26,  57,  27,  58,
1746   28,  59,  29,  60,  30,  61,  31,  62,  32,  32,  33,  64,  34,  65,  35,
1747   66,  36,  67,  37,  68,  38,  69,  39,  70,  40,  71,  41,  72,  42,  73,
1748   43,  74,  44,  75,  45,  76,  46,  77,  47,  78,  48,  79,  49,  80,  50,
1749   81,  51,  82,  52,  83,  53,  84,  54,  85,  55,  86,  56,  87,  57,  88,
1750   58,  89,  59,  90,  60,  91,  61,  92,  62,  93,  63,  94,  64,  64,  65,
1751   96,  66,  97,  67,  98,  68,  99,  69,  100, 70,  101, 71,  102, 72,  103,
1752   73,  104, 74,  105, 75,  106, 76,  107, 77,  108, 78,  109, 79,  110, 80,
1753   111, 81,  112, 82,  113, 83,  114, 84,  115, 85,  116, 86,  117, 87,  118,
1754   88,  119, 89,  120, 90,  121, 91,  122, 92,  123, 93,  124, 94,  125, 95,
1755   126, 96,  96,  97,  128, 98,  129, 99,  130, 100, 131, 101, 132, 102, 133,
1756   103, 134, 104, 135, 105, 136, 106, 137, 107, 138, 108, 139, 109, 140, 110,
1757   141, 111, 142, 112, 143, 113, 144, 114, 145, 115, 146, 116, 147, 117, 148,
1758   118, 149, 119, 150, 120, 151, 121, 152, 122, 153, 123, 154, 124, 155, 125,
1759   156, 126, 157, 127, 158, 128, 128, 129, 160, 130, 161, 131, 162, 132, 163,
1760   133, 164, 134, 165, 135, 166, 136, 167, 137, 168, 138, 169, 139, 170, 140,
1761   171, 141, 172, 142, 173, 143, 174, 144, 175, 145, 176, 146, 177, 147, 178,
1762   148, 179, 149, 180, 150, 181, 151, 182, 152, 183, 153, 184, 154, 185, 155,
1763   186, 156, 187, 157, 188, 158, 189, 159, 190, 160, 160, 161, 192, 162, 193,
1764   163, 194, 164, 195, 165, 196, 166, 197, 167, 198, 168, 199, 169, 200, 170,
1765   201, 171, 202, 172, 203, 173, 204, 174, 205, 175, 206, 176, 207, 177, 208,
1766   178, 209, 179, 210, 180, 211, 181, 212, 182, 213, 183, 214, 184, 215, 185,
1767   216, 186, 217, 187, 218, 188, 219, 189, 220, 190, 221, 191, 222, 192, 192,
1768   193, 224, 194, 225, 195, 226, 196, 227, 197, 228, 198, 229, 199, 230, 200,
1769   231, 201, 232, 202, 233, 203, 234, 204, 235, 205, 236, 206, 237, 207, 238,
1770   208, 239, 209, 240, 210, 241, 211, 242, 212, 243, 213, 244, 214, 245, 215,
1771   246, 216, 247, 217, 248, 218, 249, 219, 250, 220, 251, 221, 252, 222, 253,
1772   223, 254, 224, 224, 225, 256, 226, 257, 227, 258, 228, 259, 229, 260, 230,
1773   261, 231, 262, 232, 263, 233, 264, 234, 265, 235, 266, 236, 267, 237, 268,
1774   238, 269, 239, 270, 240, 271, 241, 272, 242, 273, 243, 274, 244, 275, 245,
1775   276, 246, 277, 247, 278, 248, 279, 249, 280, 250, 281, 251, 282, 252, 283,
1776   253, 284, 254, 285, 255, 286, 256, 256, 257, 288, 258, 289, 259, 290, 260,
1777   291, 261, 292, 262, 293, 263, 294, 264, 295, 265, 296, 266, 297, 267, 298,
1778   268, 299, 269, 300, 270, 301, 271, 302, 272, 303, 273, 304, 274, 305, 275,
1779   306, 276, 307, 277, 308, 278, 309, 279, 310, 280, 311, 281, 312, 282, 313,
1780   283, 314, 284, 315, 285, 316, 286, 317, 287, 318, 288, 288, 289, 320, 290,
1781   321, 291, 322, 292, 323, 293, 324, 294, 325, 295, 326, 296, 327, 297, 328,
1782   298, 329, 299, 330, 300, 331, 301, 332, 302, 333, 303, 334, 304, 335, 305,
1783   336, 306, 337, 307, 338, 308, 339, 309, 340, 310, 341, 311, 342, 312, 343,
1784   313, 344, 314, 345, 315, 346, 316, 347, 317, 348, 318, 349, 319, 350, 320,
1785   320, 321, 352, 322, 353, 323, 354, 324, 355, 325, 356, 326, 357, 327, 358,
1786   328, 359, 329, 360, 330, 361, 331, 362, 332, 363, 333, 364, 334, 365, 335,
1787   366, 336, 367, 337, 368, 338, 369, 339, 370, 340, 371, 341, 372, 342, 373,
1788   343, 374, 344, 375, 345, 376, 346, 377, 347, 378, 348, 379, 349, 380, 350,
1789   381, 351, 382, 352, 352, 353, 384, 354, 385, 355, 386, 356, 387, 357, 388,
1790   358, 389, 359, 390, 360, 391, 361, 392, 362, 393, 363, 394, 364, 395, 365,
1791   396, 366, 397, 367, 398, 368, 399, 369, 400, 370, 401, 371, 402, 372, 403,
1792   373, 404, 374, 405, 375, 406, 376, 407, 377, 408, 378, 409, 379, 410, 380,
1793   411, 381, 412, 382, 413, 383, 414, 384, 384, 385, 416, 386, 417, 387, 418,
1794   388, 419, 389, 420, 390, 421, 391, 422, 392, 423, 393, 424, 394, 425, 395,
1795   426, 396, 427, 397, 428, 398, 429, 399, 430, 400, 431, 401, 432, 402, 433,
1796   403, 434, 404, 435, 405, 436, 406, 437, 407, 438, 408, 439, 409, 440, 410,
1797   441, 411, 442, 412, 443, 413, 444, 414, 445, 415, 446, 416, 416, 417, 448,
1798   418, 449, 419, 450, 420, 451, 421, 452, 422, 453, 423, 454, 424, 455, 425,
1799   456, 426, 457, 427, 458, 428, 459, 429, 460, 430, 461, 431, 462, 432, 463,
1800   433, 464, 434, 465, 435, 466, 436, 467, 437, 468, 438, 469, 439, 470, 440,
1801   471, 441, 472, 442, 473, 443, 474, 444, 475, 445, 476, 446, 477, 447, 478,
1802   448, 448, 449, 480, 450, 481, 451, 482, 452, 483, 453, 484, 454, 485, 455,
1803   486, 456, 487, 457, 488, 458, 489, 459, 490, 460, 491, 461, 492, 462, 493,
1804   463, 494, 464, 495, 465, 496, 466, 497, 467, 498, 468, 499, 469, 500, 470,
1805   501, 471, 502, 472, 503, 473, 504, 474, 505, 475, 506, 476, 507, 477, 508,
1806   478, 509, 479, 510, 0,   0
1807 };
1808 
1809 DECLARE_ALIGNED(16, static const int16_t,
1810                 mcol_scan_16x16_neighbors[257 * MAX_NEIGHBORS]) = {
1811   0,   0,   0,   0,   16,  16,  32,  32,  48,  48,  64,  64,  80,  80,  96,
1812   96,  112, 112, 128, 128, 144, 144, 160, 160, 176, 176, 192, 192, 208, 208,
1813   224, 224, 0,   0,   1,   16,  17,  32,  33,  48,  49,  64,  65,  80,  81,
1814   96,  97,  112, 113, 128, 129, 144, 145, 160, 161, 176, 177, 192, 193, 208,
1815   209, 224, 225, 240, 1,   1,   2,   17,  18,  33,  34,  49,  50,  65,  66,
1816   81,  82,  97,  98,  113, 114, 129, 130, 145, 146, 161, 162, 177, 178, 193,
1817   194, 209, 210, 225, 226, 241, 2,   2,   3,   18,  19,  34,  35,  50,  51,
1818   66,  67,  82,  83,  98,  99,  114, 115, 130, 131, 146, 147, 162, 163, 178,
1819   179, 194, 195, 210, 211, 226, 227, 242, 3,   3,   4,   19,  20,  35,  36,
1820   51,  52,  67,  68,  83,  84,  99,  100, 115, 116, 131, 132, 147, 148, 163,
1821   164, 179, 180, 195, 196, 211, 212, 227, 228, 243, 4,   4,   5,   20,  21,
1822   36,  37,  52,  53,  68,  69,  84,  85,  100, 101, 116, 117, 132, 133, 148,
1823   149, 164, 165, 180, 181, 196, 197, 212, 213, 228, 229, 244, 5,   5,   6,
1824   21,  22,  37,  38,  53,  54,  69,  70,  85,  86,  101, 102, 117, 118, 133,
1825   134, 149, 150, 165, 166, 181, 182, 197, 198, 213, 214, 229, 230, 245, 6,
1826   6,   7,   22,  23,  38,  39,  54,  55,  70,  71,  86,  87,  102, 103, 118,
1827   119, 134, 135, 150, 151, 166, 167, 182, 183, 198, 199, 214, 215, 230, 231,
1828   246, 7,   7,   8,   23,  24,  39,  40,  55,  56,  71,  72,  87,  88,  103,
1829   104, 119, 120, 135, 136, 151, 152, 167, 168, 183, 184, 199, 200, 215, 216,
1830   231, 232, 247, 8,   8,   9,   24,  25,  40,  41,  56,  57,  72,  73,  88,
1831   89,  104, 105, 120, 121, 136, 137, 152, 153, 168, 169, 184, 185, 200, 201,
1832   216, 217, 232, 233, 248, 9,   9,   10,  25,  26,  41,  42,  57,  58,  73,
1833   74,  89,  90,  105, 106, 121, 122, 137, 138, 153, 154, 169, 170, 185, 186,
1834   201, 202, 217, 218, 233, 234, 249, 10,  10,  11,  26,  27,  42,  43,  58,
1835   59,  74,  75,  90,  91,  106, 107, 122, 123, 138, 139, 154, 155, 170, 171,
1836   186, 187, 202, 203, 218, 219, 234, 235, 250, 11,  11,  12,  27,  28,  43,
1837   44,  59,  60,  75,  76,  91,  92,  107, 108, 123, 124, 139, 140, 155, 156,
1838   171, 172, 187, 188, 203, 204, 219, 220, 235, 236, 251, 12,  12,  13,  28,
1839   29,  44,  45,  60,  61,  76,  77,  92,  93,  108, 109, 124, 125, 140, 141,
1840   156, 157, 172, 173, 188, 189, 204, 205, 220, 221, 236, 237, 252, 13,  13,
1841   14,  29,  30,  45,  46,  61,  62,  77,  78,  93,  94,  109, 110, 125, 126,
1842   141, 142, 157, 158, 173, 174, 189, 190, 205, 206, 221, 222, 237, 238, 253,
1843   14,  14,  15,  30,  31,  46,  47,  62,  63,  78,  79,  94,  95,  110, 111,
1844   126, 127, 142, 143, 158, 159, 174, 175, 190, 191, 206, 207, 222, 223, 238,
1845   239, 254, 0,   0,
1846 };
1847 
1848 DECLARE_ALIGNED(16, static const int16_t,
1849                 mrow_scan_16x16_neighbors[257 * MAX_NEIGHBORS]) = {
1850   0,   0,   0,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,
1851   6,   7,   7,   8,   8,   9,   9,   10,  10,  11,  11,  12,  12,  13,  13,
1852   14,  14,  0,   0,   1,   16,  2,   17,  3,   18,  4,   19,  5,   20,  6,
1853   21,  7,   22,  8,   23,  9,   24,  10,  25,  11,  26,  12,  27,  13,  28,
1854   14,  29,  15,  30,  16,  16,  17,  32,  18,  33,  19,  34,  20,  35,  21,
1855   36,  22,  37,  23,  38,  24,  39,  25,  40,  26,  41,  27,  42,  28,  43,
1856   29,  44,  30,  45,  31,  46,  32,  32,  33,  48,  34,  49,  35,  50,  36,
1857   51,  37,  52,  38,  53,  39,  54,  40,  55,  41,  56,  42,  57,  43,  58,
1858   44,  59,  45,  60,  46,  61,  47,  62,  48,  48,  49,  64,  50,  65,  51,
1859   66,  52,  67,  53,  68,  54,  69,  55,  70,  56,  71,  57,  72,  58,  73,
1860   59,  74,  60,  75,  61,  76,  62,  77,  63,  78,  64,  64,  65,  80,  66,
1861   81,  67,  82,  68,  83,  69,  84,  70,  85,  71,  86,  72,  87,  73,  88,
1862   74,  89,  75,  90,  76,  91,  77,  92,  78,  93,  79,  94,  80,  80,  81,
1863   96,  82,  97,  83,  98,  84,  99,  85,  100, 86,  101, 87,  102, 88,  103,
1864   89,  104, 90,  105, 91,  106, 92,  107, 93,  108, 94,  109, 95,  110, 96,
1865   96,  97,  112, 98,  113, 99,  114, 100, 115, 101, 116, 102, 117, 103, 118,
1866   104, 119, 105, 120, 106, 121, 107, 122, 108, 123, 109, 124, 110, 125, 111,
1867   126, 112, 112, 113, 128, 114, 129, 115, 130, 116, 131, 117, 132, 118, 133,
1868   119, 134, 120, 135, 121, 136, 122, 137, 123, 138, 124, 139, 125, 140, 126,
1869   141, 127, 142, 128, 128, 129, 144, 130, 145, 131, 146, 132, 147, 133, 148,
1870   134, 149, 135, 150, 136, 151, 137, 152, 138, 153, 139, 154, 140, 155, 141,
1871   156, 142, 157, 143, 158, 144, 144, 145, 160, 146, 161, 147, 162, 148, 163,
1872   149, 164, 150, 165, 151, 166, 152, 167, 153, 168, 154, 169, 155, 170, 156,
1873   171, 157, 172, 158, 173, 159, 174, 160, 160, 161, 176, 162, 177, 163, 178,
1874   164, 179, 165, 180, 166, 181, 167, 182, 168, 183, 169, 184, 170, 185, 171,
1875   186, 172, 187, 173, 188, 174, 189, 175, 190, 176, 176, 177, 192, 178, 193,
1876   179, 194, 180, 195, 181, 196, 182, 197, 183, 198, 184, 199, 185, 200, 186,
1877   201, 187, 202, 188, 203, 189, 204, 190, 205, 191, 206, 192, 192, 193, 208,
1878   194, 209, 195, 210, 196, 211, 197, 212, 198, 213, 199, 214, 200, 215, 201,
1879   216, 202, 217, 203, 218, 204, 219, 205, 220, 206, 221, 207, 222, 208, 208,
1880   209, 224, 210, 225, 211, 226, 212, 227, 213, 228, 214, 229, 215, 230, 216,
1881   231, 217, 232, 218, 233, 219, 234, 220, 235, 221, 236, 222, 237, 223, 238,
1882   224, 224, 225, 240, 226, 241, 227, 242, 228, 243, 229, 244, 230, 245, 231,
1883   246, 232, 247, 233, 248, 234, 249, 235, 250, 236, 251, 237, 252, 238, 253,
1884   239, 254, 0,   0,
1885 };
1886 
1887 DECLARE_ALIGNED(16, static const int16_t,
1888                 default_scan_16x16_neighbors[257 * MAX_NEIGHBORS]) = {
1889   0,   0,   0,   0,   0,   0,   16,  16,  1,   16,  1,   1,   2,   2,   2,
1890   17,  17,  32,  32,  32,  48,  48,  33,  48,  18,  33,  3,   18,  3,   3,
1891   4,   4,   4,   19,  19,  34,  34,  49,  49,  64,  64,  64,  80,  80,  65,
1892   80,  50,  65,  35,  50,  20,  35,  5,   20,  5,   5,   6,   6,   6,   21,
1893   21,  36,  36,  51,  51,  66,  66,  81,  81,  96,  96,  96,  112, 112, 97,
1894   112, 82,  97,  67,  82,  52,  67,  37,  52,  22,  37,  7,   22,  7,   7,
1895   8,   8,   8,   23,  23,  38,  38,  53,  53,  68,  68,  83,  83,  98,  98,
1896   113, 113, 128, 128, 128, 144, 144, 129, 144, 114, 129, 99,  114, 84,  99,
1897   69,  84,  54,  69,  39,  54,  24,  39,  9,   24,  9,   9,   10,  10,  10,
1898   25,  25,  40,  40,  55,  55,  70,  70,  85,  85,  100, 100, 115, 115, 130,
1899   130, 145, 145, 160, 160, 160, 176, 176, 161, 176, 146, 161, 131, 146, 116,
1900   131, 101, 116, 86,  101, 71,  86,  56,  71,  41,  56,  26,  41,  11,  26,
1901   11,  11,  12,  12,  12,  27,  27,  42,  42,  57,  57,  72,  72,  87,  87,
1902   102, 102, 117, 117, 132, 132, 147, 147, 162, 162, 177, 177, 192, 192, 192,
1903   208, 208, 193, 208, 178, 193, 163, 178, 148, 163, 133, 148, 118, 133, 103,
1904   118, 88,  103, 73,  88,  58,  73,  43,  58,  28,  43,  13,  28,  13,  13,
1905   14,  14,  14,  29,  29,  44,  44,  59,  59,  74,  74,  89,  89,  104, 104,
1906   119, 119, 134, 134, 149, 149, 164, 164, 179, 179, 194, 194, 209, 209, 224,
1907   224, 224, 225, 240, 210, 225, 195, 210, 180, 195, 165, 180, 150, 165, 135,
1908   150, 120, 135, 105, 120, 90,  105, 75,  90,  60,  75,  45,  60,  30,  45,
1909   15,  30,  31,  46,  46,  61,  61,  76,  76,  91,  91,  106, 106, 121, 121,
1910   136, 136, 151, 151, 166, 166, 181, 181, 196, 196, 211, 211, 226, 226, 241,
1911   227, 242, 212, 227, 197, 212, 182, 197, 167, 182, 152, 167, 137, 152, 122,
1912   137, 107, 122, 92,  107, 77,  92,  62,  77,  47,  62,  63,  78,  78,  93,
1913   93,  108, 108, 123, 123, 138, 138, 153, 153, 168, 168, 183, 183, 198, 198,
1914   213, 213, 228, 228, 243, 229, 244, 214, 229, 199, 214, 184, 199, 169, 184,
1915   154, 169, 139, 154, 124, 139, 109, 124, 94,  109, 79,  94,  95,  110, 110,
1916   125, 125, 140, 140, 155, 155, 170, 170, 185, 185, 200, 200, 215, 215, 230,
1917   230, 245, 231, 246, 216, 231, 201, 216, 186, 201, 171, 186, 156, 171, 141,
1918   156, 126, 141, 111, 126, 127, 142, 142, 157, 157, 172, 172, 187, 187, 202,
1919   202, 217, 217, 232, 232, 247, 233, 248, 218, 233, 203, 218, 188, 203, 173,
1920   188, 158, 173, 143, 158, 159, 174, 174, 189, 189, 204, 204, 219, 219, 234,
1921   234, 249, 235, 250, 220, 235, 205, 220, 190, 205, 175, 190, 191, 206, 206,
1922   221, 221, 236, 236, 251, 237, 252, 222, 237, 207, 222, 223, 238, 238, 253,
1923   239, 254, 0,   0
1924 };
1925 
1926 DECLARE_ALIGNED(16, static const int16_t,
1927                 mcol_scan_32x32_neighbors[1025 * MAX_NEIGHBORS]) = {
1928   0,   0,    0,   0,    32,  32,   64,  64,   96,  96,   128, 128,  160, 160,
1929   192, 192,  224, 224,  256, 256,  288, 288,  320, 320,  352, 352,  384, 384,
1930   416, 416,  448, 448,  480, 480,  512, 512,  544, 544,  576, 576,  608, 608,
1931   640, 640,  672, 672,  704, 704,  736, 736,  768, 768,  800, 800,  832, 832,
1932   864, 864,  896, 896,  928, 928,  960, 960,  0,   0,    1,   32,   33,  64,
1933   65,  96,   97,  128,  129, 160,  161, 192,  193, 224,  225, 256,  257, 288,
1934   289, 320,  321, 352,  353, 384,  385, 416,  417, 448,  449, 480,  481, 512,
1935   513, 544,  545, 576,  577, 608,  609, 640,  641, 672,  673, 704,  705, 736,
1936   737, 768,  769, 800,  801, 832,  833, 864,  865, 896,  897, 928,  929, 960,
1937   961, 992,  1,   1,    2,   33,   34,  65,   66,  97,   98,  129,  130, 161,
1938   162, 193,  194, 225,  226, 257,  258, 289,  290, 321,  322, 353,  354, 385,
1939   386, 417,  418, 449,  450, 481,  482, 513,  514, 545,  546, 577,  578, 609,
1940   610, 641,  642, 673,  674, 705,  706, 737,  738, 769,  770, 801,  802, 833,
1941   834, 865,  866, 897,  898, 929,  930, 961,  962, 993,  2,   2,    3,   34,
1942   35,  66,   67,  98,   99,  130,  131, 162,  163, 194,  195, 226,  227, 258,
1943   259, 290,  291, 322,  323, 354,  355, 386,  387, 418,  419, 450,  451, 482,
1944   483, 514,  515, 546,  547, 578,  579, 610,  611, 642,  643, 674,  675, 706,
1945   707, 738,  739, 770,  771, 802,  803, 834,  835, 866,  867, 898,  899, 930,
1946   931, 962,  963, 994,  3,   3,    4,   35,   36,  67,   68,  99,   100, 131,
1947   132, 163,  164, 195,  196, 227,  228, 259,  260, 291,  292, 323,  324, 355,
1948   356, 387,  388, 419,  420, 451,  452, 483,  484, 515,  516, 547,  548, 579,
1949   580, 611,  612, 643,  644, 675,  676, 707,  708, 739,  740, 771,  772, 803,
1950   804, 835,  836, 867,  868, 899,  900, 931,  932, 963,  964, 995,  4,   4,
1951   5,   36,   37,  68,   69,  100,  101, 132,  133, 164,  165, 196,  197, 228,
1952   229, 260,  261, 292,  293, 324,  325, 356,  357, 388,  389, 420,  421, 452,
1953   453, 484,  485, 516,  517, 548,  549, 580,  581, 612,  613, 644,  645, 676,
1954   677, 708,  709, 740,  741, 772,  773, 804,  805, 836,  837, 868,  869, 900,
1955   901, 932,  933, 964,  965, 996,  5,   5,    6,   37,   38,  69,   70,  101,
1956   102, 133,  134, 165,  166, 197,  198, 229,  230, 261,  262, 293,  294, 325,
1957   326, 357,  358, 389,  390, 421,  422, 453,  454, 485,  486, 517,  518, 549,
1958   550, 581,  582, 613,  614, 645,  646, 677,  678, 709,  710, 741,  742, 773,
1959   774, 805,  806, 837,  838, 869,  870, 901,  902, 933,  934, 965,  966, 997,
1960   6,   6,    7,   38,   39,  70,   71,  102,  103, 134,  135, 166,  167, 198,
1961   199, 230,  231, 262,  263, 294,  295, 326,  327, 358,  359, 390,  391, 422,
1962   423, 454,  455, 486,  487, 518,  519, 550,  551, 582,  583, 614,  615, 646,
1963   647, 678,  679, 710,  711, 742,  743, 774,  775, 806,  807, 838,  839, 870,
1964   871, 902,  903, 934,  935, 966,  967, 998,  7,   7,    8,   39,   40,  71,
1965   72,  103,  104, 135,  136, 167,  168, 199,  200, 231,  232, 263,  264, 295,
1966   296, 327,  328, 359,  360, 391,  392, 423,  424, 455,  456, 487,  488, 519,
1967   520, 551,  552, 583,  584, 615,  616, 647,  648, 679,  680, 711,  712, 743,
1968   744, 775,  776, 807,  808, 839,  840, 871,  872, 903,  904, 935,  936, 967,
1969   968, 999,  8,   8,    9,   40,   41,  72,   73,  104,  105, 136,  137, 168,
1970   169, 200,  201, 232,  233, 264,  265, 296,  297, 328,  329, 360,  361, 392,
1971   393, 424,  425, 456,  457, 488,  489, 520,  521, 552,  553, 584,  585, 616,
1972   617, 648,  649, 680,  681, 712,  713, 744,  745, 776,  777, 808,  809, 840,
1973   841, 872,  873, 904,  905, 936,  937, 968,  969, 1000, 9,   9,    10,  41,
1974   42,  73,   74,  105,  106, 137,  138, 169,  170, 201,  202, 233,  234, 265,
1975   266, 297,  298, 329,  330, 361,  362, 393,  394, 425,  426, 457,  458, 489,
1976   490, 521,  522, 553,  554, 585,  586, 617,  618, 649,  650, 681,  682, 713,
1977   714, 745,  746, 777,  778, 809,  810, 841,  842, 873,  874, 905,  906, 937,
1978   938, 969,  970, 1001, 10,  10,   11,  42,   43,  74,   75,  106,  107, 138,
1979   139, 170,  171, 202,  203, 234,  235, 266,  267, 298,  299, 330,  331, 362,
1980   363, 394,  395, 426,  427, 458,  459, 490,  491, 522,  523, 554,  555, 586,
1981   587, 618,  619, 650,  651, 682,  683, 714,  715, 746,  747, 778,  779, 810,
1982   811, 842,  843, 874,  875, 906,  907, 938,  939, 970,  971, 1002, 11,  11,
1983   12,  43,   44,  75,   76,  107,  108, 139,  140, 171,  172, 203,  204, 235,
1984   236, 267,  268, 299,  300, 331,  332, 363,  364, 395,  396, 427,  428, 459,
1985   460, 491,  492, 523,  524, 555,  556, 587,  588, 619,  620, 651,  652, 683,
1986   684, 715,  716, 747,  748, 779,  780, 811,  812, 843,  844, 875,  876, 907,
1987   908, 939,  940, 971,  972, 1003, 12,  12,   13,  44,   45,  76,   77,  108,
1988   109, 140,  141, 172,  173, 204,  205, 236,  237, 268,  269, 300,  301, 332,
1989   333, 364,  365, 396,  397, 428,  429, 460,  461, 492,  493, 524,  525, 556,
1990   557, 588,  589, 620,  621, 652,  653, 684,  685, 716,  717, 748,  749, 780,
1991   781, 812,  813, 844,  845, 876,  877, 908,  909, 940,  941, 972,  973, 1004,
1992   13,  13,   14,  45,   46,  77,   78,  109,  110, 141,  142, 173,  174, 205,
1993   206, 237,  238, 269,  270, 301,  302, 333,  334, 365,  366, 397,  398, 429,
1994   430, 461,  462, 493,  494, 525,  526, 557,  558, 589,  590, 621,  622, 653,
1995   654, 685,  686, 717,  718, 749,  750, 781,  782, 813,  814, 845,  846, 877,
1996   878, 909,  910, 941,  942, 973,  974, 1005, 14,  14,   15,  46,   47,  78,
1997   79,  110,  111, 142,  143, 174,  175, 206,  207, 238,  239, 270,  271, 302,
1998   303, 334,  335, 366,  367, 398,  399, 430,  431, 462,  463, 494,  495, 526,
1999   527, 558,  559, 590,  591, 622,  623, 654,  655, 686,  687, 718,  719, 750,
2000   751, 782,  783, 814,  815, 846,  847, 878,  879, 910,  911, 942,  943, 974,
2001   975, 1006, 15,  15,   16,  47,   48,  79,   80,  111,  112, 143,  144, 175,
2002   176, 207,  208, 239,  240, 271,  272, 303,  304, 335,  336, 367,  368, 399,
2003   400, 431,  432, 463,  464, 495,  496, 527,  528, 559,  560, 591,  592, 623,
2004   624, 655,  656, 687,  688, 719,  720, 751,  752, 783,  784, 815,  816, 847,
2005   848, 879,  880, 911,  912, 943,  944, 975,  976, 1007, 16,  16,   17,  48,
2006   49,  80,   81,  112,  113, 144,  145, 176,  177, 208,  209, 240,  241, 272,
2007   273, 304,  305, 336,  337, 368,  369, 400,  401, 432,  433, 464,  465, 496,
2008   497, 528,  529, 560,  561, 592,  593, 624,  625, 656,  657, 688,  689, 720,
2009   721, 752,  753, 784,  785, 816,  817, 848,  849, 880,  881, 912,  913, 944,
2010   945, 976,  977, 1008, 17,  17,   18,  49,   50,  81,   82,  113,  114, 145,
2011   146, 177,  178, 209,  210, 241,  242, 273,  274, 305,  306, 337,  338, 369,
2012   370, 401,  402, 433,  434, 465,  466, 497,  498, 529,  530, 561,  562, 593,
2013   594, 625,  626, 657,  658, 689,  690, 721,  722, 753,  754, 785,  786, 817,
2014   818, 849,  850, 881,  882, 913,  914, 945,  946, 977,  978, 1009, 18,  18,
2015   19,  50,   51,  82,   83,  114,  115, 146,  147, 178,  179, 210,  211, 242,
2016   243, 274,  275, 306,  307, 338,  339, 370,  371, 402,  403, 434,  435, 466,
2017   467, 498,  499, 530,  531, 562,  563, 594,  595, 626,  627, 658,  659, 690,
2018   691, 722,  723, 754,  755, 786,  787, 818,  819, 850,  851, 882,  883, 914,
2019   915, 946,  947, 978,  979, 1010, 19,  19,   20,  51,   52,  83,   84,  115,
2020   116, 147,  148, 179,  180, 211,  212, 243,  244, 275,  276, 307,  308, 339,
2021   340, 371,  372, 403,  404, 435,  436, 467,  468, 499,  500, 531,  532, 563,
2022   564, 595,  596, 627,  628, 659,  660, 691,  692, 723,  724, 755,  756, 787,
2023   788, 819,  820, 851,  852, 883,  884, 915,  916, 947,  948, 979,  980, 1011,
2024   20,  20,   21,  52,   53,  84,   85,  116,  117, 148,  149, 180,  181, 212,
2025   213, 244,  245, 276,  277, 308,  309, 340,  341, 372,  373, 404,  405, 436,
2026   437, 468,  469, 500,  501, 532,  533, 564,  565, 596,  597, 628,  629, 660,
2027   661, 692,  693, 724,  725, 756,  757, 788,  789, 820,  821, 852,  853, 884,
2028   885, 916,  917, 948,  949, 980,  981, 1012, 21,  21,   22,  53,   54,  85,
2029   86,  117,  118, 149,  150, 181,  182, 213,  214, 245,  246, 277,  278, 309,
2030   310, 341,  342, 373,  374, 405,  406, 437,  438, 469,  470, 501,  502, 533,
2031   534, 565,  566, 597,  598, 629,  630, 661,  662, 693,  694, 725,  726, 757,
2032   758, 789,  790, 821,  822, 853,  854, 885,  886, 917,  918, 949,  950, 981,
2033   982, 1013, 22,  22,   23,  54,   55,  86,   87,  118,  119, 150,  151, 182,
2034   183, 214,  215, 246,  247, 278,  279, 310,  311, 342,  343, 374,  375, 406,
2035   407, 438,  439, 470,  471, 502,  503, 534,  535, 566,  567, 598,  599, 630,
2036   631, 662,  663, 694,  695, 726,  727, 758,  759, 790,  791, 822,  823, 854,
2037   855, 886,  887, 918,  919, 950,  951, 982,  983, 1014, 23,  23,   24,  55,
2038   56,  87,   88,  119,  120, 151,  152, 183,  184, 215,  216, 247,  248, 279,
2039   280, 311,  312, 343,  344, 375,  376, 407,  408, 439,  440, 471,  472, 503,
2040   504, 535,  536, 567,  568, 599,  600, 631,  632, 663,  664, 695,  696, 727,
2041   728, 759,  760, 791,  792, 823,  824, 855,  856, 887,  888, 919,  920, 951,
2042   952, 983,  984, 1015, 24,  24,   25,  56,   57,  88,   89,  120,  121, 152,
2043   153, 184,  185, 216,  217, 248,  249, 280,  281, 312,  313, 344,  345, 376,
2044   377, 408,  409, 440,  441, 472,  473, 504,  505, 536,  537, 568,  569, 600,
2045   601, 632,  633, 664,  665, 696,  697, 728,  729, 760,  761, 792,  793, 824,
2046   825, 856,  857, 888,  889, 920,  921, 952,  953, 984,  985, 1016, 25,  25,
2047   26,  57,   58,  89,   90,  121,  122, 153,  154, 185,  186, 217,  218, 249,
2048   250, 281,  282, 313,  314, 345,  346, 377,  378, 409,  410, 441,  442, 473,
2049   474, 505,  506, 537,  538, 569,  570, 601,  602, 633,  634, 665,  666, 697,
2050   698, 729,  730, 761,  762, 793,  794, 825,  826, 857,  858, 889,  890, 921,
2051   922, 953,  954, 985,  986, 1017, 26,  26,   27,  58,   59,  90,   91,  122,
2052   123, 154,  155, 186,  187, 218,  219, 250,  251, 282,  283, 314,  315, 346,
2053   347, 378,  379, 410,  411, 442,  443, 474,  475, 506,  507, 538,  539, 570,
2054   571, 602,  603, 634,  635, 666,  667, 698,  699, 730,  731, 762,  763, 794,
2055   795, 826,  827, 858,  859, 890,  891, 922,  923, 954,  955, 986,  987, 1018,
2056   27,  27,   28,  59,   60,  91,   92,  123,  124, 155,  156, 187,  188, 219,
2057   220, 251,  252, 283,  284, 315,  316, 347,  348, 379,  380, 411,  412, 443,
2058   444, 475,  476, 507,  508, 539,  540, 571,  572, 603,  604, 635,  636, 667,
2059   668, 699,  700, 731,  732, 763,  764, 795,  796, 827,  828, 859,  860, 891,
2060   892, 923,  924, 955,  956, 987,  988, 1019, 28,  28,   29,  60,   61,  92,
2061   93,  124,  125, 156,  157, 188,  189, 220,  221, 252,  253, 284,  285, 316,
2062   317, 348,  349, 380,  381, 412,  413, 444,  445, 476,  477, 508,  509, 540,
2063   541, 572,  573, 604,  605, 636,  637, 668,  669, 700,  701, 732,  733, 764,
2064   765, 796,  797, 828,  829, 860,  861, 892,  893, 924,  925, 956,  957, 988,
2065   989, 1020, 29,  29,   30,  61,   62,  93,   94,  125,  126, 157,  158, 189,
2066   190, 221,  222, 253,  254, 285,  286, 317,  318, 349,  350, 381,  382, 413,
2067   414, 445,  446, 477,  478, 509,  510, 541,  542, 573,  574, 605,  606, 637,
2068   638, 669,  670, 701,  702, 733,  734, 765,  766, 797,  798, 829,  830, 861,
2069   862, 893,  894, 925,  926, 957,  958, 989,  990, 1021, 30,  30,   31,  62,
2070   63,  94,   95,  126,  127, 158,  159, 190,  191, 222,  223, 254,  255, 286,
2071   287, 318,  319, 350,  351, 382,  383, 414,  415, 446,  447, 478,  479, 510,
2072   511, 542,  543, 574,  575, 606,  607, 638,  639, 670,  671, 702,  703, 734,
2073   735, 766,  767, 798,  799, 830,  831, 862,  863, 894,  895, 926,  927, 958,
2074   959, 990,  991, 1022, 0,   0,
2075 };
2076 
2077 DECLARE_ALIGNED(16, static const int16_t,
2078                 mrow_scan_32x32_neighbors[1025 * MAX_NEIGHBORS]) = {
2079   0,   0,    0,   0,    1,   1,    2,   2,    3,   3,    4,   4,    5,   5,
2080   6,   6,    7,   7,    8,   8,    9,   9,    10,  10,   11,  11,   12,  12,
2081   13,  13,   14,  14,   15,  15,   16,  16,   17,  17,   18,  18,   19,  19,
2082   20,  20,   21,  21,   22,  22,   23,  23,   24,  24,   25,  25,   26,  26,
2083   27,  27,   28,  28,   29,  29,   30,  30,   0,   0,    1,   32,   2,   33,
2084   3,   34,   4,   35,   5,   36,   6,   37,   7,   38,   8,   39,   9,   40,
2085   10,  41,   11,  42,   12,  43,   13,  44,   14,  45,   15,  46,   16,  47,
2086   17,  48,   18,  49,   19,  50,   20,  51,   21,  52,   22,  53,   23,  54,
2087   24,  55,   25,  56,   26,  57,   27,  58,   28,  59,   29,  60,   30,  61,
2088   31,  62,   32,  32,   33,  64,   34,  65,   35,  66,   36,  67,   37,  68,
2089   38,  69,   39,  70,   40,  71,   41,  72,   42,  73,   43,  74,   44,  75,
2090   45,  76,   46,  77,   47,  78,   48,  79,   49,  80,   50,  81,   51,  82,
2091   52,  83,   53,  84,   54,  85,   55,  86,   56,  87,   57,  88,   58,  89,
2092   59,  90,   60,  91,   61,  92,   62,  93,   63,  94,   64,  64,   65,  96,
2093   66,  97,   67,  98,   68,  99,   69,  100,  70,  101,  71,  102,  72,  103,
2094   73,  104,  74,  105,  75,  106,  76,  107,  77,  108,  78,  109,  79,  110,
2095   80,  111,  81,  112,  82,  113,  83,  114,  84,  115,  85,  116,  86,  117,
2096   87,  118,  88,  119,  89,  120,  90,  121,  91,  122,  92,  123,  93,  124,
2097   94,  125,  95,  126,  96,  96,   97,  128,  98,  129,  99,  130,  100, 131,
2098   101, 132,  102, 133,  103, 134,  104, 135,  105, 136,  106, 137,  107, 138,
2099   108, 139,  109, 140,  110, 141,  111, 142,  112, 143,  113, 144,  114, 145,
2100   115, 146,  116, 147,  117, 148,  118, 149,  119, 150,  120, 151,  121, 152,
2101   122, 153,  123, 154,  124, 155,  125, 156,  126, 157,  127, 158,  128, 128,
2102   129, 160,  130, 161,  131, 162,  132, 163,  133, 164,  134, 165,  135, 166,
2103   136, 167,  137, 168,  138, 169,  139, 170,  140, 171,  141, 172,  142, 173,
2104   143, 174,  144, 175,  145, 176,  146, 177,  147, 178,  148, 179,  149, 180,
2105   150, 181,  151, 182,  152, 183,  153, 184,  154, 185,  155, 186,  156, 187,
2106   157, 188,  158, 189,  159, 190,  160, 160,  161, 192,  162, 193,  163, 194,
2107   164, 195,  165, 196,  166, 197,  167, 198,  168, 199,  169, 200,  170, 201,
2108   171, 202,  172, 203,  173, 204,  174, 205,  175, 206,  176, 207,  177, 208,
2109   178, 209,  179, 210,  180, 211,  181, 212,  182, 213,  183, 214,  184, 215,
2110   185, 216,  186, 217,  187, 218,  188, 219,  189, 220,  190, 221,  191, 222,
2111   192, 192,  193, 224,  194, 225,  195, 226,  196, 227,  197, 228,  198, 229,
2112   199, 230,  200, 231,  201, 232,  202, 233,  203, 234,  204, 235,  205, 236,
2113   206, 237,  207, 238,  208, 239,  209, 240,  210, 241,  211, 242,  212, 243,
2114   213, 244,  214, 245,  215, 246,  216, 247,  217, 248,  218, 249,  219, 250,
2115   220, 251,  221, 252,  222, 253,  223, 254,  224, 224,  225, 256,  226, 257,
2116   227, 258,  228, 259,  229, 260,  230, 261,  231, 262,  232, 263,  233, 264,
2117   234, 265,  235, 266,  236, 267,  237, 268,  238, 269,  239, 270,  240, 271,
2118   241, 272,  242, 273,  243, 274,  244, 275,  245, 276,  246, 277,  247, 278,
2119   248, 279,  249, 280,  250, 281,  251, 282,  252, 283,  253, 284,  254, 285,
2120   255, 286,  256, 256,  257, 288,  258, 289,  259, 290,  260, 291,  261, 292,
2121   262, 293,  263, 294,  264, 295,  265, 296,  266, 297,  267, 298,  268, 299,
2122   269, 300,  270, 301,  271, 302,  272, 303,  273, 304,  274, 305,  275, 306,
2123   276, 307,  277, 308,  278, 309,  279, 310,  280, 311,  281, 312,  282, 313,
2124   283, 314,  284, 315,  285, 316,  286, 317,  287, 318,  288, 288,  289, 320,
2125   290, 321,  291, 322,  292, 323,  293, 324,  294, 325,  295, 326,  296, 327,
2126   297, 328,  298, 329,  299, 330,  300, 331,  301, 332,  302, 333,  303, 334,
2127   304, 335,  305, 336,  306, 337,  307, 338,  308, 339,  309, 340,  310, 341,
2128   311, 342,  312, 343,  313, 344,  314, 345,  315, 346,  316, 347,  317, 348,
2129   318, 349,  319, 350,  320, 320,  321, 352,  322, 353,  323, 354,  324, 355,
2130   325, 356,  326, 357,  327, 358,  328, 359,  329, 360,  330, 361,  331, 362,
2131   332, 363,  333, 364,  334, 365,  335, 366,  336, 367,  337, 368,  338, 369,
2132   339, 370,  340, 371,  341, 372,  342, 373,  343, 374,  344, 375,  345, 376,
2133   346, 377,  347, 378,  348, 379,  349, 380,  350, 381,  351, 382,  352, 352,
2134   353, 384,  354, 385,  355, 386,  356, 387,  357, 388,  358, 389,  359, 390,
2135   360, 391,  361, 392,  362, 393,  363, 394,  364, 395,  365, 396,  366, 397,
2136   367, 398,  368, 399,  369, 400,  370, 401,  371, 402,  372, 403,  373, 404,
2137   374, 405,  375, 406,  376, 407,  377, 408,  378, 409,  379, 410,  380, 411,
2138   381, 412,  382, 413,  383, 414,  384, 384,  385, 416,  386, 417,  387, 418,
2139   388, 419,  389, 420,  390, 421,  391, 422,  392, 423,  393, 424,  394, 425,
2140   395, 426,  396, 427,  397, 428,  398, 429,  399, 430,  400, 431,  401, 432,
2141   402, 433,  403, 434,  404, 435,  405, 436,  406, 437,  407, 438,  408, 439,
2142   409, 440,  410, 441,  411, 442,  412, 443,  413, 444,  414, 445,  415, 446,
2143   416, 416,  417, 448,  418, 449,  419, 450,  420, 451,  421, 452,  422, 453,
2144   423, 454,  424, 455,  425, 456,  426, 457,  427, 458,  428, 459,  429, 460,
2145   430, 461,  431, 462,  432, 463,  433, 464,  434, 465,  435, 466,  436, 467,
2146   437, 468,  438, 469,  439, 470,  440, 471,  441, 472,  442, 473,  443, 474,
2147   444, 475,  445, 476,  446, 477,  447, 478,  448, 448,  449, 480,  450, 481,
2148   451, 482,  452, 483,  453, 484,  454, 485,  455, 486,  456, 487,  457, 488,
2149   458, 489,  459, 490,  460, 491,  461, 492,  462, 493,  463, 494,  464, 495,
2150   465, 496,  466, 497,  467, 498,  468, 499,  469, 500,  470, 501,  471, 502,
2151   472, 503,  473, 504,  474, 505,  475, 506,  476, 507,  477, 508,  478, 509,
2152   479, 510,  480, 480,  481, 512,  482, 513,  483, 514,  484, 515,  485, 516,
2153   486, 517,  487, 518,  488, 519,  489, 520,  490, 521,  491, 522,  492, 523,
2154   493, 524,  494, 525,  495, 526,  496, 527,  497, 528,  498, 529,  499, 530,
2155   500, 531,  501, 532,  502, 533,  503, 534,  504, 535,  505, 536,  506, 537,
2156   507, 538,  508, 539,  509, 540,  510, 541,  511, 542,  512, 512,  513, 544,
2157   514, 545,  515, 546,  516, 547,  517, 548,  518, 549,  519, 550,  520, 551,
2158   521, 552,  522, 553,  523, 554,  524, 555,  525, 556,  526, 557,  527, 558,
2159   528, 559,  529, 560,  530, 561,  531, 562,  532, 563,  533, 564,  534, 565,
2160   535, 566,  536, 567,  537, 568,  538, 569,  539, 570,  540, 571,  541, 572,
2161   542, 573,  543, 574,  544, 544,  545, 576,  546, 577,  547, 578,  548, 579,
2162   549, 580,  550, 581,  551, 582,  552, 583,  553, 584,  554, 585,  555, 586,
2163   556, 587,  557, 588,  558, 589,  559, 590,  560, 591,  561, 592,  562, 593,
2164   563, 594,  564, 595,  565, 596,  566, 597,  567, 598,  568, 599,  569, 600,
2165   570, 601,  571, 602,  572, 603,  573, 604,  574, 605,  575, 606,  576, 576,
2166   577, 608,  578, 609,  579, 610,  580, 611,  581, 612,  582, 613,  583, 614,
2167   584, 615,  585, 616,  586, 617,  587, 618,  588, 619,  589, 620,  590, 621,
2168   591, 622,  592, 623,  593, 624,  594, 625,  595, 626,  596, 627,  597, 628,
2169   598, 629,  599, 630,  600, 631,  601, 632,  602, 633,  603, 634,  604, 635,
2170   605, 636,  606, 637,  607, 638,  608, 608,  609, 640,  610, 641,  611, 642,
2171   612, 643,  613, 644,  614, 645,  615, 646,  616, 647,  617, 648,  618, 649,
2172   619, 650,  620, 651,  621, 652,  622, 653,  623, 654,  624, 655,  625, 656,
2173   626, 657,  627, 658,  628, 659,  629, 660,  630, 661,  631, 662,  632, 663,
2174   633, 664,  634, 665,  635, 666,  636, 667,  637, 668,  638, 669,  639, 670,
2175   640, 640,  641, 672,  642, 673,  643, 674,  644, 675,  645, 676,  646, 677,
2176   647, 678,  648, 679,  649, 680,  650, 681,  651, 682,  652, 683,  653, 684,
2177   654, 685,  655, 686,  656, 687,  657, 688,  658, 689,  659, 690,  660, 691,
2178   661, 692,  662, 693,  663, 694,  664, 695,  665, 696,  666, 697,  667, 698,
2179   668, 699,  669, 700,  670, 701,  671, 702,  672, 672,  673, 704,  674, 705,
2180   675, 706,  676, 707,  677, 708,  678, 709,  679, 710,  680, 711,  681, 712,
2181   682, 713,  683, 714,  684, 715,  685, 716,  686, 717,  687, 718,  688, 719,
2182   689, 720,  690, 721,  691, 722,  692, 723,  693, 724,  694, 725,  695, 726,
2183   696, 727,  697, 728,  698, 729,  699, 730,  700, 731,  701, 732,  702, 733,
2184   703, 734,  704, 704,  705, 736,  706, 737,  707, 738,  708, 739,  709, 740,
2185   710, 741,  711, 742,  712, 743,  713, 744,  714, 745,  715, 746,  716, 747,
2186   717, 748,  718, 749,  719, 750,  720, 751,  721, 752,  722, 753,  723, 754,
2187   724, 755,  725, 756,  726, 757,  727, 758,  728, 759,  729, 760,  730, 761,
2188   731, 762,  732, 763,  733, 764,  734, 765,  735, 766,  736, 736,  737, 768,
2189   738, 769,  739, 770,  740, 771,  741, 772,  742, 773,  743, 774,  744, 775,
2190   745, 776,  746, 777,  747, 778,  748, 779,  749, 780,  750, 781,  751, 782,
2191   752, 783,  753, 784,  754, 785,  755, 786,  756, 787,  757, 788,  758, 789,
2192   759, 790,  760, 791,  761, 792,  762, 793,  763, 794,  764, 795,  765, 796,
2193   766, 797,  767, 798,  768, 768,  769, 800,  770, 801,  771, 802,  772, 803,
2194   773, 804,  774, 805,  775, 806,  776, 807,  777, 808,  778, 809,  779, 810,
2195   780, 811,  781, 812,  782, 813,  783, 814,  784, 815,  785, 816,  786, 817,
2196   787, 818,  788, 819,  789, 820,  790, 821,  791, 822,  792, 823,  793, 824,
2197   794, 825,  795, 826,  796, 827,  797, 828,  798, 829,  799, 830,  800, 800,
2198   801, 832,  802, 833,  803, 834,  804, 835,  805, 836,  806, 837,  807, 838,
2199   808, 839,  809, 840,  810, 841,  811, 842,  812, 843,  813, 844,  814, 845,
2200   815, 846,  816, 847,  817, 848,  818, 849,  819, 850,  820, 851,  821, 852,
2201   822, 853,  823, 854,  824, 855,  825, 856,  826, 857,  827, 858,  828, 859,
2202   829, 860,  830, 861,  831, 862,  832, 832,  833, 864,  834, 865,  835, 866,
2203   836, 867,  837, 868,  838, 869,  839, 870,  840, 871,  841, 872,  842, 873,
2204   843, 874,  844, 875,  845, 876,  846, 877,  847, 878,  848, 879,  849, 880,
2205   850, 881,  851, 882,  852, 883,  853, 884,  854, 885,  855, 886,  856, 887,
2206   857, 888,  858, 889,  859, 890,  860, 891,  861, 892,  862, 893,  863, 894,
2207   864, 864,  865, 896,  866, 897,  867, 898,  868, 899,  869, 900,  870, 901,
2208   871, 902,  872, 903,  873, 904,  874, 905,  875, 906,  876, 907,  877, 908,
2209   878, 909,  879, 910,  880, 911,  881, 912,  882, 913,  883, 914,  884, 915,
2210   885, 916,  886, 917,  887, 918,  888, 919,  889, 920,  890, 921,  891, 922,
2211   892, 923,  893, 924,  894, 925,  895, 926,  896, 896,  897, 928,  898, 929,
2212   899, 930,  900, 931,  901, 932,  902, 933,  903, 934,  904, 935,  905, 936,
2213   906, 937,  907, 938,  908, 939,  909, 940,  910, 941,  911, 942,  912, 943,
2214   913, 944,  914, 945,  915, 946,  916, 947,  917, 948,  918, 949,  919, 950,
2215   920, 951,  921, 952,  922, 953,  923, 954,  924, 955,  925, 956,  926, 957,
2216   927, 958,  928, 928,  929, 960,  930, 961,  931, 962,  932, 963,  933, 964,
2217   934, 965,  935, 966,  936, 967,  937, 968,  938, 969,  939, 970,  940, 971,
2218   941, 972,  942, 973,  943, 974,  944, 975,  945, 976,  946, 977,  947, 978,
2219   948, 979,  949, 980,  950, 981,  951, 982,  952, 983,  953, 984,  954, 985,
2220   955, 986,  956, 987,  957, 988,  958, 989,  959, 990,  960, 960,  961, 992,
2221   962, 993,  963, 994,  964, 995,  965, 996,  966, 997,  967, 998,  968, 999,
2222   969, 1000, 970, 1001, 971, 1002, 972, 1003, 973, 1004, 974, 1005, 975, 1006,
2223   976, 1007, 977, 1008, 978, 1009, 979, 1010, 980, 1011, 981, 1012, 982, 1013,
2224   983, 1014, 984, 1015, 985, 1016, 986, 1017, 987, 1018, 988, 1019, 989, 1020,
2225   990, 1021, 991, 1022, 0,   0,
2226 };
2227 
2228 DECLARE_ALIGNED(16, static const int16_t,
2229                 default_scan_32x32_neighbors[1025 * MAX_NEIGHBORS]) = {
2230   0,   0,    0,   0,    0,   0,    32,  32,   1,   32,  1,   1,    2,   2,
2231   2,   33,   33,  64,   64,  64,   96,  96,   65,  96,  34,  65,   3,   34,
2232   3,   3,    4,   4,    4,   35,   35,  66,   66,  97,  97,  128,  128, 128,
2233   160, 160,  129, 160,  98,  129,  67,  98,   36,  67,  5,   36,   5,   5,
2234   6,   6,    6,   37,   37,  68,   68,  99,   99,  130, 130, 161,  161, 192,
2235   192, 192,  224, 224,  193, 224,  162, 193,  131, 162, 100, 131,  69,  100,
2236   38,  69,   7,   38,   7,   7,    8,   8,    8,   39,  39,  70,   70,  101,
2237   101, 132,  132, 163,  163, 194,  194, 225,  225, 256, 256, 256,  288, 288,
2238   257, 288,  226, 257,  195, 226,  164, 195,  133, 164, 102, 133,  71,  102,
2239   40,  71,   9,   40,   9,   9,    10,  10,   10,  41,  41,  72,   72,  103,
2240   103, 134,  134, 165,  165, 196,  196, 227,  227, 258, 258, 289,  289, 320,
2241   320, 320,  352, 352,  321, 352,  290, 321,  259, 290, 228, 259,  197, 228,
2242   166, 197,  135, 166,  104, 135,  73,  104,  42,  73,  11,  42,   11,  11,
2243   12,  12,   12,  43,   43,  74,   74,  105,  105, 136, 136, 167,  167, 198,
2244   198, 229,  229, 260,  260, 291,  291, 322,  322, 353, 353, 384,  384, 384,
2245   416, 416,  385, 416,  354, 385,  323, 354,  292, 323, 261, 292,  230, 261,
2246   199, 230,  168, 199,  137, 168,  106, 137,  75,  106, 44,  75,   13,  44,
2247   13,  13,   14,  14,   14,  45,   45,  76,   76,  107, 107, 138,  138, 169,
2248   169, 200,  200, 231,  231, 262,  262, 293,  293, 324, 324, 355,  355, 386,
2249   386, 417,  417, 448,  448, 448,  480, 480,  449, 480, 418, 449,  387, 418,
2250   356, 387,  325, 356,  294, 325,  263, 294,  232, 263, 201, 232,  170, 201,
2251   139, 170,  108, 139,  77,  108,  46,  77,   15,  46,  15,  15,   16,  16,
2252   16,  47,   47,  78,   78,  109,  109, 140,  140, 171, 171, 202,  202, 233,
2253   233, 264,  264, 295,  295, 326,  326, 357,  357, 388, 388, 419,  419, 450,
2254   450, 481,  481, 512,  512, 512,  544, 544,  513, 544, 482, 513,  451, 482,
2255   420, 451,  389, 420,  358, 389,  327, 358,  296, 327, 265, 296,  234, 265,
2256   203, 234,  172, 203,  141, 172,  110, 141,  79,  110, 48,  79,   17,  48,
2257   17,  17,   18,  18,   18,  49,   49,  80,   80,  111, 111, 142,  142, 173,
2258   173, 204,  204, 235,  235, 266,  266, 297,  297, 328, 328, 359,  359, 390,
2259   390, 421,  421, 452,  452, 483,  483, 514,  514, 545, 545, 576,  576, 576,
2260   608, 608,  577, 608,  546, 577,  515, 546,  484, 515, 453, 484,  422, 453,
2261   391, 422,  360, 391,  329, 360,  298, 329,  267, 298, 236, 267,  205, 236,
2262   174, 205,  143, 174,  112, 143,  81,  112,  50,  81,  19,  50,   19,  19,
2263   20,  20,   20,  51,   51,  82,   82,  113,  113, 144, 144, 175,  175, 206,
2264   206, 237,  237, 268,  268, 299,  299, 330,  330, 361, 361, 392,  392, 423,
2265   423, 454,  454, 485,  485, 516,  516, 547,  547, 578, 578, 609,  609, 640,
2266   640, 640,  672, 672,  641, 672,  610, 641,  579, 610, 548, 579,  517, 548,
2267   486, 517,  455, 486,  424, 455,  393, 424,  362, 393, 331, 362,  300, 331,
2268   269, 300,  238, 269,  207, 238,  176, 207,  145, 176, 114, 145,  83,  114,
2269   52,  83,   21,  52,   21,  21,   22,  22,   22,  53,  53,  84,   84,  115,
2270   115, 146,  146, 177,  177, 208,  208, 239,  239, 270, 270, 301,  301, 332,
2271   332, 363,  363, 394,  394, 425,  425, 456,  456, 487, 487, 518,  518, 549,
2272   549, 580,  580, 611,  611, 642,  642, 673,  673, 704, 704, 704,  736, 736,
2273   705, 736,  674, 705,  643, 674,  612, 643,  581, 612, 550, 581,  519, 550,
2274   488, 519,  457, 488,  426, 457,  395, 426,  364, 395, 333, 364,  302, 333,
2275   271, 302,  240, 271,  209, 240,  178, 209,  147, 178, 116, 147,  85,  116,
2276   54,  85,   23,  54,   23,  23,   24,  24,   24,  55,  55,  86,   86,  117,
2277   117, 148,  148, 179,  179, 210,  210, 241,  241, 272, 272, 303,  303, 334,
2278   334, 365,  365, 396,  396, 427,  427, 458,  458, 489, 489, 520,  520, 551,
2279   551, 582,  582, 613,  613, 644,  644, 675,  675, 706, 706, 737,  737, 768,
2280   768, 768,  800, 800,  769, 800,  738, 769,  707, 738, 676, 707,  645, 676,
2281   614, 645,  583, 614,  552, 583,  521, 552,  490, 521, 459, 490,  428, 459,
2282   397, 428,  366, 397,  335, 366,  304, 335,  273, 304, 242, 273,  211, 242,
2283   180, 211,  149, 180,  118, 149,  87,  118,  56,  87,  25,  56,   25,  25,
2284   26,  26,   26,  57,   57,  88,   88,  119,  119, 150, 150, 181,  181, 212,
2285   212, 243,  243, 274,  274, 305,  305, 336,  336, 367, 367, 398,  398, 429,
2286   429, 460,  460, 491,  491, 522,  522, 553,  553, 584, 584, 615,  615, 646,
2287   646, 677,  677, 708,  708, 739,  739, 770,  770, 801, 801, 832,  832, 832,
2288   864, 864,  833, 864,  802, 833,  771, 802,  740, 771, 709, 740,  678, 709,
2289   647, 678,  616, 647,  585, 616,  554, 585,  523, 554, 492, 523,  461, 492,
2290   430, 461,  399, 430,  368, 399,  337, 368,  306, 337, 275, 306,  244, 275,
2291   213, 244,  182, 213,  151, 182,  120, 151,  89,  120, 58,  89,   27,  58,
2292   27,  27,   28,  28,   28,  59,   59,  90,   90,  121, 121, 152,  152, 183,
2293   183, 214,  214, 245,  245, 276,  276, 307,  307, 338, 338, 369,  369, 400,
2294   400, 431,  431, 462,  462, 493,  493, 524,  524, 555, 555, 586,  586, 617,
2295   617, 648,  648, 679,  679, 710,  710, 741,  741, 772, 772, 803,  803, 834,
2296   834, 865,  865, 896,  896, 896,  928, 928,  897, 928, 866, 897,  835, 866,
2297   804, 835,  773, 804,  742, 773,  711, 742,  680, 711, 649, 680,  618, 649,
2298   587, 618,  556, 587,  525, 556,  494, 525,  463, 494, 432, 463,  401, 432,
2299   370, 401,  339, 370,  308, 339,  277, 308,  246, 277, 215, 246,  184, 215,
2300   153, 184,  122, 153,  91,  122,  60,  91,   29,  60,  29,  29,   30,  30,
2301   30,  61,   61,  92,   92,  123,  123, 154,  154, 185, 185, 216,  216, 247,
2302   247, 278,  278, 309,  309, 340,  340, 371,  371, 402, 402, 433,  433, 464,
2303   464, 495,  495, 526,  526, 557,  557, 588,  588, 619, 619, 650,  650, 681,
2304   681, 712,  712, 743,  743, 774,  774, 805,  805, 836, 836, 867,  867, 898,
2305   898, 929,  929, 960,  960, 960,  961, 992,  930, 961, 899, 930,  868, 899,
2306   837, 868,  806, 837,  775, 806,  744, 775,  713, 744, 682, 713,  651, 682,
2307   620, 651,  589, 620,  558, 589,  527, 558,  496, 527, 465, 496,  434, 465,
2308   403, 434,  372, 403,  341, 372,  310, 341,  279, 310, 248, 279,  217, 248,
2309   186, 217,  155, 186,  124, 155,  93,  124,  62,  93,  31,  62,   63,  94,
2310   94,  125,  125, 156,  156, 187,  187, 218,  218, 249, 249, 280,  280, 311,
2311   311, 342,  342, 373,  373, 404,  404, 435,  435, 466, 466, 497,  497, 528,
2312   528, 559,  559, 590,  590, 621,  621, 652,  652, 683, 683, 714,  714, 745,
2313   745, 776,  776, 807,  807, 838,  838, 869,  869, 900, 900, 931,  931, 962,
2314   962, 993,  963, 994,  932, 963,  901, 932,  870, 901, 839, 870,  808, 839,
2315   777, 808,  746, 777,  715, 746,  684, 715,  653, 684, 622, 653,  591, 622,
2316   560, 591,  529, 560,  498, 529,  467, 498,  436, 467, 405, 436,  374, 405,
2317   343, 374,  312, 343,  281, 312,  250, 281,  219, 250, 188, 219,  157, 188,
2318   126, 157,  95,  126,  127, 158,  158, 189,  189, 220, 220, 251,  251, 282,
2319   282, 313,  313, 344,  344, 375,  375, 406,  406, 437, 437, 468,  468, 499,
2320   499, 530,  530, 561,  561, 592,  592, 623,  623, 654, 654, 685,  685, 716,
2321   716, 747,  747, 778,  778, 809,  809, 840,  840, 871, 871, 902,  902, 933,
2322   933, 964,  964, 995,  965, 996,  934, 965,  903, 934, 872, 903,  841, 872,
2323   810, 841,  779, 810,  748, 779,  717, 748,  686, 717, 655, 686,  624, 655,
2324   593, 624,  562, 593,  531, 562,  500, 531,  469, 500, 438, 469,  407, 438,
2325   376, 407,  345, 376,  314, 345,  283, 314,  252, 283, 221, 252,  190, 221,
2326   159, 190,  191, 222,  222, 253,  253, 284,  284, 315, 315, 346,  346, 377,
2327   377, 408,  408, 439,  439, 470,  470, 501,  501, 532, 532, 563,  563, 594,
2328   594, 625,  625, 656,  656, 687,  687, 718,  718, 749, 749, 780,  780, 811,
2329   811, 842,  842, 873,  873, 904,  904, 935,  935, 966, 966, 997,  967, 998,
2330   936, 967,  905, 936,  874, 905,  843, 874,  812, 843, 781, 812,  750, 781,
2331   719, 750,  688, 719,  657, 688,  626, 657,  595, 626, 564, 595,  533, 564,
2332   502, 533,  471, 502,  440, 471,  409, 440,  378, 409, 347, 378,  316, 347,
2333   285, 316,  254, 285,  223, 254,  255, 286,  286, 317, 317, 348,  348, 379,
2334   379, 410,  410, 441,  441, 472,  472, 503,  503, 534, 534, 565,  565, 596,
2335   596, 627,  627, 658,  658, 689,  689, 720,  720, 751, 751, 782,  782, 813,
2336   813, 844,  844, 875,  875, 906,  906, 937,  937, 968, 968, 999,  969, 1000,
2337   938, 969,  907, 938,  876, 907,  845, 876,  814, 845, 783, 814,  752, 783,
2338   721, 752,  690, 721,  659, 690,  628, 659,  597, 628, 566, 597,  535, 566,
2339   504, 535,  473, 504,  442, 473,  411, 442,  380, 411, 349, 380,  318, 349,
2340   287, 318,  319, 350,  350, 381,  381, 412,  412, 443, 443, 474,  474, 505,
2341   505, 536,  536, 567,  567, 598,  598, 629,  629, 660, 660, 691,  691, 722,
2342   722, 753,  753, 784,  784, 815,  815, 846,  846, 877, 877, 908,  908, 939,
2343   939, 970,  970, 1001, 971, 1002, 940, 971,  909, 940, 878, 909,  847, 878,
2344   816, 847,  785, 816,  754, 785,  723, 754,  692, 723, 661, 692,  630, 661,
2345   599, 630,  568, 599,  537, 568,  506, 537,  475, 506, 444, 475,  413, 444,
2346   382, 413,  351, 382,  383, 414,  414, 445,  445, 476, 476, 507,  507, 538,
2347   538, 569,  569, 600,  600, 631,  631, 662,  662, 693, 693, 724,  724, 755,
2348   755, 786,  786, 817,  817, 848,  848, 879,  879, 910, 910, 941,  941, 972,
2349   972, 1003, 973, 1004, 942, 973,  911, 942,  880, 911, 849, 880,  818, 849,
2350   787, 818,  756, 787,  725, 756,  694, 725,  663, 694, 632, 663,  601, 632,
2351   570, 601,  539, 570,  508, 539,  477, 508,  446, 477, 415, 446,  447, 478,
2352   478, 509,  509, 540,  540, 571,  571, 602,  602, 633, 633, 664,  664, 695,
2353   695, 726,  726, 757,  757, 788,  788, 819,  819, 850, 850, 881,  881, 912,
2354   912, 943,  943, 974,  974, 1005, 975, 1006, 944, 975, 913, 944,  882, 913,
2355   851, 882,  820, 851,  789, 820,  758, 789,  727, 758, 696, 727,  665, 696,
2356   634, 665,  603, 634,  572, 603,  541, 572,  510, 541, 479, 510,  511, 542,
2357   542, 573,  573, 604,  604, 635,  635, 666,  666, 697, 697, 728,  728, 759,
2358   759, 790,  790, 821,  821, 852,  852, 883,  883, 914, 914, 945,  945, 976,
2359   976, 1007, 977, 1008, 946, 977,  915, 946,  884, 915, 853, 884,  822, 853,
2360   791, 822,  760, 791,  729, 760,  698, 729,  667, 698, 636, 667,  605, 636,
2361   574, 605,  543, 574,  575, 606,  606, 637,  637, 668, 668, 699,  699, 730,
2362   730, 761,  761, 792,  792, 823,  823, 854,  854, 885, 885, 916,  916, 947,
2363   947, 978,  978, 1009, 979, 1010, 948, 979,  917, 948, 886, 917,  855, 886,
2364   824, 855,  793, 824,  762, 793,  731, 762,  700, 731, 669, 700,  638, 669,
2365   607, 638,  639, 670,  670, 701,  701, 732,  732, 763, 763, 794,  794, 825,
2366   825, 856,  856, 887,  887, 918,  918, 949,  949, 980, 980, 1011, 981, 1012,
2367   950, 981,  919, 950,  888, 919,  857, 888,  826, 857, 795, 826,  764, 795,
2368   733, 764,  702, 733,  671, 702,  703, 734,  734, 765, 765, 796,  796, 827,
2369   827, 858,  858, 889,  889, 920,  920, 951,  951, 982, 982, 1013, 983, 1014,
2370   952, 983,  921, 952,  890, 921,  859, 890,  828, 859, 797, 828,  766, 797,
2371   735, 766,  767, 798,  798, 829,  829, 860,  860, 891, 891, 922,  922, 953,
2372   953, 984,  984, 1015, 985, 1016, 954, 985,  923, 954, 892, 923,  861, 892,
2373   830, 861,  799, 830,  831, 862,  862, 893,  893, 924, 924, 955,  955, 986,
2374   986, 1017, 987, 1018, 956, 987,  925, 956,  894, 925, 863, 894,  895, 926,
2375   926, 957,  957, 988,  988, 1019, 989, 1020, 958, 989, 927, 958,  959, 990,
2376   990, 1021, 991, 1022, 0,   0
2377 };
2378 
2379 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_4x4[16]) = {
2380   0, 1, 5, 6, 2, 4, 7, 12, 3, 8, 11, 13, 9, 10, 14, 15
2381 };
2382 
2383 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_4x4[16]) = {
2384   0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15,
2385 };
2386 
2387 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_4x4[16]) = {
2388   0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
2389 };
2390 
2391 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_4x8[32]) = {
2392   0,  1,  3,  6,  2,  4,  7,  10, 5,  8,  11, 14, 9,  12, 15, 18,
2393   13, 16, 19, 22, 17, 20, 23, 26, 21, 24, 27, 29, 25, 28, 30, 31,
2394 };
2395 
2396 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_4x8[32]) = {
2397   0, 8,  16, 24, 1, 9,  17, 25, 2, 10, 18, 26, 3, 11, 19, 27,
2398   4, 12, 20, 28, 5, 13, 21, 29, 6, 14, 22, 30, 7, 15, 23, 31,
2399 };
2400 
2401 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_4x8[32]) = {
2402   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
2403   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
2404 };
2405 
2406 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_8x4[32]) = {
2407   0, 2, 5,  9,  13, 17, 21, 25, 1, 4,  8,  12, 16, 20, 24, 28,
2408   3, 7, 11, 15, 19, 23, 27, 30, 6, 10, 14, 18, 22, 26, 29, 31,
2409 };
2410 
2411 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_8x4[32]) = {
2412   0, 4, 8,  12, 16, 20, 24, 28, 1, 5, 9,  13, 17, 21, 25, 29,
2413   2, 6, 10, 14, 18, 22, 26, 30, 3, 7, 11, 15, 19, 23, 27, 31,
2414 };
2415 
2416 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_8x4[32]) = {
2417   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
2418   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
2419 };
2420 
2421 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_4x16[64]) = {
2422   0,  1,  3,  6,  2,  4,  7,  10, 5,  8,  11, 14, 9,  12, 15, 18,
2423   13, 16, 19, 22, 17, 20, 23, 26, 21, 24, 27, 30, 25, 28, 31, 34,
2424   29, 32, 35, 38, 33, 36, 39, 42, 37, 40, 43, 46, 41, 44, 47, 50,
2425   45, 48, 51, 54, 49, 52, 55, 58, 53, 56, 59, 61, 57, 60, 62, 63,
2426 };
2427 
2428 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_16x4[64]) = {
2429   0, 2,  5,  9,  13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57,
2430   1, 4,  8,  12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60,
2431   3, 7,  11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 62,
2432   6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 61, 63,
2433 };
2434 
2435 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_4x16[64]) = {
2436   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
2437   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
2438   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
2439   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
2440 };
2441 
2442 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_16x4[64]) = {
2443   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
2444   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
2445   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
2446   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
2447 };
2448 
2449 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_4x16[64]) = {
2450   0,  16, 32, 48, 1,  17, 33, 49, 2,  18, 34, 50, 3,  19, 35, 51,
2451   4,  20, 36, 52, 5,  21, 37, 53, 6,  22, 38, 54, 7,  23, 39, 55,
2452   8,  24, 40, 56, 9,  25, 41, 57, 10, 26, 42, 58, 11, 27, 43, 59,
2453   12, 28, 44, 60, 13, 29, 45, 61, 14, 30, 46, 62, 15, 31, 47, 63,
2454 };
2455 
2456 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_16x4[64]) = {
2457   0, 4, 8,  12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60,
2458   1, 5, 9,  13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61,
2459   2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62,
2460   3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 63,
2461 };
2462 
2463 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_8x32[256]) = {
2464   0,   1,   3,   6,   10,  15,  21,  28,  2,   4,   7,   11,  16,  22,  29,
2465   36,  5,   8,   12,  17,  23,  30,  37,  44,  9,   13,  18,  24,  31,  38,
2466   45,  52,  14,  19,  25,  32,  39,  46,  53,  60,  20,  26,  33,  40,  47,
2467   54,  61,  68,  27,  34,  41,  48,  55,  62,  69,  76,  35,  42,  49,  56,
2468   63,  70,  77,  84,  43,  50,  57,  64,  71,  78,  85,  92,  51,  58,  65,
2469   72,  79,  86,  93,  100, 59,  66,  73,  80,  87,  94,  101, 108, 67,  74,
2470   81,  88,  95,  102, 109, 116, 75,  82,  89,  96,  103, 110, 117, 124, 83,
2471   90,  97,  104, 111, 118, 125, 132, 91,  98,  105, 112, 119, 126, 133, 140,
2472   99,  106, 113, 120, 127, 134, 141, 148, 107, 114, 121, 128, 135, 142, 149,
2473   156, 115, 122, 129, 136, 143, 150, 157, 164, 123, 130, 137, 144, 151, 158,
2474   165, 172, 131, 138, 145, 152, 159, 166, 173, 180, 139, 146, 153, 160, 167,
2475   174, 181, 188, 147, 154, 161, 168, 175, 182, 189, 196, 155, 162, 169, 176,
2476   183, 190, 197, 204, 163, 170, 177, 184, 191, 198, 205, 212, 171, 178, 185,
2477   192, 199, 206, 213, 220, 179, 186, 193, 200, 207, 214, 221, 228, 187, 194,
2478   201, 208, 215, 222, 229, 235, 195, 202, 209, 216, 223, 230, 236, 241, 203,
2479   210, 217, 224, 231, 237, 242, 246, 211, 218, 225, 232, 238, 243, 247, 250,
2480   219, 226, 233, 239, 244, 248, 251, 253, 227, 234, 240, 245, 249, 252, 254,
2481   255,
2482 };
2483 
2484 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_32x8[256]) = {
2485   0,   2,   5,   9,   14,  20,  27,  35,  43,  51,  59,  67,  75,  83,  91,
2486   99,  107, 115, 123, 131, 139, 147, 155, 163, 171, 179, 187, 195, 203, 211,
2487   219, 227, 1,   4,   8,   13,  19,  26,  34,  42,  50,  58,  66,  74,  82,
2488   90,  98,  106, 114, 122, 130, 138, 146, 154, 162, 170, 178, 186, 194, 202,
2489   210, 218, 226, 234, 3,   7,   12,  18,  25,  33,  41,  49,  57,  65,  73,
2490   81,  89,  97,  105, 113, 121, 129, 137, 145, 153, 161, 169, 177, 185, 193,
2491   201, 209, 217, 225, 233, 240, 6,   11,  17,  24,  32,  40,  48,  56,  64,
2492   72,  80,  88,  96,  104, 112, 120, 128, 136, 144, 152, 160, 168, 176, 184,
2493   192, 200, 208, 216, 224, 232, 239, 245, 10,  16,  23,  31,  39,  47,  55,
2494   63,  71,  79,  87,  95,  103, 111, 119, 127, 135, 143, 151, 159, 167, 175,
2495   183, 191, 199, 207, 215, 223, 231, 238, 244, 249, 15,  22,  30,  38,  46,
2496   54,  62,  70,  78,  86,  94,  102, 110, 118, 126, 134, 142, 150, 158, 166,
2497   174, 182, 190, 198, 206, 214, 222, 230, 237, 243, 248, 252, 21,  29,  37,
2498   45,  53,  61,  69,  77,  85,  93,  101, 109, 117, 125, 133, 141, 149, 157,
2499   165, 173, 181, 189, 197, 205, 213, 221, 229, 236, 242, 247, 251, 254, 28,
2500   36,  44,  52,  60,  68,  76,  84,  92,  100, 108, 116, 124, 132, 140, 148,
2501   156, 164, 172, 180, 188, 196, 204, 212, 220, 228, 235, 241, 246, 250, 253,
2502   255,
2503 };
2504 
2505 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_8x32[256]) = {
2506   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
2507   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
2508   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
2509   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
2510   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
2511   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
2512   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
2513   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
2514   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
2515   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
2516   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
2517   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
2518   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
2519   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
2520   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
2521   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
2522   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
2523   255,
2524 };
2525 
2526 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_32x8[256]) = {
2527   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
2528   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
2529   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
2530   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
2531   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
2532   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
2533   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
2534   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
2535   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
2536   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
2537   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
2538   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
2539   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
2540   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
2541   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
2542   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
2543   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
2544   255,
2545 };
2546 
2547 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_8x32[256]) = {
2548   0,  32, 64, 96,  128, 160, 192, 224, 1,  33, 65, 97,  129, 161, 193, 225,
2549   2,  34, 66, 98,  130, 162, 194, 226, 3,  35, 67, 99,  131, 163, 195, 227,
2550   4,  36, 68, 100, 132, 164, 196, 228, 5,  37, 69, 101, 133, 165, 197, 229,
2551   6,  38, 70, 102, 134, 166, 198, 230, 7,  39, 71, 103, 135, 167, 199, 231,
2552   8,  40, 72, 104, 136, 168, 200, 232, 9,  41, 73, 105, 137, 169, 201, 233,
2553   10, 42, 74, 106, 138, 170, 202, 234, 11, 43, 75, 107, 139, 171, 203, 235,
2554   12, 44, 76, 108, 140, 172, 204, 236, 13, 45, 77, 109, 141, 173, 205, 237,
2555   14, 46, 78, 110, 142, 174, 206, 238, 15, 47, 79, 111, 143, 175, 207, 239,
2556   16, 48, 80, 112, 144, 176, 208, 240, 17, 49, 81, 113, 145, 177, 209, 241,
2557   18, 50, 82, 114, 146, 178, 210, 242, 19, 51, 83, 115, 147, 179, 211, 243,
2558   20, 52, 84, 116, 148, 180, 212, 244, 21, 53, 85, 117, 149, 181, 213, 245,
2559   22, 54, 86, 118, 150, 182, 214, 246, 23, 55, 87, 119, 151, 183, 215, 247,
2560   24, 56, 88, 120, 152, 184, 216, 248, 25, 57, 89, 121, 153, 185, 217, 249,
2561   26, 58, 90, 122, 154, 186, 218, 250, 27, 59, 91, 123, 155, 187, 219, 251,
2562   28, 60, 92, 124, 156, 188, 220, 252, 29, 61, 93, 125, 157, 189, 221, 253,
2563   30, 62, 94, 126, 158, 190, 222, 254, 31, 63, 95, 127, 159, 191, 223, 255,
2564 };
2565 
2566 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_32x8[256]) = {
2567   0,   8,   16,  24,  32,  40,  48,  56,  64,  72,  80,  88,  96,  104, 112,
2568   120, 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232,
2569   240, 248, 1,   9,   17,  25,  33,  41,  49,  57,  65,  73,  81,  89,  97,
2570   105, 113, 121, 129, 137, 145, 153, 161, 169, 177, 185, 193, 201, 209, 217,
2571   225, 233, 241, 249, 2,   10,  18,  26,  34,  42,  50,  58,  66,  74,  82,
2572   90,  98,  106, 114, 122, 130, 138, 146, 154, 162, 170, 178, 186, 194, 202,
2573   210, 218, 226, 234, 242, 250, 3,   11,  19,  27,  35,  43,  51,  59,  67,
2574   75,  83,  91,  99,  107, 115, 123, 131, 139, 147, 155, 163, 171, 179, 187,
2575   195, 203, 211, 219, 227, 235, 243, 251, 4,   12,  20,  28,  36,  44,  52,
2576   60,  68,  76,  84,  92,  100, 108, 116, 124, 132, 140, 148, 156, 164, 172,
2577   180, 188, 196, 204, 212, 220, 228, 236, 244, 252, 5,   13,  21,  29,  37,
2578   45,  53,  61,  69,  77,  85,  93,  101, 109, 117, 125, 133, 141, 149, 157,
2579   165, 173, 181, 189, 197, 205, 213, 221, 229, 237, 245, 253, 6,   14,  22,
2580   30,  38,  46,  54,  62,  70,  78,  86,  94,  102, 110, 118, 126, 134, 142,
2581   150, 158, 166, 174, 182, 190, 198, 206, 214, 222, 230, 238, 246, 254, 7,
2582   15,  23,  31,  39,  47,  55,  63,  71,  79,  87,  95,  103, 111, 119, 127,
2583   135, 143, 151, 159, 167, 175, 183, 191, 199, 207, 215, 223, 231, 239, 247,
2584   255,
2585 };
2586 
2587 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_8x8[64]) = {
2588   0, 8,  16, 24, 32, 40, 48, 56, 1, 9,  17, 25, 33, 41, 49, 57,
2589   2, 10, 18, 26, 34, 42, 50, 58, 3, 11, 19, 27, 35, 43, 51, 59,
2590   4, 12, 20, 28, 36, 44, 52, 60, 5, 13, 21, 29, 37, 45, 53, 61,
2591   6, 14, 22, 30, 38, 46, 54, 62, 7, 15, 23, 31, 39, 47, 55, 63,
2592 };
2593 
2594 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_8x8[64]) = {
2595   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
2596   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
2597   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
2598   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
2599 };
2600 
2601 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_8x8[64]) = {
2602   0,  1,  5,  6,  14, 15, 27, 28, 2,  4,  7,  13, 16, 26, 29, 42,
2603   3,  8,  12, 17, 25, 30, 41, 43, 9,  11, 18, 24, 31, 40, 44, 53,
2604   10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60,
2605   21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63
2606 };
2607 
2608 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_8x16[128]) = {
2609   0,  1,  3,   6,   10,  15,  21,  28,  2,  4,   7,   11,  16,  22,  29,  36,
2610   5,  8,  12,  17,  23,  30,  37,  44,  9,  13,  18,  24,  31,  38,  45,  52,
2611   14, 19, 25,  32,  39,  46,  53,  60,  20, 26,  33,  40,  47,  54,  61,  68,
2612   27, 34, 41,  48,  55,  62,  69,  76,  35, 42,  49,  56,  63,  70,  77,  84,
2613   43, 50, 57,  64,  71,  78,  85,  92,  51, 58,  65,  72,  79,  86,  93,  100,
2614   59, 66, 73,  80,  87,  94,  101, 107, 67, 74,  81,  88,  95,  102, 108, 113,
2615   75, 82, 89,  96,  103, 109, 114, 118, 83, 90,  97,  104, 110, 115, 119, 122,
2616   91, 98, 105, 111, 116, 120, 123, 125, 99, 106, 112, 117, 121, 124, 126, 127,
2617 };
2618 
2619 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_16x8[128]) = {
2620   0,  2,  5,  9,  14, 20, 27, 35, 43, 51,  59,  67,  75,  83,  91,  99,
2621   1,  4,  8,  13, 19, 26, 34, 42, 50, 58,  66,  74,  82,  90,  98,  106,
2622   3,  7,  12, 18, 25, 33, 41, 49, 57, 65,  73,  81,  89,  97,  105, 112,
2623   6,  11, 17, 24, 32, 40, 48, 56, 64, 72,  80,  88,  96,  104, 111, 117,
2624   10, 16, 23, 31, 39, 47, 55, 63, 71, 79,  87,  95,  103, 110, 116, 121,
2625   15, 22, 30, 38, 46, 54, 62, 70, 78, 86,  94,  102, 109, 115, 120, 124,
2626   21, 29, 37, 45, 53, 61, 69, 77, 85, 93,  101, 108, 114, 119, 123, 126,
2627   28, 36, 44, 52, 60, 68, 76, 84, 92, 100, 107, 113, 118, 122, 125, 127,
2628 };
2629 
2630 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_8x16[128]) = {
2631   0,  16, 32, 48, 64, 80, 96,  112, 1,  17, 33, 49, 65, 81, 97,  113,
2632   2,  18, 34, 50, 66, 82, 98,  114, 3,  19, 35, 51, 67, 83, 99,  115,
2633   4,  20, 36, 52, 68, 84, 100, 116, 5,  21, 37, 53, 69, 85, 101, 117,
2634   6,  22, 38, 54, 70, 86, 102, 118, 7,  23, 39, 55, 71, 87, 103, 119,
2635   8,  24, 40, 56, 72, 88, 104, 120, 9,  25, 41, 57, 73, 89, 105, 121,
2636   10, 26, 42, 58, 74, 90, 106, 122, 11, 27, 43, 59, 75, 91, 107, 123,
2637   12, 28, 44, 60, 76, 92, 108, 124, 13, 29, 45, 61, 77, 93, 109, 125,
2638   14, 30, 46, 62, 78, 94, 110, 126, 15, 31, 47, 63, 79, 95, 111, 127,
2639 };
2640 
2641 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_16x8[128]) = {
2642   0, 8,  16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96,  104, 112, 120,
2643   1, 9,  17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97,  105, 113, 121,
2644   2, 10, 18, 26, 34, 42, 50, 58, 66, 74, 82, 90, 98,  106, 114, 122,
2645   3, 11, 19, 27, 35, 43, 51, 59, 67, 75, 83, 91, 99,  107, 115, 123,
2646   4, 12, 20, 28, 36, 44, 52, 60, 68, 76, 84, 92, 100, 108, 116, 124,
2647   5, 13, 21, 29, 37, 45, 53, 61, 69, 77, 85, 93, 101, 109, 117, 125,
2648   6, 14, 22, 30, 38, 46, 54, 62, 70, 78, 86, 94, 102, 110, 118, 126,
2649   7, 15, 23, 31, 39, 47, 55, 63, 71, 79, 87, 95, 103, 111, 119, 127,
2650 };
2651 
2652 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_8x16[128]) = {
2653   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
2654   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
2655   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
2656   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
2657   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
2658   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
2659   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
2660   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
2661   120, 121, 122, 123, 124, 125, 126, 127,
2662 };
2663 
2664 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_16x8[128]) = {
2665   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
2666   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
2667   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
2668   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
2669   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
2670   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
2671   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
2672   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
2673   120, 121, 122, 123, 124, 125, 126, 127,
2674 };
2675 
2676 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_16x32[512]) = {
2677   0,   1,   3,   6,   10,  15,  21,  28,  36,  45,  55,  66,  78,  91,  105,
2678   120, 2,   4,   7,   11,  16,  22,  29,  37,  46,  56,  67,  79,  92,  106,
2679   121, 136, 5,   8,   12,  17,  23,  30,  38,  47,  57,  68,  80,  93,  107,
2680   122, 137, 152, 9,   13,  18,  24,  31,  39,  48,  58,  69,  81,  94,  108,
2681   123, 138, 153, 168, 14,  19,  25,  32,  40,  49,  59,  70,  82,  95,  109,
2682   124, 139, 154, 169, 184, 20,  26,  33,  41,  50,  60,  71,  83,  96,  110,
2683   125, 140, 155, 170, 185, 200, 27,  34,  42,  51,  61,  72,  84,  97,  111,
2684   126, 141, 156, 171, 186, 201, 216, 35,  43,  52,  62,  73,  85,  98,  112,
2685   127, 142, 157, 172, 187, 202, 217, 232, 44,  53,  63,  74,  86,  99,  113,
2686   128, 143, 158, 173, 188, 203, 218, 233, 248, 54,  64,  75,  87,  100, 114,
2687   129, 144, 159, 174, 189, 204, 219, 234, 249, 264, 65,  76,  88,  101, 115,
2688   130, 145, 160, 175, 190, 205, 220, 235, 250, 265, 280, 77,  89,  102, 116,
2689   131, 146, 161, 176, 191, 206, 221, 236, 251, 266, 281, 296, 90,  103, 117,
2690   132, 147, 162, 177, 192, 207, 222, 237, 252, 267, 282, 297, 312, 104, 118,
2691   133, 148, 163, 178, 193, 208, 223, 238, 253, 268, 283, 298, 313, 328, 119,
2692   134, 149, 164, 179, 194, 209, 224, 239, 254, 269, 284, 299, 314, 329, 344,
2693   135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 285, 300, 315, 330, 345,
2694   360, 151, 166, 181, 196, 211, 226, 241, 256, 271, 286, 301, 316, 331, 346,
2695   361, 376, 167, 182, 197, 212, 227, 242, 257, 272, 287, 302, 317, 332, 347,
2696   362, 377, 392, 183, 198, 213, 228, 243, 258, 273, 288, 303, 318, 333, 348,
2697   363, 378, 393, 407, 199, 214, 229, 244, 259, 274, 289, 304, 319, 334, 349,
2698   364, 379, 394, 408, 421, 215, 230, 245, 260, 275, 290, 305, 320, 335, 350,
2699   365, 380, 395, 409, 422, 434, 231, 246, 261, 276, 291, 306, 321, 336, 351,
2700   366, 381, 396, 410, 423, 435, 446, 247, 262, 277, 292, 307, 322, 337, 352,
2701   367, 382, 397, 411, 424, 436, 447, 457, 263, 278, 293, 308, 323, 338, 353,
2702   368, 383, 398, 412, 425, 437, 448, 458, 467, 279, 294, 309, 324, 339, 354,
2703   369, 384, 399, 413, 426, 438, 449, 459, 468, 476, 295, 310, 325, 340, 355,
2704   370, 385, 400, 414, 427, 439, 450, 460, 469, 477, 484, 311, 326, 341, 356,
2705   371, 386, 401, 415, 428, 440, 451, 461, 470, 478, 485, 491, 327, 342, 357,
2706   372, 387, 402, 416, 429, 441, 452, 462, 471, 479, 486, 492, 497, 343, 358,
2707   373, 388, 403, 417, 430, 442, 453, 463, 472, 480, 487, 493, 498, 502, 359,
2708   374, 389, 404, 418, 431, 443, 454, 464, 473, 481, 488, 494, 499, 503, 506,
2709   375, 390, 405, 419, 432, 444, 455, 465, 474, 482, 489, 495, 500, 504, 507,
2710   509, 391, 406, 420, 433, 445, 456, 466, 475, 483, 490, 496, 501, 505, 508,
2711   510, 511,
2712 };
2713 
2714 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_32x16[512]) = {
2715   0,   2,   5,   9,   14,  20,  27,  35,  44,  54,  65,  77,  90,  104, 119,
2716   135, 151, 167, 183, 199, 215, 231, 247, 263, 279, 295, 311, 327, 343, 359,
2717   375, 391, 1,   4,   8,   13,  19,  26,  34,  43,  53,  64,  76,  89,  103,
2718   118, 134, 150, 166, 182, 198, 214, 230, 246, 262, 278, 294, 310, 326, 342,
2719   358, 374, 390, 406, 3,   7,   12,  18,  25,  33,  42,  52,  63,  75,  88,
2720   102, 117, 133, 149, 165, 181, 197, 213, 229, 245, 261, 277, 293, 309, 325,
2721   341, 357, 373, 389, 405, 420, 6,   11,  17,  24,  32,  41,  51,  62,  74,
2722   87,  101, 116, 132, 148, 164, 180, 196, 212, 228, 244, 260, 276, 292, 308,
2723   324, 340, 356, 372, 388, 404, 419, 433, 10,  16,  23,  31,  40,  50,  61,
2724   73,  86,  100, 115, 131, 147, 163, 179, 195, 211, 227, 243, 259, 275, 291,
2725   307, 323, 339, 355, 371, 387, 403, 418, 432, 445, 15,  22,  30,  39,  49,
2726   60,  72,  85,  99,  114, 130, 146, 162, 178, 194, 210, 226, 242, 258, 274,
2727   290, 306, 322, 338, 354, 370, 386, 402, 417, 431, 444, 456, 21,  29,  38,
2728   48,  59,  71,  84,  98,  113, 129, 145, 161, 177, 193, 209, 225, 241, 257,
2729   273, 289, 305, 321, 337, 353, 369, 385, 401, 416, 430, 443, 455, 466, 28,
2730   37,  47,  58,  70,  83,  97,  112, 128, 144, 160, 176, 192, 208, 224, 240,
2731   256, 272, 288, 304, 320, 336, 352, 368, 384, 400, 415, 429, 442, 454, 465,
2732   475, 36,  46,  57,  69,  82,  96,  111, 127, 143, 159, 175, 191, 207, 223,
2733   239, 255, 271, 287, 303, 319, 335, 351, 367, 383, 399, 414, 428, 441, 453,
2734   464, 474, 483, 45,  56,  68,  81,  95,  110, 126, 142, 158, 174, 190, 206,
2735   222, 238, 254, 270, 286, 302, 318, 334, 350, 366, 382, 398, 413, 427, 440,
2736   452, 463, 473, 482, 490, 55,  67,  80,  94,  109, 125, 141, 157, 173, 189,
2737   205, 221, 237, 253, 269, 285, 301, 317, 333, 349, 365, 381, 397, 412, 426,
2738   439, 451, 462, 472, 481, 489, 496, 66,  79,  93,  108, 124, 140, 156, 172,
2739   188, 204, 220, 236, 252, 268, 284, 300, 316, 332, 348, 364, 380, 396, 411,
2740   425, 438, 450, 461, 471, 480, 488, 495, 501, 78,  92,  107, 123, 139, 155,
2741   171, 187, 203, 219, 235, 251, 267, 283, 299, 315, 331, 347, 363, 379, 395,
2742   410, 424, 437, 449, 460, 470, 479, 487, 494, 500, 505, 91,  106, 122, 138,
2743   154, 170, 186, 202, 218, 234, 250, 266, 282, 298, 314, 330, 346, 362, 378,
2744   394, 409, 423, 436, 448, 459, 469, 478, 486, 493, 499, 504, 508, 105, 121,
2745   137, 153, 169, 185, 201, 217, 233, 249, 265, 281, 297, 313, 329, 345, 361,
2746   377, 393, 408, 422, 435, 447, 458, 468, 477, 485, 492, 498, 503, 507, 510,
2747   120, 136, 152, 168, 184, 200, 216, 232, 248, 264, 280, 296, 312, 328, 344,
2748   360, 376, 392, 407, 421, 434, 446, 457, 467, 476, 484, 491, 497, 502, 506,
2749   509, 511,
2750 };
2751 
2752 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_16x32[512]) = {
2753   0,  32, 64, 96,  128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480,
2754   1,  33, 65, 97,  129, 161, 193, 225, 257, 289, 321, 353, 385, 417, 449, 481,
2755   2,  34, 66, 98,  130, 162, 194, 226, 258, 290, 322, 354, 386, 418, 450, 482,
2756   3,  35, 67, 99,  131, 163, 195, 227, 259, 291, 323, 355, 387, 419, 451, 483,
2757   4,  36, 68, 100, 132, 164, 196, 228, 260, 292, 324, 356, 388, 420, 452, 484,
2758   5,  37, 69, 101, 133, 165, 197, 229, 261, 293, 325, 357, 389, 421, 453, 485,
2759   6,  38, 70, 102, 134, 166, 198, 230, 262, 294, 326, 358, 390, 422, 454, 486,
2760   7,  39, 71, 103, 135, 167, 199, 231, 263, 295, 327, 359, 391, 423, 455, 487,
2761   8,  40, 72, 104, 136, 168, 200, 232, 264, 296, 328, 360, 392, 424, 456, 488,
2762   9,  41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 361, 393, 425, 457, 489,
2763   10, 42, 74, 106, 138, 170, 202, 234, 266, 298, 330, 362, 394, 426, 458, 490,
2764   11, 43, 75, 107, 139, 171, 203, 235, 267, 299, 331, 363, 395, 427, 459, 491,
2765   12, 44, 76, 108, 140, 172, 204, 236, 268, 300, 332, 364, 396, 428, 460, 492,
2766   13, 45, 77, 109, 141, 173, 205, 237, 269, 301, 333, 365, 397, 429, 461, 493,
2767   14, 46, 78, 110, 142, 174, 206, 238, 270, 302, 334, 366, 398, 430, 462, 494,
2768   15, 47, 79, 111, 143, 175, 207, 239, 271, 303, 335, 367, 399, 431, 463, 495,
2769   16, 48, 80, 112, 144, 176, 208, 240, 272, 304, 336, 368, 400, 432, 464, 496,
2770   17, 49, 81, 113, 145, 177, 209, 241, 273, 305, 337, 369, 401, 433, 465, 497,
2771   18, 50, 82, 114, 146, 178, 210, 242, 274, 306, 338, 370, 402, 434, 466, 498,
2772   19, 51, 83, 115, 147, 179, 211, 243, 275, 307, 339, 371, 403, 435, 467, 499,
2773   20, 52, 84, 116, 148, 180, 212, 244, 276, 308, 340, 372, 404, 436, 468, 500,
2774   21, 53, 85, 117, 149, 181, 213, 245, 277, 309, 341, 373, 405, 437, 469, 501,
2775   22, 54, 86, 118, 150, 182, 214, 246, 278, 310, 342, 374, 406, 438, 470, 502,
2776   23, 55, 87, 119, 151, 183, 215, 247, 279, 311, 343, 375, 407, 439, 471, 503,
2777   24, 56, 88, 120, 152, 184, 216, 248, 280, 312, 344, 376, 408, 440, 472, 504,
2778   25, 57, 89, 121, 153, 185, 217, 249, 281, 313, 345, 377, 409, 441, 473, 505,
2779   26, 58, 90, 122, 154, 186, 218, 250, 282, 314, 346, 378, 410, 442, 474, 506,
2780   27, 59, 91, 123, 155, 187, 219, 251, 283, 315, 347, 379, 411, 443, 475, 507,
2781   28, 60, 92, 124, 156, 188, 220, 252, 284, 316, 348, 380, 412, 444, 476, 508,
2782   29, 61, 93, 125, 157, 189, 221, 253, 285, 317, 349, 381, 413, 445, 477, 509,
2783   30, 62, 94, 126, 158, 190, 222, 254, 286, 318, 350, 382, 414, 446, 478, 510,
2784   31, 63, 95, 127, 159, 191, 223, 255, 287, 319, 351, 383, 415, 447, 479, 511,
2785 };
2786 
2787 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_32x16[512]) = {
2788   0,   16,  32,  48,  64,  80,  96,  112, 128, 144, 160, 176, 192, 208, 224,
2789   240, 256, 272, 288, 304, 320, 336, 352, 368, 384, 400, 416, 432, 448, 464,
2790   480, 496, 1,   17,  33,  49,  65,  81,  97,  113, 129, 145, 161, 177, 193,
2791   209, 225, 241, 257, 273, 289, 305, 321, 337, 353, 369, 385, 401, 417, 433,
2792   449, 465, 481, 497, 2,   18,  34,  50,  66,  82,  98,  114, 130, 146, 162,
2793   178, 194, 210, 226, 242, 258, 274, 290, 306, 322, 338, 354, 370, 386, 402,
2794   418, 434, 450, 466, 482, 498, 3,   19,  35,  51,  67,  83,  99,  115, 131,
2795   147, 163, 179, 195, 211, 227, 243, 259, 275, 291, 307, 323, 339, 355, 371,
2796   387, 403, 419, 435, 451, 467, 483, 499, 4,   20,  36,  52,  68,  84,  100,
2797   116, 132, 148, 164, 180, 196, 212, 228, 244, 260, 276, 292, 308, 324, 340,
2798   356, 372, 388, 404, 420, 436, 452, 468, 484, 500, 5,   21,  37,  53,  69,
2799   85,  101, 117, 133, 149, 165, 181, 197, 213, 229, 245, 261, 277, 293, 309,
2800   325, 341, 357, 373, 389, 405, 421, 437, 453, 469, 485, 501, 6,   22,  38,
2801   54,  70,  86,  102, 118, 134, 150, 166, 182, 198, 214, 230, 246, 262, 278,
2802   294, 310, 326, 342, 358, 374, 390, 406, 422, 438, 454, 470, 486, 502, 7,
2803   23,  39,  55,  71,  87,  103, 119, 135, 151, 167, 183, 199, 215, 231, 247,
2804   263, 279, 295, 311, 327, 343, 359, 375, 391, 407, 423, 439, 455, 471, 487,
2805   503, 8,   24,  40,  56,  72,  88,  104, 120, 136, 152, 168, 184, 200, 216,
2806   232, 248, 264, 280, 296, 312, 328, 344, 360, 376, 392, 408, 424, 440, 456,
2807   472, 488, 504, 9,   25,  41,  57,  73,  89,  105, 121, 137, 153, 169, 185,
2808   201, 217, 233, 249, 265, 281, 297, 313, 329, 345, 361, 377, 393, 409, 425,
2809   441, 457, 473, 489, 505, 10,  26,  42,  58,  74,  90,  106, 122, 138, 154,
2810   170, 186, 202, 218, 234, 250, 266, 282, 298, 314, 330, 346, 362, 378, 394,
2811   410, 426, 442, 458, 474, 490, 506, 11,  27,  43,  59,  75,  91,  107, 123,
2812   139, 155, 171, 187, 203, 219, 235, 251, 267, 283, 299, 315, 331, 347, 363,
2813   379, 395, 411, 427, 443, 459, 475, 491, 507, 12,  28,  44,  60,  76,  92,
2814   108, 124, 140, 156, 172, 188, 204, 220, 236, 252, 268, 284, 300, 316, 332,
2815   348, 364, 380, 396, 412, 428, 444, 460, 476, 492, 508, 13,  29,  45,  61,
2816   77,  93,  109, 125, 141, 157, 173, 189, 205, 221, 237, 253, 269, 285, 301,
2817   317, 333, 349, 365, 381, 397, 413, 429, 445, 461, 477, 493, 509, 14,  30,
2818   46,  62,  78,  94,  110, 126, 142, 158, 174, 190, 206, 222, 238, 254, 270,
2819   286, 302, 318, 334, 350, 366, 382, 398, 414, 430, 446, 462, 478, 494, 510,
2820   15,  31,  47,  63,  79,  95,  111, 127, 143, 159, 175, 191, 207, 223, 239,
2821   255, 271, 287, 303, 319, 335, 351, 367, 383, 399, 415, 431, 447, 463, 479,
2822   495, 511,
2823 };
2824 
2825 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_16x32[512]) = {
2826   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
2827   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
2828   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
2829   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
2830   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
2831   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
2832   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
2833   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
2834   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
2835   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
2836   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
2837   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
2838   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
2839   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
2840   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
2841   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
2842   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
2843   255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
2844   270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
2845   285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
2846   300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
2847   315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
2848   330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
2849   345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
2850   360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
2851   375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
2852   390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
2853   405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
2854   420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
2855   435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
2856   450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
2857   465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
2858   480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
2859   495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
2860   510, 511,
2861 };
2862 
2863 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_32x16[512]) = {
2864   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
2865   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
2866   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
2867   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
2868   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
2869   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
2870   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
2871   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
2872   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
2873   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
2874   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
2875   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
2876   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
2877   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
2878   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
2879   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
2880   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
2881   255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
2882   270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
2883   285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
2884   300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
2885   315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
2886   330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
2887   345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
2888   360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
2889   375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
2890   390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
2891   405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
2892   420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
2893   435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
2894   450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
2895   465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
2896   480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
2897   495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
2898   510, 511,
2899 };
2900 
2901 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_16x16[256]) = {
2902   0,  16, 32, 48, 64, 80, 96,  112, 128, 144, 160, 176, 192, 208, 224, 240,
2903   1,  17, 33, 49, 65, 81, 97,  113, 129, 145, 161, 177, 193, 209, 225, 241,
2904   2,  18, 34, 50, 66, 82, 98,  114, 130, 146, 162, 178, 194, 210, 226, 242,
2905   3,  19, 35, 51, 67, 83, 99,  115, 131, 147, 163, 179, 195, 211, 227, 243,
2906   4,  20, 36, 52, 68, 84, 100, 116, 132, 148, 164, 180, 196, 212, 228, 244,
2907   5,  21, 37, 53, 69, 85, 101, 117, 133, 149, 165, 181, 197, 213, 229, 245,
2908   6,  22, 38, 54, 70, 86, 102, 118, 134, 150, 166, 182, 198, 214, 230, 246,
2909   7,  23, 39, 55, 71, 87, 103, 119, 135, 151, 167, 183, 199, 215, 231, 247,
2910   8,  24, 40, 56, 72, 88, 104, 120, 136, 152, 168, 184, 200, 216, 232, 248,
2911   9,  25, 41, 57, 73, 89, 105, 121, 137, 153, 169, 185, 201, 217, 233, 249,
2912   10, 26, 42, 58, 74, 90, 106, 122, 138, 154, 170, 186, 202, 218, 234, 250,
2913   11, 27, 43, 59, 75, 91, 107, 123, 139, 155, 171, 187, 203, 219, 235, 251,
2914   12, 28, 44, 60, 76, 92, 108, 124, 140, 156, 172, 188, 204, 220, 236, 252,
2915   13, 29, 45, 61, 77, 93, 109, 125, 141, 157, 173, 189, 205, 221, 237, 253,
2916   14, 30, 46, 62, 78, 94, 110, 126, 142, 158, 174, 190, 206, 222, 238, 254,
2917   15, 31, 47, 63, 79, 95, 111, 127, 143, 159, 175, 191, 207, 223, 239, 255,
2918 };
2919 
2920 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_16x16[256]) = {
2921   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
2922   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
2923   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
2924   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
2925   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
2926   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
2927   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
2928   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
2929   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
2930   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
2931   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
2932   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
2933   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
2934   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
2935   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
2936   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
2937   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
2938   255,
2939 };
2940 
2941 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_16x16[256]) = {
2942   0,   1,   5,   6,   14,  15,  27,  28,  44,  45,  65,  66,  90,  91,  119,
2943   120, 2,   4,   7,   13,  16,  26,  29,  43,  46,  64,  67,  89,  92,  118,
2944   121, 150, 3,   8,   12,  17,  25,  30,  42,  47,  63,  68,  88,  93,  117,
2945   122, 149, 151, 9,   11,  18,  24,  31,  41,  48,  62,  69,  87,  94,  116,
2946   123, 148, 152, 177, 10,  19,  23,  32,  40,  49,  61,  70,  86,  95,  115,
2947   124, 147, 153, 176, 178, 20,  22,  33,  39,  50,  60,  71,  85,  96,  114,
2948   125, 146, 154, 175, 179, 200, 21,  34,  38,  51,  59,  72,  84,  97,  113,
2949   126, 145, 155, 174, 180, 199, 201, 35,  37,  52,  58,  73,  83,  98,  112,
2950   127, 144, 156, 173, 181, 198, 202, 219, 36,  53,  57,  74,  82,  99,  111,
2951   128, 143, 157, 172, 182, 197, 203, 218, 220, 54,  56,  75,  81,  100, 110,
2952   129, 142, 158, 171, 183, 196, 204, 217, 221, 234, 55,  76,  80,  101, 109,
2953   130, 141, 159, 170, 184, 195, 205, 216, 222, 233, 235, 77,  79,  102, 108,
2954   131, 140, 160, 169, 185, 194, 206, 215, 223, 232, 236, 245, 78,  103, 107,
2955   132, 139, 161, 168, 186, 193, 207, 214, 224, 231, 237, 244, 246, 104, 106,
2956   133, 138, 162, 167, 187, 192, 208, 213, 225, 230, 238, 243, 247, 252, 105,
2957   134, 137, 163, 166, 188, 191, 209, 212, 226, 229, 239, 242, 248, 251, 253,
2958   135, 136, 164, 165, 189, 190, 210, 211, 227, 228, 240, 241, 249, 250, 254,
2959   255
2960 };
2961 
2962 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_32x32[1024]) = {
2963   0,   32,   64,  96,   128, 160,  192, 224,  256, 288,  320, 352,  384, 416,
2964   448, 480,  512, 544,  576, 608,  640, 672,  704, 736,  768, 800,  832, 864,
2965   896, 928,  960, 992,  1,   33,   65,  97,   129, 161,  193, 225,  257, 289,
2966   321, 353,  385, 417,  449, 481,  513, 545,  577, 609,  641, 673,  705, 737,
2967   769, 801,  833, 865,  897, 929,  961, 993,  2,   34,   66,  98,   130, 162,
2968   194, 226,  258, 290,  322, 354,  386, 418,  450, 482,  514, 546,  578, 610,
2969   642, 674,  706, 738,  770, 802,  834, 866,  898, 930,  962, 994,  3,   35,
2970   67,  99,   131, 163,  195, 227,  259, 291,  323, 355,  387, 419,  451, 483,
2971   515, 547,  579, 611,  643, 675,  707, 739,  771, 803,  835, 867,  899, 931,
2972   963, 995,  4,   36,   68,  100,  132, 164,  196, 228,  260, 292,  324, 356,
2973   388, 420,  452, 484,  516, 548,  580, 612,  644, 676,  708, 740,  772, 804,
2974   836, 868,  900, 932,  964, 996,  5,   37,   69,  101,  133, 165,  197, 229,
2975   261, 293,  325, 357,  389, 421,  453, 485,  517, 549,  581, 613,  645, 677,
2976   709, 741,  773, 805,  837, 869,  901, 933,  965, 997,  6,   38,   70,  102,
2977   134, 166,  198, 230,  262, 294,  326, 358,  390, 422,  454, 486,  518, 550,
2978   582, 614,  646, 678,  710, 742,  774, 806,  838, 870,  902, 934,  966, 998,
2979   7,   39,   71,  103,  135, 167,  199, 231,  263, 295,  327, 359,  391, 423,
2980   455, 487,  519, 551,  583, 615,  647, 679,  711, 743,  775, 807,  839, 871,
2981   903, 935,  967, 999,  8,   40,   72,  104,  136, 168,  200, 232,  264, 296,
2982   328, 360,  392, 424,  456, 488,  520, 552,  584, 616,  648, 680,  712, 744,
2983   776, 808,  840, 872,  904, 936,  968, 1000, 9,   41,   73,  105,  137, 169,
2984   201, 233,  265, 297,  329, 361,  393, 425,  457, 489,  521, 553,  585, 617,
2985   649, 681,  713, 745,  777, 809,  841, 873,  905, 937,  969, 1001, 10,  42,
2986   74,  106,  138, 170,  202, 234,  266, 298,  330, 362,  394, 426,  458, 490,
2987   522, 554,  586, 618,  650, 682,  714, 746,  778, 810,  842, 874,  906, 938,
2988   970, 1002, 11,  43,   75,  107,  139, 171,  203, 235,  267, 299,  331, 363,
2989   395, 427,  459, 491,  523, 555,  587, 619,  651, 683,  715, 747,  779, 811,
2990   843, 875,  907, 939,  971, 1003, 12,  44,   76,  108,  140, 172,  204, 236,
2991   268, 300,  332, 364,  396, 428,  460, 492,  524, 556,  588, 620,  652, 684,
2992   716, 748,  780, 812,  844, 876,  908, 940,  972, 1004, 13,  45,   77,  109,
2993   141, 173,  205, 237,  269, 301,  333, 365,  397, 429,  461, 493,  525, 557,
2994   589, 621,  653, 685,  717, 749,  781, 813,  845, 877,  909, 941,  973, 1005,
2995   14,  46,   78,  110,  142, 174,  206, 238,  270, 302,  334, 366,  398, 430,
2996   462, 494,  526, 558,  590, 622,  654, 686,  718, 750,  782, 814,  846, 878,
2997   910, 942,  974, 1006, 15,  47,   79,  111,  143, 175,  207, 239,  271, 303,
2998   335, 367,  399, 431,  463, 495,  527, 559,  591, 623,  655, 687,  719, 751,
2999   783, 815,  847, 879,  911, 943,  975, 1007, 16,  48,   80,  112,  144, 176,
3000   208, 240,  272, 304,  336, 368,  400, 432,  464, 496,  528, 560,  592, 624,
3001   656, 688,  720, 752,  784, 816,  848, 880,  912, 944,  976, 1008, 17,  49,
3002   81,  113,  145, 177,  209, 241,  273, 305,  337, 369,  401, 433,  465, 497,
3003   529, 561,  593, 625,  657, 689,  721, 753,  785, 817,  849, 881,  913, 945,
3004   977, 1009, 18,  50,   82,  114,  146, 178,  210, 242,  274, 306,  338, 370,
3005   402, 434,  466, 498,  530, 562,  594, 626,  658, 690,  722, 754,  786, 818,
3006   850, 882,  914, 946,  978, 1010, 19,  51,   83,  115,  147, 179,  211, 243,
3007   275, 307,  339, 371,  403, 435,  467, 499,  531, 563,  595, 627,  659, 691,
3008   723, 755,  787, 819,  851, 883,  915, 947,  979, 1011, 20,  52,   84,  116,
3009   148, 180,  212, 244,  276, 308,  340, 372,  404, 436,  468, 500,  532, 564,
3010   596, 628,  660, 692,  724, 756,  788, 820,  852, 884,  916, 948,  980, 1012,
3011   21,  53,   85,  117,  149, 181,  213, 245,  277, 309,  341, 373,  405, 437,
3012   469, 501,  533, 565,  597, 629,  661, 693,  725, 757,  789, 821,  853, 885,
3013   917, 949,  981, 1013, 22,  54,   86,  118,  150, 182,  214, 246,  278, 310,
3014   342, 374,  406, 438,  470, 502,  534, 566,  598, 630,  662, 694,  726, 758,
3015   790, 822,  854, 886,  918, 950,  982, 1014, 23,  55,   87,  119,  151, 183,
3016   215, 247,  279, 311,  343, 375,  407, 439,  471, 503,  535, 567,  599, 631,
3017   663, 695,  727, 759,  791, 823,  855, 887,  919, 951,  983, 1015, 24,  56,
3018   88,  120,  152, 184,  216, 248,  280, 312,  344, 376,  408, 440,  472, 504,
3019   536, 568,  600, 632,  664, 696,  728, 760,  792, 824,  856, 888,  920, 952,
3020   984, 1016, 25,  57,   89,  121,  153, 185,  217, 249,  281, 313,  345, 377,
3021   409, 441,  473, 505,  537, 569,  601, 633,  665, 697,  729, 761,  793, 825,
3022   857, 889,  921, 953,  985, 1017, 26,  58,   90,  122,  154, 186,  218, 250,
3023   282, 314,  346, 378,  410, 442,  474, 506,  538, 570,  602, 634,  666, 698,
3024   730, 762,  794, 826,  858, 890,  922, 954,  986, 1018, 27,  59,   91,  123,
3025   155, 187,  219, 251,  283, 315,  347, 379,  411, 443,  475, 507,  539, 571,
3026   603, 635,  667, 699,  731, 763,  795, 827,  859, 891,  923, 955,  987, 1019,
3027   28,  60,   92,  124,  156, 188,  220, 252,  284, 316,  348, 380,  412, 444,
3028   476, 508,  540, 572,  604, 636,  668, 700,  732, 764,  796, 828,  860, 892,
3029   924, 956,  988, 1020, 29,  61,   93,  125,  157, 189,  221, 253,  285, 317,
3030   349, 381,  413, 445,  477, 509,  541, 573,  605, 637,  669, 701,  733, 765,
3031   797, 829,  861, 893,  925, 957,  989, 1021, 30,  62,   94,  126,  158, 190,
3032   222, 254,  286, 318,  350, 382,  414, 446,  478, 510,  542, 574,  606, 638,
3033   670, 702,  734, 766,  798, 830,  862, 894,  926, 958,  990, 1022, 31,  63,
3034   95,  127,  159, 191,  223, 255,  287, 319,  351, 383,  415, 447,  479, 511,
3035   543, 575,  607, 639,  671, 703,  735, 767,  799, 831,  863, 895,  927, 959,
3036   991, 1023,
3037 };
3038 
3039 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_32x32[1024]) = {
3040   0,    1,    2,    3,    4,    5,    6,    7,    8,    9,    10,   11,   12,
3041   13,   14,   15,   16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
3042   26,   27,   28,   29,   30,   31,   32,   33,   34,   35,   36,   37,   38,
3043   39,   40,   41,   42,   43,   44,   45,   46,   47,   48,   49,   50,   51,
3044   52,   53,   54,   55,   56,   57,   58,   59,   60,   61,   62,   63,   64,
3045   65,   66,   67,   68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
3046   78,   79,   80,   81,   82,   83,   84,   85,   86,   87,   88,   89,   90,
3047   91,   92,   93,   94,   95,   96,   97,   98,   99,   100,  101,  102,  103,
3048   104,  105,  106,  107,  108,  109,  110,  111,  112,  113,  114,  115,  116,
3049   117,  118,  119,  120,  121,  122,  123,  124,  125,  126,  127,  128,  129,
3050   130,  131,  132,  133,  134,  135,  136,  137,  138,  139,  140,  141,  142,
3051   143,  144,  145,  146,  147,  148,  149,  150,  151,  152,  153,  154,  155,
3052   156,  157,  158,  159,  160,  161,  162,  163,  164,  165,  166,  167,  168,
3053   169,  170,  171,  172,  173,  174,  175,  176,  177,  178,  179,  180,  181,
3054   182,  183,  184,  185,  186,  187,  188,  189,  190,  191,  192,  193,  194,
3055   195,  196,  197,  198,  199,  200,  201,  202,  203,  204,  205,  206,  207,
3056   208,  209,  210,  211,  212,  213,  214,  215,  216,  217,  218,  219,  220,
3057   221,  222,  223,  224,  225,  226,  227,  228,  229,  230,  231,  232,  233,
3058   234,  235,  236,  237,  238,  239,  240,  241,  242,  243,  244,  245,  246,
3059   247,  248,  249,  250,  251,  252,  253,  254,  255,  256,  257,  258,  259,
3060   260,  261,  262,  263,  264,  265,  266,  267,  268,  269,  270,  271,  272,
3061   273,  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
3062   286,  287,  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
3063   299,  300,  301,  302,  303,  304,  305,  306,  307,  308,  309,  310,  311,
3064   312,  313,  314,  315,  316,  317,  318,  319,  320,  321,  322,  323,  324,
3065   325,  326,  327,  328,  329,  330,  331,  332,  333,  334,  335,  336,  337,
3066   338,  339,  340,  341,  342,  343,  344,  345,  346,  347,  348,  349,  350,
3067   351,  352,  353,  354,  355,  356,  357,  358,  359,  360,  361,  362,  363,
3068   364,  365,  366,  367,  368,  369,  370,  371,  372,  373,  374,  375,  376,
3069   377,  378,  379,  380,  381,  382,  383,  384,  385,  386,  387,  388,  389,
3070   390,  391,  392,  393,  394,  395,  396,  397,  398,  399,  400,  401,  402,
3071   403,  404,  405,  406,  407,  408,  409,  410,  411,  412,  413,  414,  415,
3072   416,  417,  418,  419,  420,  421,  422,  423,  424,  425,  426,  427,  428,
3073   429,  430,  431,  432,  433,  434,  435,  436,  437,  438,  439,  440,  441,
3074   442,  443,  444,  445,  446,  447,  448,  449,  450,  451,  452,  453,  454,
3075   455,  456,  457,  458,  459,  460,  461,  462,  463,  464,  465,  466,  467,
3076   468,  469,  470,  471,  472,  473,  474,  475,  476,  477,  478,  479,  480,
3077   481,  482,  483,  484,  485,  486,  487,  488,  489,  490,  491,  492,  493,
3078   494,  495,  496,  497,  498,  499,  500,  501,  502,  503,  504,  505,  506,
3079   507,  508,  509,  510,  511,  512,  513,  514,  515,  516,  517,  518,  519,
3080   520,  521,  522,  523,  524,  525,  526,  527,  528,  529,  530,  531,  532,
3081   533,  534,  535,  536,  537,  538,  539,  540,  541,  542,  543,  544,  545,
3082   546,  547,  548,  549,  550,  551,  552,  553,  554,  555,  556,  557,  558,
3083   559,  560,  561,  562,  563,  564,  565,  566,  567,  568,  569,  570,  571,
3084   572,  573,  574,  575,  576,  577,  578,  579,  580,  581,  582,  583,  584,
3085   585,  586,  587,  588,  589,  590,  591,  592,  593,  594,  595,  596,  597,
3086   598,  599,  600,  601,  602,  603,  604,  605,  606,  607,  608,  609,  610,
3087   611,  612,  613,  614,  615,  616,  617,  618,  619,  620,  621,  622,  623,
3088   624,  625,  626,  627,  628,  629,  630,  631,  632,  633,  634,  635,  636,
3089   637,  638,  639,  640,  641,  642,  643,  644,  645,  646,  647,  648,  649,
3090   650,  651,  652,  653,  654,  655,  656,  657,  658,  659,  660,  661,  662,
3091   663,  664,  665,  666,  667,  668,  669,  670,  671,  672,  673,  674,  675,
3092   676,  677,  678,  679,  680,  681,  682,  683,  684,  685,  686,  687,  688,
3093   689,  690,  691,  692,  693,  694,  695,  696,  697,  698,  699,  700,  701,
3094   702,  703,  704,  705,  706,  707,  708,  709,  710,  711,  712,  713,  714,
3095   715,  716,  717,  718,  719,  720,  721,  722,  723,  724,  725,  726,  727,
3096   728,  729,  730,  731,  732,  733,  734,  735,  736,  737,  738,  739,  740,
3097   741,  742,  743,  744,  745,  746,  747,  748,  749,  750,  751,  752,  753,
3098   754,  755,  756,  757,  758,  759,  760,  761,  762,  763,  764,  765,  766,
3099   767,  768,  769,  770,  771,  772,  773,  774,  775,  776,  777,  778,  779,
3100   780,  781,  782,  783,  784,  785,  786,  787,  788,  789,  790,  791,  792,
3101   793,  794,  795,  796,  797,  798,  799,  800,  801,  802,  803,  804,  805,
3102   806,  807,  808,  809,  810,  811,  812,  813,  814,  815,  816,  817,  818,
3103   819,  820,  821,  822,  823,  824,  825,  826,  827,  828,  829,  830,  831,
3104   832,  833,  834,  835,  836,  837,  838,  839,  840,  841,  842,  843,  844,
3105   845,  846,  847,  848,  849,  850,  851,  852,  853,  854,  855,  856,  857,
3106   858,  859,  860,  861,  862,  863,  864,  865,  866,  867,  868,  869,  870,
3107   871,  872,  873,  874,  875,  876,  877,  878,  879,  880,  881,  882,  883,
3108   884,  885,  886,  887,  888,  889,  890,  891,  892,  893,  894,  895,  896,
3109   897,  898,  899,  900,  901,  902,  903,  904,  905,  906,  907,  908,  909,
3110   910,  911,  912,  913,  914,  915,  916,  917,  918,  919,  920,  921,  922,
3111   923,  924,  925,  926,  927,  928,  929,  930,  931,  932,  933,  934,  935,
3112   936,  937,  938,  939,  940,  941,  942,  943,  944,  945,  946,  947,  948,
3113   949,  950,  951,  952,  953,  954,  955,  956,  957,  958,  959,  960,  961,
3114   962,  963,  964,  965,  966,  967,  968,  969,  970,  971,  972,  973,  974,
3115   975,  976,  977,  978,  979,  980,  981,  982,  983,  984,  985,  986,  987,
3116   988,  989,  990,  991,  992,  993,  994,  995,  996,  997,  998,  999,  1000,
3117   1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013,
3118   1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
3119 };
3120 
3121 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_32x32[1024]) = {
3122   0,    1,    5,    6,    14,   15,   27,   28,   44,   45,   65,   66,   90,
3123   91,   119,  120,  152,  153,  189,  190,  230,  231,  275,  276,  324,  325,
3124   377,  378,  434,  435,  495,  496,  2,    4,    7,    13,   16,   26,   29,
3125   43,   46,   64,   67,   89,   92,   118,  121,  151,  154,  188,  191,  229,
3126   232,  274,  277,  323,  326,  376,  379,  433,  436,  494,  497,  558,  3,
3127   8,    12,   17,   25,   30,   42,   47,   63,   68,   88,   93,   117,  122,
3128   150,  155,  187,  192,  228,  233,  273,  278,  322,  327,  375,  380,  432,
3129   437,  493,  498,  557,  559,  9,    11,   18,   24,   31,   41,   48,   62,
3130   69,   87,   94,   116,  123,  149,  156,  186,  193,  227,  234,  272,  279,
3131   321,  328,  374,  381,  431,  438,  492,  499,  556,  560,  617,  10,   19,
3132   23,   32,   40,   49,   61,   70,   86,   95,   115,  124,  148,  157,  185,
3133   194,  226,  235,  271,  280,  320,  329,  373,  382,  430,  439,  491,  500,
3134   555,  561,  616,  618,  20,   22,   33,   39,   50,   60,   71,   85,   96,
3135   114,  125,  147,  158,  184,  195,  225,  236,  270,  281,  319,  330,  372,
3136   383,  429,  440,  490,  501,  554,  562,  615,  619,  672,  21,   34,   38,
3137   51,   59,   72,   84,   97,   113,  126,  146,  159,  183,  196,  224,  237,
3138   269,  282,  318,  331,  371,  384,  428,  441,  489,  502,  553,  563,  614,
3139   620,  671,  673,  35,   37,   52,   58,   73,   83,   98,   112,  127,  145,
3140   160,  182,  197,  223,  238,  268,  283,  317,  332,  370,  385,  427,  442,
3141   488,  503,  552,  564,  613,  621,  670,  674,  723,  36,   53,   57,   74,
3142   82,   99,   111,  128,  144,  161,  181,  198,  222,  239,  267,  284,  316,
3143   333,  369,  386,  426,  443,  487,  504,  551,  565,  612,  622,  669,  675,
3144   722,  724,  54,   56,   75,   81,   100,  110,  129,  143,  162,  180,  199,
3145   221,  240,  266,  285,  315,  334,  368,  387,  425,  444,  486,  505,  550,
3146   566,  611,  623,  668,  676,  721,  725,  770,  55,   76,   80,   101,  109,
3147   130,  142,  163,  179,  200,  220,  241,  265,  286,  314,  335,  367,  388,
3148   424,  445,  485,  506,  549,  567,  610,  624,  667,  677,  720,  726,  769,
3149   771,  77,   79,   102,  108,  131,  141,  164,  178,  201,  219,  242,  264,
3150   287,  313,  336,  366,  389,  423,  446,  484,  507,  548,  568,  609,  625,
3151   666,  678,  719,  727,  768,  772,  813,  78,   103,  107,  132,  140,  165,
3152   177,  202,  218,  243,  263,  288,  312,  337,  365,  390,  422,  447,  483,
3153   508,  547,  569,  608,  626,  665,  679,  718,  728,  767,  773,  812,  814,
3154   104,  106,  133,  139,  166,  176,  203,  217,  244,  262,  289,  311,  338,
3155   364,  391,  421,  448,  482,  509,  546,  570,  607,  627,  664,  680,  717,
3156   729,  766,  774,  811,  815,  852,  105,  134,  138,  167,  175,  204,  216,
3157   245,  261,  290,  310,  339,  363,  392,  420,  449,  481,  510,  545,  571,
3158   606,  628,  663,  681,  716,  730,  765,  775,  810,  816,  851,  853,  135,
3159   137,  168,  174,  205,  215,  246,  260,  291,  309,  340,  362,  393,  419,
3160   450,  480,  511,  544,  572,  605,  629,  662,  682,  715,  731,  764,  776,
3161   809,  817,  850,  854,  887,  136,  169,  173,  206,  214,  247,  259,  292,
3162   308,  341,  361,  394,  418,  451,  479,  512,  543,  573,  604,  630,  661,
3163   683,  714,  732,  763,  777,  808,  818,  849,  855,  886,  888,  170,  172,
3164   207,  213,  248,  258,  293,  307,  342,  360,  395,  417,  452,  478,  513,
3165   542,  574,  603,  631,  660,  684,  713,  733,  762,  778,  807,  819,  848,
3166   856,  885,  889,  918,  171,  208,  212,  249,  257,  294,  306,  343,  359,
3167   396,  416,  453,  477,  514,  541,  575,  602,  632,  659,  685,  712,  734,
3168   761,  779,  806,  820,  847,  857,  884,  890,  917,  919,  209,  211,  250,
3169   256,  295,  305,  344,  358,  397,  415,  454,  476,  515,  540,  576,  601,
3170   633,  658,  686,  711,  735,  760,  780,  805,  821,  846,  858,  883,  891,
3171   916,  920,  945,  210,  251,  255,  296,  304,  345,  357,  398,  414,  455,
3172   475,  516,  539,  577,  600,  634,  657,  687,  710,  736,  759,  781,  804,
3173   822,  845,  859,  882,  892,  915,  921,  944,  946,  252,  254,  297,  303,
3174   346,  356,  399,  413,  456,  474,  517,  538,  578,  599,  635,  656,  688,
3175   709,  737,  758,  782,  803,  823,  844,  860,  881,  893,  914,  922,  943,
3176   947,  968,  253,  298,  302,  347,  355,  400,  412,  457,  473,  518,  537,
3177   579,  598,  636,  655,  689,  708,  738,  757,  783,  802,  824,  843,  861,
3178   880,  894,  913,  923,  942,  948,  967,  969,  299,  301,  348,  354,  401,
3179   411,  458,  472,  519,  536,  580,  597,  637,  654,  690,  707,  739,  756,
3180   784,  801,  825,  842,  862,  879,  895,  912,  924,  941,  949,  966,  970,
3181   987,  300,  349,  353,  402,  410,  459,  471,  520,  535,  581,  596,  638,
3182   653,  691,  706,  740,  755,  785,  800,  826,  841,  863,  878,  896,  911,
3183   925,  940,  950,  965,  971,  986,  988,  350,  352,  403,  409,  460,  470,
3184   521,  534,  582,  595,  639,  652,  692,  705,  741,  754,  786,  799,  827,
3185   840,  864,  877,  897,  910,  926,  939,  951,  964,  972,  985,  989,  1002,
3186   351,  404,  408,  461,  469,  522,  533,  583,  594,  640,  651,  693,  704,
3187   742,  753,  787,  798,  828,  839,  865,  876,  898,  909,  927,  938,  952,
3188   963,  973,  984,  990,  1001, 1003, 405,  407,  462,  468,  523,  532,  584,
3189   593,  641,  650,  694,  703,  743,  752,  788,  797,  829,  838,  866,  875,
3190   899,  908,  928,  937,  953,  962,  974,  983,  991,  1000, 1004, 1013, 406,
3191   463,  467,  524,  531,  585,  592,  642,  649,  695,  702,  744,  751,  789,
3192   796,  830,  837,  867,  874,  900,  907,  929,  936,  954,  961,  975,  982,
3193   992,  999,  1005, 1012, 1014, 464,  466,  525,  530,  586,  591,  643,  648,
3194   696,  701,  745,  750,  790,  795,  831,  836,  868,  873,  901,  906,  930,
3195   935,  955,  960,  976,  981,  993,  998,  1006, 1011, 1015, 1020, 465,  526,
3196   529,  587,  590,  644,  647,  697,  700,  746,  749,  791,  794,  832,  835,
3197   869,  872,  902,  905,  931,  934,  956,  959,  977,  980,  994,  997,  1007,
3198   1010, 1016, 1019, 1021, 527,  528,  588,  589,  645,  646,  698,  699,  747,
3199   748,  792,  793,  833,  834,  870,  871,  903,  904,  932,  933,  957,  958,
3200   978,  979,  995,  996,  1008, 1009, 1017, 1018, 1022, 1023
3201 };
3202 
3203 const SCAN_ORDER av1_default_scan_orders[TX_SIZES] = {
3204   { default_scan_4x4, av1_default_iscan_4x4, default_scan_4x4_neighbors },
3205   { default_scan_8x8, av1_default_iscan_8x8, default_scan_8x8_neighbors },
3206   { default_scan_16x16, av1_default_iscan_16x16, default_scan_16x16_neighbors },
3207   { default_scan_32x32, av1_default_iscan_32x32, default_scan_32x32_neighbors },
3208   // Half of the coefficients of tx64 at higher frequencies are set to
3209   // zeros. So tx32's scan order is used.
3210   { default_scan_32x32, av1_default_iscan_32x32, default_scan_32x32_neighbors },
3211 };
3212 
3213 const SCAN_ORDER av1_scan_orders[TX_SIZES_ALL][TX_TYPES] = {
3214   {
3215       // TX_4X4
3216       { default_scan_4x4, av1_default_iscan_4x4, default_scan_4x4_neighbors },
3217       { default_scan_4x4, av1_default_iscan_4x4, default_scan_4x4_neighbors },
3218       { default_scan_4x4, av1_default_iscan_4x4, default_scan_4x4_neighbors },
3219       { default_scan_4x4, av1_default_iscan_4x4, default_scan_4x4_neighbors },
3220       { default_scan_4x4, av1_default_iscan_4x4, default_scan_4x4_neighbors },
3221       { default_scan_4x4, av1_default_iscan_4x4, default_scan_4x4_neighbors },
3222       { default_scan_4x4, av1_default_iscan_4x4, default_scan_4x4_neighbors },
3223       { default_scan_4x4, av1_default_iscan_4x4, default_scan_4x4_neighbors },
3224       { default_scan_4x4, av1_default_iscan_4x4, default_scan_4x4_neighbors },
3225       { default_scan_4x4, av1_default_iscan_4x4, default_scan_4x4_neighbors },
3226       { mrow_scan_4x4, av1_mrow_iscan_4x4, mrow_scan_4x4_neighbors },
3227       { mcol_scan_4x4, av1_mcol_iscan_4x4, mcol_scan_4x4_neighbors },
3228       { mrow_scan_4x4, av1_mrow_iscan_4x4, mrow_scan_4x4_neighbors },
3229       { mcol_scan_4x4, av1_mcol_iscan_4x4, mcol_scan_4x4_neighbors },
3230       { mrow_scan_4x4, av1_mrow_iscan_4x4, mrow_scan_4x4_neighbors },
3231       { mcol_scan_4x4, av1_mcol_iscan_4x4, mcol_scan_4x4_neighbors },
3232   },
3233   {
3234       // TX_8X8
3235       { default_scan_8x8, av1_default_iscan_8x8, default_scan_8x8_neighbors },
3236       { default_scan_8x8, av1_default_iscan_8x8, default_scan_8x8_neighbors },
3237       { default_scan_8x8, av1_default_iscan_8x8, default_scan_8x8_neighbors },
3238       { default_scan_8x8, av1_default_iscan_8x8, default_scan_8x8_neighbors },
3239       { default_scan_8x8, av1_default_iscan_8x8, default_scan_8x8_neighbors },
3240       { default_scan_8x8, av1_default_iscan_8x8, default_scan_8x8_neighbors },
3241       { default_scan_8x8, av1_default_iscan_8x8, default_scan_8x8_neighbors },
3242       { default_scan_8x8, av1_default_iscan_8x8, default_scan_8x8_neighbors },
3243       { default_scan_8x8, av1_default_iscan_8x8, default_scan_8x8_neighbors },
3244       { default_scan_8x8, av1_default_iscan_8x8, default_scan_8x8_neighbors },
3245       { mrow_scan_8x8, av1_mrow_iscan_8x8, mrow_scan_8x8_neighbors },
3246       { mcol_scan_8x8, av1_mcol_iscan_8x8, mcol_scan_8x8_neighbors },
3247       { mrow_scan_8x8, av1_mrow_iscan_8x8, mrow_scan_8x8_neighbors },
3248       { mcol_scan_8x8, av1_mcol_iscan_8x8, mcol_scan_8x8_neighbors },
3249       { mrow_scan_8x8, av1_mrow_iscan_8x8, mrow_scan_8x8_neighbors },
3250       { mcol_scan_8x8, av1_mcol_iscan_8x8, mcol_scan_8x8_neighbors },
3251   },
3252   {
3253       // TX_16X16
3254       { default_scan_16x16, av1_default_iscan_16x16,
3255         default_scan_16x16_neighbors },
3256       { default_scan_16x16, av1_default_iscan_16x16,
3257         default_scan_16x16_neighbors },
3258       { default_scan_16x16, av1_default_iscan_16x16,
3259         default_scan_16x16_neighbors },
3260       { default_scan_16x16, av1_default_iscan_16x16,
3261         default_scan_16x16_neighbors },
3262       { default_scan_16x16, av1_default_iscan_16x16,
3263         default_scan_16x16_neighbors },
3264       { default_scan_16x16, av1_default_iscan_16x16,
3265         default_scan_16x16_neighbors },
3266       { default_scan_16x16, av1_default_iscan_16x16,
3267         default_scan_16x16_neighbors },
3268       { default_scan_16x16, av1_default_iscan_16x16,
3269         default_scan_16x16_neighbors },
3270       { default_scan_16x16, av1_default_iscan_16x16,
3271         default_scan_16x16_neighbors },
3272       { default_scan_16x16, av1_default_iscan_16x16,
3273         default_scan_16x16_neighbors },
3274       { mrow_scan_16x16, av1_mrow_iscan_16x16, mrow_scan_16x16_neighbors },
3275       { mcol_scan_16x16, av1_mcol_iscan_16x16, mcol_scan_16x16_neighbors },
3276       { mrow_scan_16x16, av1_mrow_iscan_16x16, mrow_scan_16x16_neighbors },
3277       { mcol_scan_16x16, av1_mcol_iscan_16x16, mcol_scan_16x16_neighbors },
3278       { mrow_scan_16x16, av1_mrow_iscan_16x16, mrow_scan_16x16_neighbors },
3279       { mcol_scan_16x16, av1_mcol_iscan_16x16, mcol_scan_16x16_neighbors },
3280   },
3281   {
3282       // TX_32X32
3283       { default_scan_32x32, av1_default_iscan_32x32,
3284         default_scan_32x32_neighbors },
3285       { default_scan_32x32, av1_default_iscan_32x32,
3286         default_scan_32x32_neighbors },
3287       { default_scan_32x32, av1_default_iscan_32x32,
3288         default_scan_32x32_neighbors },
3289       { default_scan_32x32, av1_default_iscan_32x32,
3290         default_scan_32x32_neighbors },
3291       { default_scan_32x32, av1_default_iscan_32x32,
3292         default_scan_32x32_neighbors },
3293       { default_scan_32x32, av1_default_iscan_32x32,
3294         default_scan_32x32_neighbors },
3295       { default_scan_32x32, av1_default_iscan_32x32,
3296         default_scan_32x32_neighbors },
3297       { default_scan_32x32, av1_default_iscan_32x32,
3298         default_scan_32x32_neighbors },
3299       { default_scan_32x32, av1_default_iscan_32x32,
3300         default_scan_32x32_neighbors },
3301       { default_scan_32x32, av1_default_iscan_32x32,
3302         default_scan_32x32_neighbors },
3303       { mrow_scan_32x32, av1_mrow_iscan_32x32, mrow_scan_32x32_neighbors },
3304       { mcol_scan_32x32, av1_mcol_iscan_32x32, mcol_scan_32x32_neighbors },
3305       { mrow_scan_32x32, av1_mrow_iscan_32x32, mrow_scan_32x32_neighbors },
3306       { mcol_scan_32x32, av1_mcol_iscan_32x32, mcol_scan_32x32_neighbors },
3307       { mrow_scan_32x32, av1_mrow_iscan_32x32, mrow_scan_32x32_neighbors },
3308       { mcol_scan_32x32, av1_mcol_iscan_32x32, mcol_scan_32x32_neighbors },
3309   },
3310   {
3311       // TX_64X64
3312       // Half of the coefficients of tx64 at higher frequencies are set to
3313       // zeros. So tx32's scan order is used.
3314       { default_scan_32x32, av1_default_iscan_32x32,
3315         default_scan_32x32_neighbors },
3316       { default_scan_32x32, av1_default_iscan_32x32,
3317         default_scan_32x32_neighbors },
3318       { default_scan_32x32, av1_default_iscan_32x32,
3319         default_scan_32x32_neighbors },
3320       { default_scan_32x32, av1_default_iscan_32x32,
3321         default_scan_32x32_neighbors },
3322       { default_scan_32x32, av1_default_iscan_32x32,
3323         default_scan_32x32_neighbors },
3324       { default_scan_32x32, av1_default_iscan_32x32,
3325         default_scan_32x32_neighbors },
3326       { default_scan_32x32, av1_default_iscan_32x32,
3327         default_scan_32x32_neighbors },
3328       { default_scan_32x32, av1_default_iscan_32x32,
3329         default_scan_32x32_neighbors },
3330       { default_scan_32x32, av1_default_iscan_32x32,
3331         default_scan_32x32_neighbors },
3332       { default_scan_32x32, av1_default_iscan_32x32,
3333         default_scan_32x32_neighbors },
3334       { mrow_scan_32x32, av1_mrow_iscan_32x32, mrow_scan_32x32_neighbors },
3335       { mcol_scan_32x32, av1_mcol_iscan_32x32, mcol_scan_32x32_neighbors },
3336       { mrow_scan_32x32, av1_mrow_iscan_32x32, mrow_scan_32x32_neighbors },
3337       { mcol_scan_32x32, av1_mcol_iscan_32x32, mcol_scan_32x32_neighbors },
3338       { mrow_scan_32x32, av1_mrow_iscan_32x32, mrow_scan_32x32_neighbors },
3339       { mcol_scan_32x32, av1_mcol_iscan_32x32, mcol_scan_32x32_neighbors },
3340   },
3341   {
3342       // TX_4X8
3343       { default_scan_4x8, av1_default_iscan_4x8, default_scan_4x8_neighbors },
3344       { default_scan_4x8, av1_default_iscan_4x8, default_scan_4x8_neighbors },
3345       { default_scan_4x8, av1_default_iscan_4x8, default_scan_4x8_neighbors },
3346       { default_scan_4x8, av1_default_iscan_4x8, default_scan_4x8_neighbors },
3347       { default_scan_4x8, av1_default_iscan_4x8, default_scan_4x8_neighbors },
3348       { default_scan_4x8, av1_default_iscan_4x8, default_scan_4x8_neighbors },
3349       { default_scan_4x8, av1_default_iscan_4x8, default_scan_4x8_neighbors },
3350       { default_scan_4x8, av1_default_iscan_4x8, default_scan_4x8_neighbors },
3351       { default_scan_4x8, av1_default_iscan_4x8, default_scan_4x8_neighbors },
3352       { default_scan_4x8, av1_default_iscan_4x8, default_scan_4x8_neighbors },
3353       { mrow_scan_4x8, av1_mrow_iscan_4x8, mrow_scan_4x8_neighbors },
3354       { mcol_scan_4x8, av1_mcol_iscan_4x8, mcol_scan_4x8_neighbors },
3355       { mrow_scan_4x8, av1_mrow_iscan_4x8, mrow_scan_4x8_neighbors },
3356       { mcol_scan_4x8, av1_mcol_iscan_4x8, mcol_scan_4x8_neighbors },
3357       { mrow_scan_4x8, av1_mrow_iscan_4x8, mrow_scan_4x8_neighbors },
3358       { mcol_scan_4x8, av1_mcol_iscan_4x8, mcol_scan_4x8_neighbors },
3359   },
3360   {
3361       // TX_8X4
3362       { default_scan_8x4, av1_default_iscan_8x4, default_scan_8x4_neighbors },
3363       { default_scan_8x4, av1_default_iscan_8x4, default_scan_8x4_neighbors },
3364       { default_scan_8x4, av1_default_iscan_8x4, default_scan_8x4_neighbors },
3365       { default_scan_8x4, av1_default_iscan_8x4, default_scan_8x4_neighbors },
3366       { default_scan_8x4, av1_default_iscan_8x4, default_scan_8x4_neighbors },
3367       { default_scan_8x4, av1_default_iscan_8x4, default_scan_8x4_neighbors },
3368       { default_scan_8x4, av1_default_iscan_8x4, default_scan_8x4_neighbors },
3369       { default_scan_8x4, av1_default_iscan_8x4, default_scan_8x4_neighbors },
3370       { default_scan_8x4, av1_default_iscan_8x4, default_scan_8x4_neighbors },
3371       { default_scan_8x4, av1_default_iscan_8x4, default_scan_8x4_neighbors },
3372       { mrow_scan_8x4, av1_mrow_iscan_8x4, mrow_scan_8x4_neighbors },
3373       { mcol_scan_8x4, av1_mcol_iscan_8x4, mcol_scan_8x4_neighbors },
3374       { mrow_scan_8x4, av1_mrow_iscan_8x4, mrow_scan_8x4_neighbors },
3375       { mcol_scan_8x4, av1_mcol_iscan_8x4, mcol_scan_8x4_neighbors },
3376       { mrow_scan_8x4, av1_mrow_iscan_8x4, mrow_scan_8x4_neighbors },
3377       { mcol_scan_8x4, av1_mcol_iscan_8x4, mcol_scan_8x4_neighbors },
3378   },
3379   {
3380       // TX_8X16
3381       { default_scan_8x16, av1_default_iscan_8x16,
3382         default_scan_8x16_neighbors },
3383       { default_scan_8x16, av1_default_iscan_8x16,
3384         default_scan_8x16_neighbors },
3385       { default_scan_8x16, av1_default_iscan_8x16,
3386         default_scan_8x16_neighbors },
3387       { default_scan_8x16, av1_default_iscan_8x16,
3388         default_scan_8x16_neighbors },
3389       { default_scan_8x16, av1_default_iscan_8x16,
3390         default_scan_8x16_neighbors },
3391       { default_scan_8x16, av1_default_iscan_8x16,
3392         default_scan_8x16_neighbors },
3393       { default_scan_8x16, av1_default_iscan_8x16,
3394         default_scan_8x16_neighbors },
3395       { default_scan_8x16, av1_default_iscan_8x16,
3396         default_scan_8x16_neighbors },
3397       { default_scan_8x16, av1_default_iscan_8x16,
3398         default_scan_8x16_neighbors },
3399       { default_scan_8x16, av1_default_iscan_8x16,
3400         default_scan_8x16_neighbors },
3401       { mrow_scan_8x16, av1_mrow_iscan_8x16, mrow_scan_8x16_neighbors },
3402       { mcol_scan_8x16, av1_mcol_iscan_8x16, mcol_scan_8x16_neighbors },
3403       { mrow_scan_8x16, av1_mrow_iscan_8x16, mrow_scan_8x16_neighbors },
3404       { mcol_scan_8x16, av1_mcol_iscan_8x16, mcol_scan_8x16_neighbors },
3405       { mrow_scan_8x16, av1_mrow_iscan_8x16, mrow_scan_8x16_neighbors },
3406       { mcol_scan_8x16, av1_mcol_iscan_8x16, mcol_scan_8x16_neighbors },
3407   },
3408   {
3409       // TX_16X8
3410       { default_scan_16x8, av1_default_iscan_16x8,
3411         default_scan_16x8_neighbors },
3412       { default_scan_16x8, av1_default_iscan_16x8,
3413         default_scan_16x8_neighbors },
3414       { default_scan_16x8, av1_default_iscan_16x8,
3415         default_scan_16x8_neighbors },
3416       { default_scan_16x8, av1_default_iscan_16x8,
3417         default_scan_16x8_neighbors },
3418       { default_scan_16x8, av1_default_iscan_16x8,
3419         default_scan_16x8_neighbors },
3420       { default_scan_16x8, av1_default_iscan_16x8,
3421         default_scan_16x8_neighbors },
3422       { default_scan_16x8, av1_default_iscan_16x8,
3423         default_scan_16x8_neighbors },
3424       { default_scan_16x8, av1_default_iscan_16x8,
3425         default_scan_16x8_neighbors },
3426       { default_scan_16x8, av1_default_iscan_16x8,
3427         default_scan_16x8_neighbors },
3428       { default_scan_16x8, av1_default_iscan_16x8,
3429         default_scan_16x8_neighbors },
3430       { mrow_scan_16x8, av1_mrow_iscan_16x8, mrow_scan_16x8_neighbors },
3431       { mcol_scan_16x8, av1_mcol_iscan_16x8, mcol_scan_16x8_neighbors },
3432       { mrow_scan_16x8, av1_mrow_iscan_16x8, mrow_scan_16x8_neighbors },
3433       { mcol_scan_16x8, av1_mcol_iscan_16x8, mcol_scan_16x8_neighbors },
3434       { mrow_scan_16x8, av1_mrow_iscan_16x8, mrow_scan_16x8_neighbors },
3435       { mcol_scan_16x8, av1_mcol_iscan_16x8, mcol_scan_16x8_neighbors },
3436   },
3437   {
3438       // TX_16X32
3439       { default_scan_16x32, av1_default_iscan_16x32,
3440         default_scan_16x32_neighbors },
3441       { default_scan_16x32, av1_default_iscan_16x32,
3442         default_scan_16x32_neighbors },
3443       { default_scan_16x32, av1_default_iscan_16x32,
3444         default_scan_16x32_neighbors },
3445       { default_scan_16x32, av1_default_iscan_16x32,
3446         default_scan_16x32_neighbors },
3447       { default_scan_16x32, av1_default_iscan_16x32,
3448         default_scan_16x32_neighbors },
3449       { default_scan_16x32, av1_default_iscan_16x32,
3450         default_scan_16x32_neighbors },
3451       { default_scan_16x32, av1_default_iscan_16x32,
3452         default_scan_16x32_neighbors },
3453       { default_scan_16x32, av1_default_iscan_16x32,
3454         default_scan_16x32_neighbors },
3455       { default_scan_16x32, av1_default_iscan_16x32,
3456         default_scan_16x32_neighbors },
3457       { default_scan_16x32, av1_default_iscan_16x32,
3458         default_scan_16x32_neighbors },
3459       { mrow_scan_16x32, av1_mrow_iscan_16x32, mrow_scan_16x32_neighbors },
3460       { mcol_scan_16x32, av1_mcol_iscan_16x32, mcol_scan_16x32_neighbors },
3461       { mrow_scan_16x32, av1_mrow_iscan_16x32, mrow_scan_16x32_neighbors },
3462       { mcol_scan_16x32, av1_mcol_iscan_16x32, mcol_scan_16x32_neighbors },
3463       { mrow_scan_16x32, av1_mrow_iscan_16x32, mrow_scan_16x32_neighbors },
3464       { mcol_scan_16x32, av1_mcol_iscan_16x32, mcol_scan_16x32_neighbors },
3465   },
3466   {
3467       // TX_32X16
3468       { default_scan_32x16, av1_default_iscan_32x16,
3469         default_scan_32x16_neighbors },
3470       { default_scan_32x16, av1_default_iscan_32x16,
3471         default_scan_32x16_neighbors },
3472       { default_scan_32x16, av1_default_iscan_32x16,
3473         default_scan_32x16_neighbors },
3474       { default_scan_32x16, av1_default_iscan_32x16,
3475         default_scan_32x16_neighbors },
3476       { default_scan_32x16, av1_default_iscan_32x16,
3477         default_scan_32x16_neighbors },
3478       { default_scan_32x16, av1_default_iscan_32x16,
3479         default_scan_32x16_neighbors },
3480       { default_scan_32x16, av1_default_iscan_32x16,
3481         default_scan_32x16_neighbors },
3482       { default_scan_32x16, av1_default_iscan_32x16,
3483         default_scan_32x16_neighbors },
3484       { default_scan_32x16, av1_default_iscan_32x16,
3485         default_scan_32x16_neighbors },
3486       { default_scan_32x16, av1_default_iscan_32x16,
3487         default_scan_32x16_neighbors },
3488       { mrow_scan_32x16, av1_mrow_iscan_32x16, mrow_scan_32x16_neighbors },
3489       { mcol_scan_32x16, av1_mcol_iscan_32x16, mcol_scan_32x16_neighbors },
3490       { mrow_scan_32x16, av1_mrow_iscan_32x16, mrow_scan_32x16_neighbors },
3491       { mcol_scan_32x16, av1_mcol_iscan_32x16, mcol_scan_32x16_neighbors },
3492       { mrow_scan_32x16, av1_mrow_iscan_32x16, mrow_scan_32x16_neighbors },
3493       { mcol_scan_32x16, av1_mcol_iscan_32x16, mcol_scan_32x16_neighbors },
3494   },
3495   {
3496       // TX_32X64
3497       // Half of the coefficients of tx64 at higher frequencies are set to
3498       // zeros. So tx32's scan order is used.
3499       { default_scan_32x32, av1_default_iscan_32x32,
3500         default_scan_32x32_neighbors },
3501       { default_scan_32x32, av1_default_iscan_32x32,
3502         default_scan_32x32_neighbors },
3503       { default_scan_32x32, av1_default_iscan_32x32,
3504         default_scan_32x32_neighbors },
3505       { default_scan_32x32, av1_default_iscan_32x32,
3506         default_scan_32x32_neighbors },
3507       { default_scan_32x32, av1_default_iscan_32x32,
3508         default_scan_32x32_neighbors },
3509       { default_scan_32x32, av1_default_iscan_32x32,
3510         default_scan_32x32_neighbors },
3511       { default_scan_32x32, av1_default_iscan_32x32,
3512         default_scan_32x32_neighbors },
3513       { default_scan_32x32, av1_default_iscan_32x32,
3514         default_scan_32x32_neighbors },
3515       { default_scan_32x32, av1_default_iscan_32x32,
3516         default_scan_32x32_neighbors },
3517       { default_scan_32x32, av1_default_iscan_32x32,
3518         default_scan_32x32_neighbors },
3519       { mrow_scan_32x32, av1_mrow_iscan_32x32, mrow_scan_32x32_neighbors },
3520       { mcol_scan_32x32, av1_mcol_iscan_32x32, mcol_scan_32x32_neighbors },
3521       { mrow_scan_32x32, av1_mrow_iscan_32x32, mrow_scan_32x32_neighbors },
3522       { mcol_scan_32x32, av1_mcol_iscan_32x32, mcol_scan_32x32_neighbors },
3523       { mrow_scan_32x32, av1_mrow_iscan_32x32, mrow_scan_32x32_neighbors },
3524       { mcol_scan_32x32, av1_mcol_iscan_32x32, mcol_scan_32x32_neighbors },
3525   },
3526   {
3527       // TX_64X32
3528       // Half of the coefficients of tx64 at higher frequencies are set to
3529       // zeros. So tx32's scan order is used.
3530       { default_scan_32x32, av1_default_iscan_32x32,
3531         default_scan_32x32_neighbors },
3532       { default_scan_32x32, av1_default_iscan_32x32,
3533         default_scan_32x32_neighbors },
3534       { default_scan_32x32, av1_default_iscan_32x32,
3535         default_scan_32x32_neighbors },
3536       { default_scan_32x32, av1_default_iscan_32x32,
3537         default_scan_32x32_neighbors },
3538       { default_scan_32x32, av1_default_iscan_32x32,
3539         default_scan_32x32_neighbors },
3540       { default_scan_32x32, av1_default_iscan_32x32,
3541         default_scan_32x32_neighbors },
3542       { default_scan_32x32, av1_default_iscan_32x32,
3543         default_scan_32x32_neighbors },
3544       { default_scan_32x32, av1_default_iscan_32x32,
3545         default_scan_32x32_neighbors },
3546       { default_scan_32x32, av1_default_iscan_32x32,
3547         default_scan_32x32_neighbors },
3548       { default_scan_32x32, av1_default_iscan_32x32,
3549         default_scan_32x32_neighbors },
3550       { mrow_scan_32x32, av1_mrow_iscan_32x32, mrow_scan_32x32_neighbors },
3551       { mcol_scan_32x32, av1_mcol_iscan_32x32, mcol_scan_32x32_neighbors },
3552       { mrow_scan_32x32, av1_mrow_iscan_32x32, mrow_scan_32x32_neighbors },
3553       { mcol_scan_32x32, av1_mcol_iscan_32x32, mcol_scan_32x32_neighbors },
3554       { mrow_scan_32x32, av1_mrow_iscan_32x32, mrow_scan_32x32_neighbors },
3555       { mcol_scan_32x32, av1_mcol_iscan_32x32, mcol_scan_32x32_neighbors },
3556   },
3557   {
3558       // TX_4X16
3559       { default_scan_4x16, av1_default_iscan_4x16,
3560         default_scan_4x16_neighbors },
3561       { default_scan_4x16, av1_default_iscan_4x16,
3562         default_scan_4x16_neighbors },
3563       { default_scan_4x16, av1_default_iscan_4x16,
3564         default_scan_4x16_neighbors },
3565       { default_scan_4x16, av1_default_iscan_4x16,
3566         default_scan_4x16_neighbors },
3567       { default_scan_4x16, av1_default_iscan_4x16,
3568         default_scan_4x16_neighbors },
3569       { default_scan_4x16, av1_default_iscan_4x16,
3570         default_scan_4x16_neighbors },
3571       { default_scan_4x16, av1_default_iscan_4x16,
3572         default_scan_4x16_neighbors },
3573       { default_scan_4x16, av1_default_iscan_4x16,
3574         default_scan_4x16_neighbors },
3575       { default_scan_4x16, av1_default_iscan_4x16,
3576         default_scan_4x16_neighbors },
3577       { default_scan_4x16, av1_default_iscan_4x16,
3578         default_scan_4x16_neighbors },
3579       { mrow_scan_4x16, av1_mrow_iscan_4x16, mrow_scan_4x16_neighbors },
3580       { mcol_scan_4x16, av1_mcol_iscan_4x16, mcol_scan_4x16_neighbors },
3581       { mrow_scan_4x16, av1_mrow_iscan_4x16, mrow_scan_4x16_neighbors },
3582       { mcol_scan_4x16, av1_mcol_iscan_4x16, mcol_scan_4x16_neighbors },
3583       { mrow_scan_4x16, av1_mrow_iscan_4x16, mrow_scan_4x16_neighbors },
3584       { mcol_scan_4x16, av1_mcol_iscan_4x16, mcol_scan_4x16_neighbors },
3585   },
3586   {
3587       // TX_16X4
3588       { default_scan_16x4, av1_default_iscan_16x4,
3589         default_scan_16x4_neighbors },
3590       { default_scan_16x4, av1_default_iscan_16x4,
3591         default_scan_16x4_neighbors },
3592       { default_scan_16x4, av1_default_iscan_16x4,
3593         default_scan_16x4_neighbors },
3594       { default_scan_16x4, av1_default_iscan_16x4,
3595         default_scan_16x4_neighbors },
3596       { default_scan_16x4, av1_default_iscan_16x4,
3597         default_scan_16x4_neighbors },
3598       { default_scan_16x4, av1_default_iscan_16x4,
3599         default_scan_16x4_neighbors },
3600       { default_scan_16x4, av1_default_iscan_16x4,
3601         default_scan_16x4_neighbors },
3602       { default_scan_16x4, av1_default_iscan_16x4,
3603         default_scan_16x4_neighbors },
3604       { default_scan_16x4, av1_default_iscan_16x4,
3605         default_scan_16x4_neighbors },
3606       { default_scan_16x4, av1_default_iscan_16x4,
3607         default_scan_16x4_neighbors },
3608       { mrow_scan_16x4, av1_mrow_iscan_16x4, mrow_scan_16x4_neighbors },
3609       { mcol_scan_16x4, av1_mcol_iscan_16x4, mcol_scan_16x4_neighbors },
3610       { mrow_scan_16x4, av1_mrow_iscan_16x4, mrow_scan_16x4_neighbors },
3611       { mcol_scan_16x4, av1_mcol_iscan_16x4, mcol_scan_16x4_neighbors },
3612       { mrow_scan_16x4, av1_mrow_iscan_16x4, mrow_scan_16x4_neighbors },
3613       { mcol_scan_16x4, av1_mcol_iscan_16x4, mcol_scan_16x4_neighbors },
3614   },
3615   {
3616       // TX_8X32
3617       { default_scan_8x32, av1_default_iscan_8x32,
3618         default_scan_8x32_neighbors },
3619       { default_scan_8x32, av1_default_iscan_8x32,
3620         default_scan_8x32_neighbors },
3621       { default_scan_8x32, av1_default_iscan_8x32,
3622         default_scan_8x32_neighbors },
3623       { default_scan_8x32, av1_default_iscan_8x32,
3624         default_scan_8x32_neighbors },
3625       { default_scan_8x32, av1_default_iscan_8x32,
3626         default_scan_8x32_neighbors },
3627       { default_scan_8x32, av1_default_iscan_8x32,
3628         default_scan_8x32_neighbors },
3629       { default_scan_8x32, av1_default_iscan_8x32,
3630         default_scan_8x32_neighbors },
3631       { default_scan_8x32, av1_default_iscan_8x32,
3632         default_scan_8x32_neighbors },
3633       { default_scan_8x32, av1_default_iscan_8x32,
3634         default_scan_8x32_neighbors },
3635       { default_scan_8x32, av1_default_iscan_8x32,
3636         default_scan_8x32_neighbors },
3637       { mrow_scan_8x32, av1_mrow_iscan_8x32, mrow_scan_8x32_neighbors },
3638       { mcol_scan_8x32, av1_mcol_iscan_8x32, mcol_scan_8x32_neighbors },
3639       { mrow_scan_8x32, av1_mrow_iscan_8x32, mrow_scan_8x32_neighbors },
3640       { mcol_scan_8x32, av1_mcol_iscan_8x32, mcol_scan_8x32_neighbors },
3641       { mrow_scan_8x32, av1_mrow_iscan_8x32, mrow_scan_8x32_neighbors },
3642       { mcol_scan_8x32, av1_mcol_iscan_8x32, mcol_scan_8x32_neighbors },
3643   },
3644   {
3645       // TX_32X8
3646       { default_scan_32x8, av1_default_iscan_32x8,
3647         default_scan_32x8_neighbors },
3648       { default_scan_32x8, av1_default_iscan_32x8,
3649         default_scan_32x8_neighbors },
3650       { default_scan_32x8, av1_default_iscan_32x8,
3651         default_scan_32x8_neighbors },
3652       { default_scan_32x8, av1_default_iscan_32x8,
3653         default_scan_32x8_neighbors },
3654       { default_scan_32x8, av1_default_iscan_32x8,
3655         default_scan_32x8_neighbors },
3656       { default_scan_32x8, av1_default_iscan_32x8,
3657         default_scan_32x8_neighbors },
3658       { default_scan_32x8, av1_default_iscan_32x8,
3659         default_scan_32x8_neighbors },
3660       { default_scan_32x8, av1_default_iscan_32x8,
3661         default_scan_32x8_neighbors },
3662       { default_scan_32x8, av1_default_iscan_32x8,
3663         default_scan_32x8_neighbors },
3664       { default_scan_32x8, av1_default_iscan_32x8,
3665         default_scan_32x8_neighbors },
3666       { mrow_scan_32x8, av1_mrow_iscan_32x8, mrow_scan_32x8_neighbors },
3667       { mcol_scan_32x8, av1_mcol_iscan_32x8, mcol_scan_32x8_neighbors },
3668       { mrow_scan_32x8, av1_mrow_iscan_32x8, mrow_scan_32x8_neighbors },
3669       { mcol_scan_32x8, av1_mcol_iscan_32x8, mcol_scan_32x8_neighbors },
3670       { mrow_scan_32x8, av1_mrow_iscan_32x8, mrow_scan_32x8_neighbors },
3671       { mcol_scan_32x8, av1_mcol_iscan_32x8, mcol_scan_32x8_neighbors },
3672   },
3673   {
3674       // TX_16X64
3675       // Half of the coefficients of tx64 at higher frequencies are set to
3676       // zeros. So tx32's scan order is used.
3677       { default_scan_16x32, av1_default_iscan_16x32,
3678         default_scan_16x32_neighbors },
3679       { default_scan_16x32, av1_default_iscan_16x32,
3680         default_scan_16x32_neighbors },
3681       { default_scan_16x32, av1_default_iscan_16x32,
3682         default_scan_16x32_neighbors },
3683       { default_scan_16x32, av1_default_iscan_16x32,
3684         default_scan_16x32_neighbors },
3685       { default_scan_16x32, av1_default_iscan_16x32,
3686         default_scan_16x32_neighbors },
3687       { default_scan_16x32, av1_default_iscan_16x32,
3688         default_scan_16x32_neighbors },
3689       { default_scan_16x32, av1_default_iscan_16x32,
3690         default_scan_16x32_neighbors },
3691       { default_scan_16x32, av1_default_iscan_16x32,
3692         default_scan_16x32_neighbors },
3693       { default_scan_16x32, av1_default_iscan_16x32,
3694         default_scan_16x32_neighbors },
3695       { default_scan_16x32, av1_default_iscan_16x32,
3696         default_scan_16x32_neighbors },
3697       { mrow_scan_16x32, av1_mrow_iscan_16x32, mrow_scan_16x32_neighbors },
3698       { mcol_scan_16x32, av1_mcol_iscan_16x32, mcol_scan_16x32_neighbors },
3699       { mrow_scan_16x32, av1_mrow_iscan_16x32, mrow_scan_16x32_neighbors },
3700       { mcol_scan_16x32, av1_mcol_iscan_16x32, mcol_scan_16x32_neighbors },
3701       { mrow_scan_16x32, av1_mrow_iscan_16x32, mrow_scan_16x32_neighbors },
3702       { mcol_scan_16x32, av1_mcol_iscan_16x32, mcol_scan_16x32_neighbors },
3703   },
3704   {
3705       // TX_64X16
3706       // Half of the coefficients of tx64 at higher frequencies are set to
3707       // zeros. So tx32's scan order is used.
3708       { default_scan_32x16, av1_default_iscan_32x16,
3709         default_scan_32x16_neighbors },
3710       { default_scan_32x16, av1_default_iscan_32x16,
3711         default_scan_32x16_neighbors },
3712       { default_scan_32x16, av1_default_iscan_32x16,
3713         default_scan_32x16_neighbors },
3714       { default_scan_32x16, av1_default_iscan_32x16,
3715         default_scan_32x16_neighbors },
3716       { default_scan_32x16, av1_default_iscan_32x16,
3717         default_scan_32x16_neighbors },
3718       { default_scan_32x16, av1_default_iscan_32x16,
3719         default_scan_32x16_neighbors },
3720       { default_scan_32x16, av1_default_iscan_32x16,
3721         default_scan_32x16_neighbors },
3722       { default_scan_32x16, av1_default_iscan_32x16,
3723         default_scan_32x16_neighbors },
3724       { default_scan_32x16, av1_default_iscan_32x16,
3725         default_scan_32x16_neighbors },
3726       { default_scan_32x16, av1_default_iscan_32x16,
3727         default_scan_32x16_neighbors },
3728       { mrow_scan_32x16, av1_mrow_iscan_32x16, mrow_scan_32x16_neighbors },
3729       { mcol_scan_32x16, av1_mcol_iscan_32x16, mcol_scan_32x16_neighbors },
3730       { mrow_scan_32x16, av1_mrow_iscan_32x16, mrow_scan_32x16_neighbors },
3731       { mcol_scan_32x16, av1_mcol_iscan_32x16, mcol_scan_32x16_neighbors },
3732       { mrow_scan_32x16, av1_mrow_iscan_32x16, mrow_scan_32x16_neighbors },
3733       { mcol_scan_32x16, av1_mcol_iscan_32x16, mcol_scan_32x16_neighbors },
3734   },
3735 };
3736