]> granicus.if.org Git - libvpx/commitdiff
apply clang-format
authorclang-format <noreply@google.com>
Thu, 18 Aug 2016 22:10:22 +0000 (15:10 -0700)
committerJames Zern <jzern@google.com>
Thu, 18 Aug 2016 22:10:22 +0000 (15:10 -0700)
after:
253c001 Port dering experiment from aom
7208145 Adding 8x16/16x8/32x16/16x32 transforms

Change-Id: Id93e0d7b72a128701d8dec35fc2fac473944d0c1

20 files changed:
test/divu_small_test.cc
vp10/common/common_data.h
vp10/common/dering.c
vp10/common/dering.h
vp10/common/entropy.c
vp10/common/entropy.h
vp10/common/enums.h
vp10/common/idct.c
vp10/common/od_dering.c
vp10/common/od_dering.h
vp10/common/odintrin.c
vp10/common/odintrin.h
vp10/common/scan.c
vp10/decoder/decodeframe.c
vp10/encoder/bitstream.c
vp10/encoder/dct.c
vp10/encoder/encoder.c
vp10/encoder/hybrid_fwd_txfm.c
vp10/encoder/pickdering.c
vp10/encoder/rd.c

index a7cfbf7e10855598333fae6ea313ece5acb56770..3b00e052e7ffe32686a9114822e4b3e70af8abd2 100644 (file)
@@ -34,8 +34,9 @@ using libvpx_test::ACMRandom;
 TEST(Daala, TestDIVUuptoMAX) {
   for (int d = 1; d <= OD_DIVU_DMAX; d++) {
     for (uint32_t x = 1; x <= 1000000; x++) {
-      GTEST_ASSERT_EQ(x/d, OD_DIVU_SMALL(x, d)) << "x=" << x << " d=" << d <<
-       " x/d=" << (x/d) << " != " << OD_DIVU_SMALL(x, d);
+      GTEST_ASSERT_EQ(x / d, OD_DIVU_SMALL(x, d))
+          << "x=" << x << " d=" << d << " x/d=" << (x / d)
+          << " != " << OD_DIVU_SMALL(x, d);
     }
   }
 }
@@ -45,8 +46,9 @@ TEST(Daala, TestDIVUrandI31) {
   for (int d = 1; d < OD_DIVU_DMAX; d++) {
     for (int i = 0; i < 1000000; i++) {
       uint32_t x = rnd.Rand31();
-      GTEST_ASSERT_EQ(x/d, OD_DIVU_SMALL(x, d)) << "x=" << x << " d=" << d <<
-       " x/d=" << (x/d) << " != " << OD_DIVU_SMALL(x, d);
+      GTEST_ASSERT_EQ(x / d, OD_DIVU_SMALL(x, d))
+          << "x=" << x << " d=" << d << " x/d=" << (x / d)
+          << " != " << OD_DIVU_SMALL(x, d);
     }
   }
 }
index 084c825e363032b8ff756996482bdaeabe355789..2f42c37535978a8af7a09436bbcc67183cd0ab2c 100644 (file)
@@ -61,9 +61,9 @@ static const uint8_t num_16x16_blocks_high_lookup[BLOCK_SIZES] = {
 };
 
 static const uint8_t num_4x4_blocks_txsize_lookup[TX_SIZES_ALL] = {
-  1,  4, 16, 64,
+  1, 4, 16, 64,
 #if CONFIG_EXT_TX
-  2, 2, 8, 8, 32, 32
+  2, 2, 8,  8,  32, 32
 #endif  // CONFIG_EXT_TX
 };
 static const uint8_t num_4x4_blocks_wide_txsize_lookup[TX_SIZES_ALL] = {
@@ -380,7 +380,7 @@ static const BLOCK_SIZE txsize_to_bsize[TX_SIZES_ALL] = {
   BLOCK_16X8,   // TX_16X8
   BLOCK_16X32,  // TX_16X32
   BLOCK_32X16,  // TX_32X16
-#endif  // CONFIG_EXT_TX
+#endif          // CONFIG_EXT_TX
 };
 
 static const TX_SIZE txsize_sqr_map[TX_SIZES_ALL] = {
@@ -395,7 +395,7 @@ static const TX_SIZE txsize_sqr_map[TX_SIZES_ALL] = {
   TX_8X8,    // TX_16X8
   TX_16X16,  // TX_16X32
   TX_16X16,  // TX_32X16
-#endif  // CONFIG_EXT_TX
+#endif       // CONFIG_EXT_TX
 };
 
 static const TX_SIZE txsize_sqr_up_map[TX_SIZES_ALL] = {
@@ -410,7 +410,7 @@ static const TX_SIZE txsize_sqr_up_map[TX_SIZES_ALL] = {
   TX_16X16,  // TX_16X8
   TX_32X32,  // TX_16X32
   TX_32X32,  // TX_32X16
-#endif  // CONFIG_EXT_TX
+#endif       // CONFIG_EXT_TX
 };
 
 static const TX_SIZE tx_mode_to_biggest_tx_size[TX_MODES] = {
index f657c83fdef0d59c4436fbe1252b4f6c1a9a53e8..b7b8183d0380008b7842e12b3a56cd0a97c2adf7 100644 (file)
 #include "vp10/common/reconinter.h"
 #include "vp10/common/od_dering.h"
 
-
 int compute_level_from_index(int global_level, int gi) {
-  static const int dering_gains[DERING_REFINEMENT_LEVELS] = {0, 11, 16, 22};
+  static const int dering_gains[DERING_REFINEMENT_LEVELS] = { 0, 11, 16, 22 };
   int level;
   if (global_level == 0) return 0;
-  level = (global_level*dering_gains[gi] + 8) >> 4;
-  return clamp(level, gi, MAX_DERING_LEVEL-1);
+  level = (global_level * dering_gains[gi] + 8) >> 4;
+  return clamp(level, gi, MAX_DERING_LEVEL - 1);
 }
 
 int sb_all_skip(const VP10_COMMON *const cm, int mi_row, int mi_col) {
@@ -38,8 +37,8 @@ int sb_all_skip(const VP10_COMMON *const cm, int mi_row, int mi_col) {
   for (r = 0; r < maxr; r++) {
     for (c = 0; c < maxc; c++) {
       skip = skip &&
-          cm->mi_grid_visible[(mi_row + r)*cm->mi_stride + mi_col + c]->
-          mbmi.skip;
+             cm->mi_grid_visible[(mi_row + r) * cm->mi_stride + mi_col + c]
+                 ->mbmi.skip;
     }
   }
   return skip;
@@ -52,30 +51,29 @@ void vp10_dering_frame(YV12_BUFFER_CONFIG *frame, VP10_COMMON *cm,
   int nhsb, nvsb;
   od_dering_in *src[3];
   unsigned char *bskip;
-  int dir[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS] = {{0}};
+  int dir[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS] = { { 0 } };
   int stride;
   int bsize[3];
   int dec[3];
   int pli;
   int coeff_shift = VPXMAX(cm->bit_depth - 8, 0);
-  nvsb = (cm->mi_rows + MI_BLOCK_SIZE - 1)/MI_BLOCK_SIZE;
-  nhsb = (cm->mi_cols + MI_BLOCK_SIZE - 1)/MI_BLOCK_SIZE;
-  bskip = vpx_malloc(sizeof(*bskip)*cm->mi_rows*cm->mi_cols);
+  nvsb = (cm->mi_rows + MI_BLOCK_SIZE - 1) / MI_BLOCK_SIZE;
+  nhsb = (cm->mi_cols + MI_BLOCK_SIZE - 1) / MI_BLOCK_SIZE;
+  bskip = vpx_malloc(sizeof(*bskip) * cm->mi_rows * cm->mi_cols);
   vp10_setup_dst_planes(xd->plane, frame, 0, 0);
   for (pli = 0; pli < 3; pli++) {
     dec[pli] = xd->plane[pli].subsampling_x;
     bsize[pli] = 8 >> dec[pli];
   }
-  stride = bsize[0]*cm->mi_cols;
+  stride = bsize[0] * cm->mi_cols;
   for (pli = 0; pli < 3; pli++) {
-    src[pli] = vpx_malloc(sizeof(*src)*cm->mi_rows*cm->mi_cols*64);
-    for (r = 0; r < bsize[pli]*cm->mi_rows; ++r) {
-      for (c = 0; c < bsize[pli]*cm->mi_cols; ++c) {
+    src[pli] = vpx_malloc(sizeof(*src) * cm->mi_rows * cm->mi_cols * 64);
+    for (r = 0; r < bsize[pli] * cm->mi_rows; ++r) {
+      for (c = 0; c < bsize[pli] * cm->mi_cols; ++c) {
 #if CONFIG_VPX_HIGHBITDEPTH
         if (cm->use_highbitdepth) {
-          src[pli][r * stride + c] =
-              CONVERT_TO_SHORTPTR(xd->plane[pli].dst.buf)
-              [r * xd->plane[pli].dst.stride + c];
+          src[pli][r * stride + c] = CONVERT_TO_SHORTPTR(
+              xd->plane[pli].dst.buf)[r * xd->plane[pli].dst.stride + c];
         } else {
 #endif
           src[pli][r * stride + c] =
@@ -97,46 +95,48 @@ void vp10_dering_frame(YV12_BUFFER_CONFIG *frame, VP10_COMMON *cm,
     for (sbc = 0; sbc < nhsb; sbc++) {
       int level;
       int nhb, nvb;
-      nhb = VPXMIN(MI_BLOCK_SIZE, cm->mi_cols - MI_BLOCK_SIZE*sbc);
-      nvb = VPXMIN(MI_BLOCK_SIZE, cm->mi_rows - MI_BLOCK_SIZE*sbr);
+      nhb = VPXMIN(MI_BLOCK_SIZE, cm->mi_cols - MI_BLOCK_SIZE * sbc);
+      nvb = VPXMIN(MI_BLOCK_SIZE, cm->mi_rows - MI_BLOCK_SIZE * sbr);
       for (pli = 0; pli < 3; pli++) {
-        int16_t dst[MI_BLOCK_SIZE*MI_BLOCK_SIZE*8*8];
+        int16_t dst[MI_BLOCK_SIZE * MI_BLOCK_SIZE * 8 * 8];
         int threshold;
 #if DERING_REFINEMENT
         level = compute_level_from_index(
             global_level,
-            cm->mi_grid_visible[MI_BLOCK_SIZE*sbr*cm->mi_stride +
-            MI_BLOCK_SIZE*sbc]->mbmi.dering_gain);
+            cm->mi_grid_visible[MI_BLOCK_SIZE * sbr * cm->mi_stride +
+                                MI_BLOCK_SIZE * sbc]
+                ->mbmi.dering_gain);
 #else
-        level = global_level;
+          level = global_level;
 #endif
         /* FIXME: This is a temporary hack that uses more conservative
            deringing for chroma. */
-        if (pli) level = (level*5 + 4) >> 3;
-        if (sb_all_skip(cm, sbr*MI_BLOCK_SIZE, sbc*MI_BLOCK_SIZE)) level = 0;
+        if (pli) level = (level * 5 + 4) >> 3;
+        if (sb_all_skip(cm, sbr * MI_BLOCK_SIZE, sbc * MI_BLOCK_SIZE))
+          level = 0;
         threshold = level << coeff_shift;
         od_dering(
-            &OD_DERING_VTBL_C,
-            dst,
-            MI_BLOCK_SIZE*bsize[pli],
-            &src[pli][sbr*stride*bsize[pli]*MI_BLOCK_SIZE +
-            sbc*bsize[pli]*MI_BLOCK_SIZE],
+            &OD_DERING_VTBL_C, dst, MI_BLOCK_SIZE * bsize[pli],
+            &src[pli][sbr * stride * bsize[pli] * MI_BLOCK_SIZE +
+                      sbc * bsize[pli] * MI_BLOCK_SIZE],
             stride, nhb, nvb, sbc, sbr, nhsb, nvsb, dec[pli], dir, pli,
-            &bskip[MI_BLOCK_SIZE*sbr*cm->mi_cols + MI_BLOCK_SIZE*sbc],
+            &bskip[MI_BLOCK_SIZE * sbr * cm->mi_cols + MI_BLOCK_SIZE * sbc],
             cm->mi_cols, threshold, OD_DERING_NO_CHECK_OVERLAP, coeff_shift);
-        for (r = 0; r < bsize[pli]*nvb; ++r) {
-          for (c = 0; c < bsize[pli]*nhb; ++c) {
+        for (r = 0; r < bsize[pli] * nvb; ++r) {
+          for (c = 0; c < bsize[pli] * nhb; ++c) {
 #if CONFIG_VPX_HIGHBITDEPTH
             if (cm->use_highbitdepth) {
               CONVERT_TO_SHORTPTR(xd->plane[pli].dst.buf)
-                  [xd->plane[pli].dst.stride*(bsize[pli]*MI_BLOCK_SIZE*sbr + r)
-                  + sbc*bsize[pli]*MI_BLOCK_SIZE + c] =
+              [xd->plane[pli].dst.stride *
+                   (bsize[pli] * MI_BLOCK_SIZE * sbr + r) +
+               sbc * bsize[pli] * MI_BLOCK_SIZE + c] =
                   dst[r * MI_BLOCK_SIZE * bsize[pli] + c];
             } else {
 #endif
-              xd->plane[pli].dst.buf[xd->plane[pli].dst.stride*
-                  (bsize[pli]*MI_BLOCK_SIZE*sbr + r) +
-                  sbc*bsize[pli]*MI_BLOCK_SIZE + c] =
+              xd->plane[pli]
+                  .dst.buf[xd->plane[pli].dst.stride *
+                               (bsize[pli] * MI_BLOCK_SIZE * sbr + r) +
+                           sbc * bsize[pli] * MI_BLOCK_SIZE + c] =
                   dst[r * MI_BLOCK_SIZE * bsize[pli] + c];
 #if CONFIG_VPX_HIGHBITDEPTH
             }
index 946366a67a0b8235dfe14029a701449ad8adf045..706804b929ddc34f89cf7a13f4960d00acad9b4a 100644 (file)
@@ -24,8 +24,7 @@ void vp10_dering_frame(YV12_BUFFER_CONFIG *frame, VP10_COMMON *cm,
                        MACROBLOCKD *xd, int global_level);
 
 int vp10_dering_search(YV12_BUFFER_CONFIG *frame, const YV12_BUFFER_CONFIG *ref,
-                      VP10_COMMON *cm,
-                      MACROBLOCKD *xd);
+                       VP10_COMMON *cm, MACROBLOCKD *xd);
 
 #ifdef __cplusplus
 }  // extern "C"
index aa9c68cb7d40742da785118902f0732e76c77c46..2b84e08886232d7d8c02eb83dda545349d720c09 100644 (file)
@@ -59,12 +59,9 @@ const uint16_t band_count_table[TX_SIZES_ALL][8] = {
   { 1, 2, 3, 4, 3, 16 - 13, 0 },   { 1, 2, 3, 4, 11, 64 - 21, 0 },
   { 1, 2, 3, 4, 11, 256 - 21, 0 }, { 1, 2, 3, 4, 11, 1024 - 21, 0 },
 #if CONFIG_EXT_TX
-  { 1, 2, 3, 4,  8,   32 - 18, 0 },
-  { 1, 2, 3, 4,  8,   32 - 18, 0 },
-  { 1, 2, 3, 4,  11, 128 - 21, 0 },
-  { 1, 2, 3, 4,  11, 128 - 21, 0 },
-  { 1, 2, 3, 4,  11, 512 - 21, 0 },
-  { 1, 2, 3, 4,  11, 512 - 21, 0 },
+  { 1, 2, 3, 4, 8, 32 - 18, 0 },   { 1, 2, 3, 4, 8, 32 - 18, 0 },
+  { 1, 2, 3, 4, 11, 128 - 21, 0 }, { 1, 2, 3, 4, 11, 128 - 21, 0 },
+  { 1, 2, 3, 4, 11, 512 - 21, 0 }, { 1, 2, 3, 4, 11, 512 - 21, 0 },
 #endif  // CONFIG_EXT_TX
 };
 
@@ -72,12 +69,9 @@ const uint16_t band_cum_count_table[TX_SIZES_ALL][8] = {
   { 0, 1, 3, 6, 10, 13, 16, 0 },  { 0, 1, 3, 6, 10, 21, 64, 0 },
   { 0, 1, 3, 6, 10, 21, 256, 0 }, { 0, 1, 3, 6, 10, 21, 1024, 0 },
 #if CONFIG_EXT_TX
-  { 0, 1, 3, 6, 10, 18, 32, 0 },
-  { 0, 1, 3, 6, 10, 18, 32, 0 },
-  { 0, 1, 3, 6, 10, 21, 128, 0 },
-  { 0, 1, 3, 6, 10, 21, 128, 0 },
-  { 0, 1, 3, 6, 10, 21, 512, 0 },
-  { 0, 1, 3, 6, 10, 21, 512, 0 },
+  { 0, 1, 3, 6, 10, 18, 32, 0 },  { 0, 1, 3, 6, 10, 18, 32, 0 },
+  { 0, 1, 3, 6, 10, 21, 128, 0 }, { 0, 1, 3, 6, 10, 21, 128, 0 },
+  { 0, 1, 3, 6, 10, 21, 512, 0 }, { 0, 1, 3, 6, 10, 21, 512, 0 },
 #endif  // CONFIG_EXT_TX
 };
 
index 917f5b01788939e728ac67121ac3b7fc67959493..c90c9c811840f9cb3a1ab4fe48898e68dcf02bc2 100644 (file)
@@ -168,8 +168,7 @@ static INLINE const uint8_t *get_band_translate(TX_SIZE tx_size) {
   switch (tx_size) {
     case TX_4X4: return vp10_coefband_trans_4x4;
 #if CONFIG_EXT_TX
-    case TX_4X8:
-      return vp10_coefband_trans_4x8_8x4;
+    case TX_4X8: return vp10_coefband_trans_4x8_8x4;
 #endif  // CONFIG_EXT_TX
     default: return vp10_coefband_trans_8x8plus;
   }
@@ -230,19 +229,19 @@ static INLINE int get_entropy_context(TX_SIZE tx_size, const ENTROPY_CONTEXT *a,
       break;
     case TX_8X16:
       above_ec = !!*(const uint16_t *)a;
-      left_ec  = !!*(const uint32_t *)l;
+      left_ec = !!*(const uint32_t *)l;
       break;
     case TX_16X8:
       above_ec = !!*(const uint32_t *)a;
-      left_ec  = !!*(const uint16_t *)l;
+      left_ec = !!*(const uint16_t *)l;
       break;
     case TX_16X32:
       above_ec = !!*(const uint32_t *)a;
-      left_ec  = !!*(const uint64_t *)l;
+      left_ec = !!*(const uint64_t *)l;
       break;
     case TX_32X16:
       above_ec = !!*(const uint64_t *)a;
-      left_ec  = !!*(const uint32_t *)l;
+      left_ec = !!*(const uint32_t *)l;
       break;
 #endif  // CONFIG_EXT_TX
     case TX_8X8:
index 60fa43ee5b8742fd0592b45d5c74ae1cf534a0d3..05cb42358c2a197100a5c32f62545880526b56bc 100644 (file)
@@ -138,12 +138,12 @@ typedef uint8_t TX_SIZE;
 #define TX_SIZES ((TX_SIZE)4)
 
 #if CONFIG_EXT_TX
-#define TX_4X8     ((TX_SIZE)4)      // 4x8 transform
-#define TX_8X4     ((TX_SIZE)5)      // 8x4 transform
-#define TX_8X16    ((TX_SIZE)6)      // 8x16 transform
-#define TX_16X8    ((TX_SIZE)7)      // 16x8 transform
-#define TX_16X32   ((TX_SIZE)8)      // 16x32 transform
-#define TX_32X16   ((TX_SIZE)9)      // 32x16 transform
+#define TX_4X8 ((TX_SIZE)4)         // 4x8 transform
+#define TX_8X4 ((TX_SIZE)5)         // 8x4 transform
+#define TX_8X16 ((TX_SIZE)6)        // 8x16 transform
+#define TX_16X8 ((TX_SIZE)7)        // 16x8 transform
+#define TX_16X32 ((TX_SIZE)8)       // 16x32 transform
+#define TX_32X16 ((TX_SIZE)9)       // 32x16 transform
 #define TX_SIZES_ALL ((TX_SIZE)10)  // Includes rectangular transforms
 #else
 #define TX_SIZES_ALL ((TX_SIZE)4)
index c3add18d6237adcab8a0d63d3f9218e446bc9f14..c19c684cc59c6388ee4ea90a8fe027c234dc5995 100644 (file)
@@ -548,8 +548,8 @@ void vp10_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int stride,
     { iadst8_c, idct4_c },   // ADST_DCT
     { idct8_c, iadst4_c },   // DCT_ADST
     { iadst8_c, iadst4_c },  // ADST_ADST
-    { iadst8_c, idct4_c  },  // FLIPADST_DCT
-    { idct8_c,  iadst4_c },  // DCT_FLIPADST
+    { iadst8_c, idct4_c },   // FLIPADST_DCT
+    { idct8_c, iadst4_c },   // DCT_FLIPADST
     { iadst8_c, iadst4_c },  // FLIPADST_FLIPADST
     { iadst8_c, iadst4_c },  // ADST_FLIPADST
     { iadst8_c, iadst4_c },  // FLIPADST_ADST
@@ -601,8 +601,8 @@ void vp10_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int stride,
     { iadst4_c, idct8_c },   // ADST_DCT
     { idct4_c, iadst8_c },   // DCT_ADST
     { iadst4_c, iadst8_c },  // ADST_ADST
-    { iadst4_c, idct8_c  },  // FLIPADST_DCT
-    { idct4_c,  iadst8_c },  // DCT_FLIPADST
+    { iadst4_c, idct8_c },   // FLIPADST_DCT
+    { idct4_c, iadst8_c },   // DCT_FLIPADST
     { iadst4_c, iadst8_c },  // FLIPADST_FLIPADST
     { iadst4_c, iadst8_c },  // ADST_FLIPADST
     { iadst4_c, iadst8_c },  // FLIPADST_ADST
@@ -647,21 +647,21 @@ void vp10_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int stride,
   }
 }
 
-void vp10_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest,
-                            int stride, int tx_type) {
+void vp10_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int stride,
+                            int tx_type) {
   static const transform_2d IHT_8x16[] = {
-    { idct16_c,  idct8_c  },  // DCT_DCT
-    { iadst16_c, idct8_c  },  // ADST_DCT
-    { idct16_c,  iadst8_c },  // DCT_ADST
+    { idct16_c, idct8_c },    // DCT_DCT
+    { iadst16_c, idct8_c },   // ADST_DCT
+    { idct16_c, iadst8_c },   // DCT_ADST
     { iadst16_c, iadst8_c },  // ADST_ADST
-    { iadst16_c, idct8_c  },  // FLIPADST_DCT
-    { idct16_c,  iadst8_c },  // DCT_FLIPADST
+    { iadst16_c, idct8_c },   // FLIPADST_DCT
+    { idct16_c, iadst8_c },   // DCT_FLIPADST
     { iadst16_c, iadst8_c },  // FLIPADST_FLIPADST
     { iadst16_c, iadst8_c },  // ADST_FLIPADST
     { iadst16_c, iadst8_c },  // FLIPADST_ADST
     { iidtx16_c, iidtx8_c },  // IDTX
-    { idct16_c,  iidtx8_c },  // V_DCT
-    { iidtx16_c, idct8_c  },  // H_DCT
+    { idct16_c, iidtx8_c },   // V_DCT
+    { iidtx16_c, idct8_c },   // H_DCT
     { iadst16_c, iidtx8_c },  // V_ADST
     { iidtx16_c, iadst8_c },  // H_ADST
     { iadst16_c, iidtx8_c },  // V_FLIPADST
@@ -680,7 +680,7 @@ void vp10_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest,
     IHT_8x16[tx_type].rows(input, outtmp);
     for (j = 0; j < n; ++j)
       out[j][i] = (tran_low_t)dct_const_round_shift(outtmp[j] * Sqrt2);
-    input  += n;
+    input += n;
   }
 
   // inverse transform column vectors
@@ -700,21 +700,21 @@ void vp10_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest,
   }
 }
 
-void vp10_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest,
-                            int stride, int tx_type) {
+void vp10_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int stride,
+                            int tx_type) {
   static const transform_2d IHT_16x8[] = {
-    { idct8_c,  idct16_c  },  // DCT_DCT
-    { iadst8_c, idct16_c  },  // ADST_DCT
-    { idct8_c,  iadst16_c },  // DCT_ADST
+    { idct8_c, idct16_c },    // DCT_DCT
+    { iadst8_c, idct16_c },   // ADST_DCT
+    { idct8_c, iadst16_c },   // DCT_ADST
     { iadst8_c, iadst16_c },  // ADST_ADST
-    { iadst8_c, idct16_c  },  // FLIPADST_DCT
-    { idct8_c,  iadst16_c },  // DCT_FLIPADST
+    { iadst8_c, idct16_c },   // FLIPADST_DCT
+    { idct8_c, iadst16_c },   // DCT_FLIPADST
     { iadst8_c, iadst16_c },  // FLIPADST_FLIPADST
     { iadst8_c, iadst16_c },  // ADST_FLIPADST
     { iadst8_c, iadst16_c },  // FLIPADST_ADST
     { iidtx8_c, iidtx16_c },  // IDTX
-    { idct8_c,  iidtx16_c },  // V_DCT
-    { iidtx8_c, idct16_c  },  // H_DCT
+    { idct8_c, iidtx16_c },   // V_DCT
+    { iidtx8_c, idct16_c },   // H_DCT
     { iadst8_c, iidtx16_c },  // V_ADST
     { iidtx8_c, iadst16_c },  // H_ADST
     { iadst8_c, iidtx16_c },  // V_FLIPADST
@@ -733,7 +733,7 @@ void vp10_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest,
     IHT_16x8[tx_type].rows(input, outtmp);
     for (j = 0; j < n2; ++j)
       out[j][i] = (tran_low_t)dct_const_round_shift(outtmp[j] * Sqrt2);
-    input  += n2;
+    input += n2;
   }
 
   // inverse transform column vectors
@@ -753,25 +753,25 @@ void vp10_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest,
   }
 }
 
-void vp10_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest,
-                             int stride, int tx_type) {
+void vp10_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int stride,
+                             int tx_type) {
   static const transform_2d IHT_16x32[] = {
-    { idct32_c,  idct16_c       },  // DCT_DCT
-    { ihalfright32_c, idct16_c  },  // ADST_DCT
-    { idct32_c,  iadst16_c      },  // DCT_ADST
+    { idct32_c, idct16_c },         // DCT_DCT
+    { ihalfright32_c, idct16_c },   // ADST_DCT
+    { idct32_c, iadst16_c },        // DCT_ADST
     { ihalfright32_c, iadst16_c },  // ADST_ADST
-    { ihalfright32_c, idct16_c  },  // FLIPADST_DCT
-    { idct32_c,  iadst16_c      },  // DCT_FLIPADST
+    { ihalfright32_c, idct16_c },   // FLIPADST_DCT
+    { idct32_c, iadst16_c },        // DCT_FLIPADST
     { ihalfright32_c, iadst16_c },  // FLIPADST_FLIPADST
     { ihalfright32_c, iadst16_c },  // ADST_FLIPADST
     { ihalfright32_c, iadst16_c },  // FLIPADST_ADST
-    { iidtx32_c, iidtx16_c      },  // IDTX
-    { idct32_c,  iidtx16_c      },  // V_DCT
-    { iidtx32_c, idct16_c       },  // H_DCT
+    { iidtx32_c, iidtx16_c },       // IDTX
+    { idct32_c, iidtx16_c },        // V_DCT
+    { iidtx32_c, idct16_c },        // H_DCT
     { ihalfright32_c, iidtx16_c },  // V_ADST
-    { iidtx32_c, iadst16_c      },  // H_ADST
+    { iidtx32_c, iadst16_c },       // H_ADST
     { ihalfright32_c, iidtx16_c },  // V_FLIPADST
-    { iidtx32_c, iadst16_c      },  // H_FLIPADST
+    { iidtx32_c, iadst16_c },       // H_FLIPADST
   };
 
   const int n = 16;
@@ -786,7 +786,7 @@ void vp10_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest,
     IHT_16x32[tx_type].rows(input, outtmp);
     for (j = 0; j < n; ++j)
       out[j][i] = (tran_low_t)dct_const_round_shift(outtmp[j] * Sqrt2);
-    input  += n;
+    input += n;
   }
 
   // inverse transform column vectors
@@ -806,24 +806,24 @@ void vp10_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest,
   }
 }
 
-void vp10_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest,
-                             int stride, int tx_type) {
+void vp10_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int stride,
+                             int tx_type) {
   static const transform_2d IHT_32x16[] = {
-    { idct16_c,  idct32_c       },  // DCT_DCT
-    { iadst16_c, idct32_c       },  // ADST_DCT
-    { idct16_c,  ihalfright32_c },  // DCT_ADST
+    { idct16_c, idct32_c },         // DCT_DCT
+    { iadst16_c, idct32_c },        // ADST_DCT
+    { idct16_c, ihalfright32_c },   // DCT_ADST
     { iadst16_c, ihalfright32_c },  // ADST_ADST
-    { iadst16_c, idct32_c       },  // FLIPADST_DCT
-    { idct16_c,  ihalfright32_c },  // DCT_FLIPADST
+    { iadst16_c, idct32_c },        // FLIPADST_DCT
+    { idct16_c, ihalfright32_c },   // DCT_FLIPADST
     { iadst16_c, ihalfright32_c },  // FLIPADST_FLIPADST
     { iadst16_c, ihalfright32_c },  // ADST_FLIPADST
     { iadst16_c, ihalfright32_c },  // FLIPADST_ADST
-    { iidtx16_c, iidtx32_c      },  // IDTX
-    { idct16_c,  iidtx32_c      },  // V_DCT
-    { iidtx16_c, idct32_c       },  // H_DCT
-    { iadst16_c, iidtx32_c      },  // V_ADST
+    { iidtx16_c, iidtx32_c },       // IDTX
+    { idct16_c, iidtx32_c },        // V_DCT
+    { iidtx16_c, idct32_c },        // H_DCT
+    { iadst16_c, iidtx32_c },       // V_ADST
     { iidtx16_c, ihalfright32_c },  // H_ADST
-    { iadst16_c, iidtx32_c      },  // V_FLIPADST
+    { iadst16_c, iidtx32_c },       // V_FLIPADST
     { iidtx16_c, ihalfright32_c },  // H_FLIPADST
   };
   const int n = 16;
@@ -839,7 +839,7 @@ void vp10_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest,
     IHT_32x16[tx_type].rows(input, outtmp);
     for (j = 0; j < n2; ++j)
       out[j][i] = (tran_low_t)dct_const_round_shift(outtmp[j] * Sqrt2);
-    input  += n2;
+    input += n2;
   }
 
   // inverse transform column vectors
@@ -1140,39 +1140,39 @@ void vp10_inv_txfm_add_4x4(const tran_low_t *input, uint8_t *dest, int stride,
 }
 
 #if CONFIG_EXT_TX
-void vp10_inv_txfm_add_4x8(const tran_low_t *input, uint8_t *dest,
-                           int stride, int eob, TX_TYPE tx_type) {
-  (void) eob;
+void vp10_inv_txfm_add_4x8(const tran_low_t *input, uint8_t *dest, int stride,
+                           int eob, TX_TYPE tx_type) {
+  (void)eob;
   vp10_iht4x8_32_add(input, dest, stride, tx_type);
 }
 
-void vp10_inv_txfm_add_8x4(const tran_low_t *input, uint8_t *dest,
-                           int stride, int eob, TX_TYPE tx_type) {
-  (void) eob;
+void vp10_inv_txfm_add_8x4(const tran_low_t *input, uint8_t *dest, int stride,
+                           int eob, TX_TYPE tx_type) {
+  (void)eob;
   vp10_iht8x4_32_add(input, dest, stride, tx_type);
 }
 
-void vp10_inv_txfm_add_8x16(const tran_low_t *input, uint8_t *dest,
-                            int stride, int eob, TX_TYPE tx_type) {
-  (void) eob;
+void vp10_inv_txfm_add_8x16(const tran_low_t *input, uint8_t *dest, int stride,
+                            int eob, TX_TYPE tx_type) {
+  (void)eob;
   vp10_iht8x16_128_add(input, dest, stride, tx_type);
 }
 
-void vp10_inv_txfm_add_16x8(const tran_low_t *input, uint8_t *dest,
-                           int stride, int eob, TX_TYPE tx_type) {
-  (void) eob;
+void vp10_inv_txfm_add_16x8(const tran_low_t *input, uint8_t *dest, int stride,
+                            int eob, TX_TYPE tx_type) {
+  (void)eob;
   vp10_iht16x8_128_add(input, dest, stride, tx_type);
 }
 
-void vp10_inv_txfm_add_16x32(const tran_low_t *input, uint8_t *dest,
-                             int stride, int eob, TX_TYPE tx_type) {
-  (void) eob;
+void vp10_inv_txfm_add_16x32(const tran_low_t *input, uint8_t *dest, int stride,
+                             int eob, TX_TYPE tx_type) {
+  (void)eob;
   vp10_iht16x32_512_add(input, dest, stride, tx_type);
 }
 
-void vp10_inv_txfm_add_32x16(const tran_low_t *input, uint8_t *dest,
-                             int stride, int eob, TX_TYPE tx_type) {
-  (void) eob;
+void vp10_inv_txfm_add_32x16(const tran_low_t *input, uint8_t *dest, int stride,
+                             int eob, TX_TYPE tx_type) {
+  (void)eob;
   vp10_iht32x16_512_add(input, dest, stride, tx_type);
 }
 #endif  // CONFIG_EXT_TX
@@ -1364,8 +1364,8 @@ void vp10_highbd_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest8,
   for (i = 0; i < n2; ++i) {
     HIGH_IHT_4x8[tx_type].rows(input, outtmp, bd);
     for (j = 0; j < n; ++j) {
-      out[j][i] = HIGHBD_WRAPLOW(
-          highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd);
+      out[j][i] =
+          HIGHBD_WRAPLOW(highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd);
     }
     input += n;
   }
@@ -1422,10 +1422,10 @@ void vp10_highbd_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest8,
   for (i = 0; i < n; ++i) {
     HIGH_IHT_8x4[tx_type].rows(input, outtmp, bd);
     for (j = 0; j < n2; ++j) {
-      out[j][i] = HIGHBD_WRAPLOW(
-          highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd);
+      out[j][i] =
+          HIGHBD_WRAPLOW(highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd);
     }
-    input  += n2;
+    input += n2;
   }
 
   // inverse transform column vectors
@@ -1449,22 +1449,22 @@ void vp10_highbd_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest8,
 void vp10_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest8,
                                    int stride, int tx_type, int bd) {
   static const highbd_transform_2d HIGH_IHT_8x16[] = {
-    { vpx_highbd_idct16_c,  vpx_highbd_idct8_c  },  // DCT_DCT
-    { vpx_highbd_iadst16_c, vpx_highbd_idct8_c  },  // ADST_DCT
-    { vpx_highbd_idct16_c,  vpx_highbd_iadst8_c },  // DCT_ADST
+    { vpx_highbd_idct16_c, vpx_highbd_idct8_c },    // DCT_DCT
+    { vpx_highbd_iadst16_c, vpx_highbd_idct8_c },   // ADST_DCT
+    { vpx_highbd_idct16_c, vpx_highbd_iadst8_c },   // DCT_ADST
     { vpx_highbd_iadst16_c, vpx_highbd_iadst8_c },  // ADST_ADST
-    { vpx_highbd_iadst16_c, vpx_highbd_idct8_c  },  // FLIPADST_DCT
-    { vpx_highbd_idct16_c,  vpx_highbd_iadst8_c },  // DCT_FLIPADST
+    { vpx_highbd_iadst16_c, vpx_highbd_idct8_c },   // FLIPADST_DCT
+    { vpx_highbd_idct16_c, vpx_highbd_iadst8_c },   // DCT_FLIPADST
     { vpx_highbd_iadst16_c, vpx_highbd_iadst8_c },  // FLIPADST_FLIPADST
     { vpx_highbd_iadst16_c, vpx_highbd_iadst8_c },  // ADST_FLIPADST
     { vpx_highbd_iadst16_c, vpx_highbd_iadst8_c },  // FLIPADST_ADST
-    {     highbd_iidtx16_c,     highbd_iidtx8_c },  // IDTX
-    { vpx_highbd_idct16_c,      highbd_iidtx8_c },  // V_DCT
-    {     highbd_iidtx16_c, vpx_highbd_idct8_c  },  // H_DCT
-    { vpx_highbd_iadst16_c,     highbd_iidtx8_c },  // V_ADST
-    {     highbd_iidtx16_c, vpx_highbd_iadst8_c },  // H_ADST
-    { vpx_highbd_iadst16_c,     highbd_iidtx8_c },  // V_FLIPADST
-    {     highbd_iidtx16_c, vpx_highbd_iadst8_c },  // H_FLIPADST
+    { highbd_iidtx16_c, highbd_iidtx8_c },          // IDTX
+    { vpx_highbd_idct16_c, highbd_iidtx8_c },       // V_DCT
+    { highbd_iidtx16_c, vpx_highbd_idct8_c },       // H_DCT
+    { vpx_highbd_iadst16_c, highbd_iidtx8_c },      // V_ADST
+    { highbd_iidtx16_c, vpx_highbd_iadst8_c },      // H_ADST
+    { vpx_highbd_iadst16_c, highbd_iidtx8_c },      // V_FLIPADST
+    { highbd_iidtx16_c, vpx_highbd_iadst8_c },      // H_FLIPADST
   };
   const int n = 8;
   const int n2 = 16;
@@ -1480,9 +1480,9 @@ void vp10_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest8,
   for (i = 0; i < n2; ++i) {
     HIGH_IHT_8x16[tx_type].rows(input, outtmp, bd);
     for (j = 0; j < n; ++j)
-      out[j][i] = HIGHBD_WRAPLOW(
-          highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd);
-    input  += n;
+      out[j][i] =
+          HIGHBD_WRAPLOW(highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd);
+    input += n;
   }
 
   // inverse transform column vectors
@@ -1497,8 +1497,8 @@ void vp10_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest8,
     for (j = 0; j < n; ++j) {
       int d = i * stride + j;
       int s = j * outstride + i;
-      dest[d] = highbd_clip_pixel_add(dest[d],
-                                      ROUND_POWER_OF_TWO(outp[s], 6), bd);
+      dest[d] =
+          highbd_clip_pixel_add(dest[d], ROUND_POWER_OF_TWO(outp[s], 6), bd);
     }
   }
 }
@@ -1506,22 +1506,22 @@ void vp10_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest8,
 void vp10_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest8,
                                    int stride, int tx_type, int bd) {
   static const highbd_transform_2d HIGH_IHT_16x8[] = {
-    { vpx_highbd_idct8_c,  vpx_highbd_idct16_c  },  // DCT_DCT
-    { vpx_highbd_iadst8_c, vpx_highbd_idct16_c  },  // ADST_DCT
-    { vpx_highbd_idct8_c,  vpx_highbd_iadst16_c },  // DCT_ADST
+    { vpx_highbd_idct8_c, vpx_highbd_idct16_c },    // DCT_DCT
+    { vpx_highbd_iadst8_c, vpx_highbd_idct16_c },   // ADST_DCT
+    { vpx_highbd_idct8_c, vpx_highbd_iadst16_c },   // DCT_ADST
     { vpx_highbd_iadst8_c, vpx_highbd_iadst16_c },  // ADST_ADST
-    { vpx_highbd_iadst8_c, vpx_highbd_idct16_c  },  // FLIPADST_DCT
-    { vpx_highbd_idct8_c,  vpx_highbd_iadst16_c },  // DCT_FLIPADST
+    { vpx_highbd_iadst8_c, vpx_highbd_idct16_c },   // FLIPADST_DCT
+    { vpx_highbd_idct8_c, vpx_highbd_iadst16_c },   // DCT_FLIPADST
     { vpx_highbd_iadst8_c, vpx_highbd_iadst16_c },  // FLIPADST_FLIPADST
     { vpx_highbd_iadst8_c, vpx_highbd_iadst16_c },  // ADST_FLIPADST
     { vpx_highbd_iadst8_c, vpx_highbd_iadst16_c },  // FLIPADST_ADST
-    {     highbd_iidtx8_c,     highbd_iidtx16_c },  // IDTX
-    { vpx_highbd_idct8_c,      highbd_iidtx16_c },  // V_DCT
-    {     highbd_iidtx8_c, vpx_highbd_idct16_c  },  // H_DCT
-    { vpx_highbd_iadst8_c,     highbd_iidtx16_c },  // V_ADST
-    {     highbd_iidtx8_c, vpx_highbd_iadst16_c },  // H_ADST
-    { vpx_highbd_iadst8_c,     highbd_iidtx16_c },  // V_FLIPADST
-    {     highbd_iidtx8_c, vpx_highbd_iadst16_c },  // H_FLIPADST
+    { highbd_iidtx8_c, highbd_iidtx16_c },          // IDTX
+    { vpx_highbd_idct8_c, highbd_iidtx16_c },       // V_DCT
+    { highbd_iidtx8_c, vpx_highbd_idct16_c },       // H_DCT
+    { vpx_highbd_iadst8_c, highbd_iidtx16_c },      // V_ADST
+    { highbd_iidtx8_c, vpx_highbd_iadst16_c },      // H_ADST
+    { vpx_highbd_iadst8_c, highbd_iidtx16_c },      // V_FLIPADST
+    { highbd_iidtx8_c, vpx_highbd_iadst16_c },      // H_FLIPADST
   };
   const int n = 8;
   const int n2 = 16;
@@ -1537,9 +1537,9 @@ void vp10_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest8,
   for (i = 0; i < n; ++i) {
     HIGH_IHT_16x8[tx_type].rows(input, outtmp, bd);
     for (j = 0; j < n2; ++j)
-      out[j][i] = HIGHBD_WRAPLOW(
-          highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd);
-    input  += n2;
+      out[j][i] =
+          HIGHBD_WRAPLOW(highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd);
+    input += n2;
   }
 
   // inverse transform column vectors
@@ -1554,31 +1554,31 @@ void vp10_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest8,
     for (j = 0; j < n2; ++j) {
       int d = i * stride + j;
       int s = j * outstride + i;
-      dest[d] = highbd_clip_pixel_add(dest[d],
-                                      ROUND_POWER_OF_TWO(outp[s], 6), bd);
+      dest[d] =
+          highbd_clip_pixel_add(dest[d], ROUND_POWER_OF_TWO(outp[s], 6), bd);
     }
   }
 }
 
 void vp10_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest8,
-                                   int stride, int tx_type, int bd) {
+                                    int stride, int tx_type, int bd) {
   static const highbd_transform_2d HIGH_IHT_16x32[] = {
-    { vpx_highbd_idct32_c,   vpx_highbd_idct16_c  },  // DCT_DCT
-    { highbd_ihalfright32_c, vpx_highbd_idct16_c  },  // ADST_DCT
-    { vpx_highbd_idct32_c,   vpx_highbd_iadst16_c },  // DCT_ADST
+    { vpx_highbd_idct32_c, vpx_highbd_idct16_c },     // DCT_DCT
+    { highbd_ihalfright32_c, vpx_highbd_idct16_c },   // ADST_DCT
+    { vpx_highbd_idct32_c, vpx_highbd_iadst16_c },    // DCT_ADST
     { highbd_ihalfright32_c, vpx_highbd_iadst16_c },  // ADST_ADST
-    { highbd_ihalfright32_c, vpx_highbd_idct16_c  },  // FLIPADST_DCT
-    { vpx_highbd_idct32_c,   vpx_highbd_iadst16_c },  // DCT_FLIPADST
+    { highbd_ihalfright32_c, vpx_highbd_idct16_c },   // FLIPADST_DCT
+    { vpx_highbd_idct32_c, vpx_highbd_iadst16_c },    // DCT_FLIPADST
     { highbd_ihalfright32_c, vpx_highbd_iadst16_c },  // FLIPADST_FLIPADST
     { highbd_ihalfright32_c, vpx_highbd_iadst16_c },  // ADST_FLIPADST
     { highbd_ihalfright32_c, vpx_highbd_iadst16_c },  // FLIPADST_ADST
-    {     highbd_iidtx32_c,      highbd_iidtx16_c },  // IDTX
-    { vpx_highbd_idct32_c,       highbd_iidtx16_c },  // V_DCT
-    {     highbd_iidtx32_c,  vpx_highbd_idct16_c  },  // H_DCT
-    { highbd_ihalfright32_c,     highbd_iidtx16_c },  // V_ADST
-    {     highbd_iidtx32_c,  vpx_highbd_iadst16_c },  // H_ADST
-    { highbd_ihalfright32_c,     highbd_iidtx16_c },  // V_FLIPADST
-    {     highbd_iidtx32_c,  vpx_highbd_iadst16_c },  // H_FLIPADST
+    { highbd_iidtx32_c, highbd_iidtx16_c },           // IDTX
+    { vpx_highbd_idct32_c, highbd_iidtx16_c },        // V_DCT
+    { highbd_iidtx32_c, vpx_highbd_idct16_c },        // H_DCT
+    { highbd_ihalfright32_c, highbd_iidtx16_c },      // V_ADST
+    { highbd_iidtx32_c, vpx_highbd_iadst16_c },       // H_ADST
+    { highbd_ihalfright32_c, highbd_iidtx16_c },      // V_FLIPADST
+    { highbd_iidtx32_c, vpx_highbd_iadst16_c },       // H_FLIPADST
   };
   const int n = 16;
   const int n2 = 32;
@@ -1594,9 +1594,9 @@ void vp10_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest8,
   for (i = 0; i < n2; ++i) {
     HIGH_IHT_16x32[tx_type].rows(input, outtmp, bd);
     for (j = 0; j < n; ++j)
-      out[j][i] = HIGHBD_WRAPLOW(
-          highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd);
-    input  += n;
+      out[j][i] =
+          HIGHBD_WRAPLOW(highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd);
+    input += n;
   }
 
   // inverse transform column vectors
@@ -1611,8 +1611,8 @@ void vp10_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest8,
     for (j = 0; j < n; ++j) {
       int d = i * stride + j;
       int s = j * outstride + i;
-      dest[d] = highbd_clip_pixel_add(dest[d],
-                                      ROUND_POWER_OF_TWO(outp[s], 6), bd);
+      dest[d] =
+          highbd_clip_pixel_add(dest[d], ROUND_POWER_OF_TWO(outp[s], 6), bd);
     }
   }
 }
@@ -1620,22 +1620,22 @@ void vp10_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest8,
 void vp10_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest8,
                                     int stride, int tx_type, int bd) {
   static const highbd_transform_2d HIGH_IHT_32x16[] = {
-    { vpx_highbd_idct16_c,  vpx_highbd_idct32_c   },  // DCT_DCT
-    { vpx_highbd_iadst16_c, vpx_highbd_idct32_c   },  // ADST_DCT
-    { vpx_highbd_idct16_c,  highbd_ihalfright32_c },  // DCT_ADST
+    { vpx_highbd_idct16_c, vpx_highbd_idct32_c },     // DCT_DCT
+    { vpx_highbd_iadst16_c, vpx_highbd_idct32_c },    // ADST_DCT
+    { vpx_highbd_idct16_c, highbd_ihalfright32_c },   // DCT_ADST
     { vpx_highbd_iadst16_c, highbd_ihalfright32_c },  // ADST_ADST
-    { vpx_highbd_iadst16_c, vpx_highbd_idct32_c   },  // FLIPADST_DCT
-    { vpx_highbd_idct16_c,  highbd_ihalfright32_c },  // DCT_FLIPADST
+    { vpx_highbd_iadst16_c, vpx_highbd_idct32_c },    // FLIPADST_DCT
+    { vpx_highbd_idct16_c, highbd_ihalfright32_c },   // DCT_FLIPADST
     { vpx_highbd_iadst16_c, highbd_ihalfright32_c },  // FLIPADST_FLIPADST
     { vpx_highbd_iadst16_c, highbd_ihalfright32_c },  // ADST_FLIPADST
     { vpx_highbd_iadst16_c, highbd_ihalfright32_c },  // FLIPADST_ADST
-    {     highbd_iidtx16_c,     highbd_iidtx32_c  },  // IDTX
-    { vpx_highbd_idct16_c,      highbd_iidtx32_c  },  // V_DCT
-    {     highbd_iidtx16_c, vpx_highbd_idct32_c   },  // H_DCT
-    { vpx_highbd_iadst16_c,     highbd_iidtx32_c  },  // V_ADST
-    {     highbd_iidtx16_c, highbd_ihalfright32_c },  // H_ADST
-    { vpx_highbd_iadst16_c,     highbd_iidtx32_c  },  // V_FLIPADST
-    {     highbd_iidtx16_c, highbd_ihalfright32_c },  // H_FLIPADST
+    { highbd_iidtx16_c, highbd_iidtx32_c },           // IDTX
+    { vpx_highbd_idct16_c, highbd_iidtx32_c },        // V_DCT
+    { highbd_iidtx16_c, vpx_highbd_idct32_c },        // H_DCT
+    { vpx_highbd_iadst16_c, highbd_iidtx32_c },       // V_ADST
+    { highbd_iidtx16_c, highbd_ihalfright32_c },      // H_ADST
+    { vpx_highbd_iadst16_c, highbd_iidtx32_c },       // V_FLIPADST
+    { highbd_iidtx16_c, highbd_ihalfright32_c },      // H_FLIPADST
   };
   const int n = 16;
   const int n2 = 32;
@@ -1651,9 +1651,9 @@ void vp10_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest8,
   for (i = 0; i < n; ++i) {
     HIGH_IHT_32x16[tx_type].rows(input, outtmp, bd);
     for (j = 0; j < n2; ++j)
-      out[j][i] = HIGHBD_WRAPLOW(
-          highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd);
-    input  += n2;
+      out[j][i] =
+          HIGHBD_WRAPLOW(highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd);
+    input += n2;
   }
 
   // inverse transform column vectors
@@ -1668,8 +1668,8 @@ void vp10_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest8,
     for (j = 0; j < n2; ++j) {
       int d = i * stride + j;
       int s = j * outstride + i;
-      dest[d] = highbd_clip_pixel_add(dest[d],
-                                      ROUND_POWER_OF_TWO(outp[s], 6), bd);
+      dest[d] =
+          highbd_clip_pixel_add(dest[d], ROUND_POWER_OF_TWO(outp[s], 6), bd);
     }
   }
 }
@@ -1980,42 +1980,42 @@ void vp10_highbd_inv_txfm_add_4x4(const tran_low_t *input, uint8_t *dest,
 void vp10_highbd_inv_txfm_add_4x8(const tran_low_t *input, uint8_t *dest,
                                   int stride, int eob, int bd,
                                   TX_TYPE tx_type) {
-  (void) eob;
+  (void)eob;
   vp10_highbd_iht4x8_32_add_c(input, dest, stride, tx_type, bd);
 }
 
 void vp10_highbd_inv_txfm_add_8x4(const tran_low_t *input, uint8_t *dest,
                                   int stride, int eob, int bd,
                                   TX_TYPE tx_type) {
-  (void) eob;
+  (void)eob;
   vp10_highbd_iht8x4_32_add_c(input, dest, stride, tx_type, bd);
 }
 
 void vp10_highbd_inv_txfm_add_8x16(const tran_low_t *input, uint8_t *dest,
                                    int stride, int eob, int bd,
                                    TX_TYPE tx_type) {
-  (void) eob;
+  (void)eob;
   vp10_highbd_iht8x16_128_add_c(input, dest, stride, tx_type, bd);
 }
 
 void vp10_highbd_inv_txfm_add_16x8(const tran_low_t *input, uint8_t *dest,
                                    int stride, int eob, int bd,
                                    TX_TYPE tx_type) {
-  (void) eob;
+  (void)eob;
   vp10_highbd_iht16x8_128_add_c(input, dest, stride, tx_type, bd);
 }
 
 void vp10_highbd_inv_txfm_add_16x32(const tran_low_t *input, uint8_t *dest,
                                     int stride, int eob, int bd,
                                     TX_TYPE tx_type) {
-  (void) eob;
+  (void)eob;
   vp10_highbd_iht16x32_512_add_c(input, dest, stride, tx_type, bd);
 }
 
 void vp10_highbd_inv_txfm_add_32x16(const tran_low_t *input, uint8_t *dest,
                                     int stride, int eob, int bd,
                                     TX_TYPE tx_type) {
-  (void) eob;
+  (void)eob;
   vp10_highbd_iht32x16_512_add_c(input, dest, stride, tx_type, bd);
 }
 #endif  // CONFIG_EXT_TX
index af89b80dbac1c76a0d06ac0c6907c53aa0a5864d..b7a459c0aa6a4bc90627cc52a19d0b56e8131c4e 100644 (file)
@@ -23,7 +23,7 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/
 
 #ifdef HAVE_CONFIG_H
-# include "config.h"
+#include "config.h"
 #endif
 
 #include <stdlib.h>
@@ -31,25 +31,26 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/
 #include "dering.h"
 
 const od_dering_opt_vtbl OD_DERING_VTBL_C = {
-  {od_filter_dering_direction_4x4_c, od_filter_dering_direction_8x8_c},
-  {od_filter_dering_orthogonal_4x4_c, od_filter_dering_orthogonal_8x8_c}
+  { od_filter_dering_direction_4x4_c, od_filter_dering_direction_8x8_c },
+  { od_filter_dering_orthogonal_4x4_c, od_filter_dering_orthogonal_8x8_c }
 };
 
 /* Generated from gen_filter_tables.c. */
 const int OD_DIRECTION_OFFSETS_TABLE[8][3] = {
-  {-1*OD_FILT_BSTRIDE + 1, -2*OD_FILT_BSTRIDE + 2, -3*OD_FILT_BSTRIDE + 3  },
-  { 0*OD_FILT_BSTRIDE + 1, -1*OD_FILT_BSTRIDE + 2, -1*OD_FILT_BSTRIDE + 3  },
-  { 0*OD_FILT_BSTRIDE + 1,  0*OD_FILT_BSTRIDE + 2,  0*OD_FILT_BSTRIDE + 3  },
-  { 0*OD_FILT_BSTRIDE + 1,  1*OD_FILT_BSTRIDE + 2,  1*OD_FILT_BSTRIDE + 3  },
-  { 1*OD_FILT_BSTRIDE + 1,  2*OD_FILT_BSTRIDE + 2,  3*OD_FILT_BSTRIDE + 3  },
-  { 1*OD_FILT_BSTRIDE + 0,  2*OD_FILT_BSTRIDE + 1,  3*OD_FILT_BSTRIDE + 1  },
-  { 1*OD_FILT_BSTRIDE + 0,  2*OD_FILT_BSTRIDE + 0,  3*OD_FILT_BSTRIDE + 0  },
-  { 1*OD_FILT_BSTRIDE + 0,  2*OD_FILT_BSTRIDE - 1,  3*OD_FILT_BSTRIDE - 1  },
+  { -1 * OD_FILT_BSTRIDE + 1, -2 * OD_FILT_BSTRIDE + 2,
+    -3 * OD_FILT_BSTRIDE + 3 },
+  { 0 * OD_FILT_BSTRIDE + 1, -1 * OD_FILT_BSTRIDE + 2,
+    -1 * OD_FILT_BSTRIDE + 3 },
+  { 0 * OD_FILT_BSTRIDE + 1, 0 * OD_FILT_BSTRIDE + 2, 0 * OD_FILT_BSTRIDE + 3 },
+  { 0 * OD_FILT_BSTRIDE + 1, 1 * OD_FILT_BSTRIDE + 2, 1 * OD_FILT_BSTRIDE + 3 },
+  { 1 * OD_FILT_BSTRIDE + 1, 2 * OD_FILT_BSTRIDE + 2, 3 * OD_FILT_BSTRIDE + 3 },
+  { 1 * OD_FILT_BSTRIDE + 0, 2 * OD_FILT_BSTRIDE + 1, 3 * OD_FILT_BSTRIDE + 1 },
+  { 1 * OD_FILT_BSTRIDE + 0, 2 * OD_FILT_BSTRIDE + 0, 3 * OD_FILT_BSTRIDE + 0 },
+  { 1 * OD_FILT_BSTRIDE + 0, 2 * OD_FILT_BSTRIDE - 1, 3 * OD_FILT_BSTRIDE - 1 },
 };
 
-const double OD_DERING_GAIN_TABLE[OD_DERING_LEVELS] = {
-  0, 0.5, 0.707, 1, 1.41, 2
-};
+const double OD_DERING_GAIN_TABLE[OD_DERING_LEVELS] = { 0, 0.5,  0.707,
+                                                        1, 1.41, 2 };
 
 /* Detect direction. 0 means 45-degree up-right, 2 is horizontal, and so on.
    The search minimizes the weighted variance along all the lines in a
@@ -59,56 +60,59 @@ const double OD_DERING_GAIN_TABLE[OD_DERING_LEVELS] = {
    that term is never computed. See Section 2, step 2, of:
    http://jmvalin.ca/notes/intra_paint.pdf */
 static int od_dir_find8(const od_dering_in *img, int stride, int32_t *var,
-    int coeff_shift) {
+                        int coeff_shift) {
   int i;
-  int32_t cost[8] = {0};
-  int partial[8][15] = {{0}};
+  int32_t cost[8] = { 0 };
+  int partial[8][15] = { { 0 } };
   int32_t best_cost = 0;
   int best_dir = 0;
   /* Instead of dividing by n between 2 and 8, we multiply by 3*5*7*8/n.
      The output is then 840 times larger, but we don't care for finding
      the max. */
-  static const int div_table[] = {0, 840, 420, 280, 210, 168, 140, 120, 105};
+  static const int div_table[] = { 0, 840, 420, 280, 210, 168, 140, 120, 105 };
   for (i = 0; i < 8; i++) {
     int j;
     for (j = 0; j < 8; j++) {
       int x;
       /* We subtract 128 here to reduce the maximum range of the squared
          partial sums. */
-      x = (img[i*stride + j] >> coeff_shift) - 128;
+      x = (img[i * stride + j] >> coeff_shift) - 128;
       partial[0][i + j] += x;
-      partial[1][i + j/2] += x;
+      partial[1][i + j / 2] += x;
       partial[2][i] += x;
-      partial[3][3 + i - j/2] += x;
+      partial[3][3 + i - j / 2] += x;
       partial[4][7 + i - j] += x;
-      partial[5][3 - i/2 + j] += x;
+      partial[5][3 - i / 2 + j] += x;
       partial[6][j] += x;
-      partial[7][i/2 + j] += x;
+      partial[7][i / 2 + j] += x;
     }
   }
   for (i = 0; i < 8; i++) {
-    cost[2] += partial[2][i]*partial[2][i];
-    cost[6] += partial[6][i]*partial[6][i];
+    cost[2] += partial[2][i] * partial[2][i];
+    cost[6] += partial[6][i] * partial[6][i];
   }
   cost[2] *= div_table[8];
   cost[6] *= div_table[8];
   for (i = 0; i < 7; i++) {
-    cost[0] += (partial[0][i]*partial[0][i]
-     + partial[0][14 - i]*partial[0][14 - i])*div_table[i + 1];
-    cost[4] += (partial[4][i]*partial[4][i]
-     + partial[4][14 - i]*partial[4][14 - i])*div_table[i + 1];
+    cost[0] += (partial[0][i] * partial[0][i] +
+                partial[0][14 - i] * partial[0][14 - i]) *
+               div_table[i + 1];
+    cost[4] += (partial[4][i] * partial[4][i] +
+                partial[4][14 - i] * partial[4][14 - i]) *
+               div_table[i + 1];
   }
-  cost[0] += partial[0][7]*partial[0][7]*div_table[8];
-  cost[4] += partial[4][7]*partial[4][7]*div_table[8];
+  cost[0] += partial[0][7] * partial[0][7] * div_table[8];
+  cost[4] += partial[4][7] * partial[4][7] * div_table[8];
   for (i = 1; i < 8; i += 2) {
     int j;
     for (j = 0; j < 4 + 1; j++) {
-      cost[i] += partial[i][3 + j]*partial[i][3 + j];
+      cost[i] += partial[i][3 + j] * partial[i][3 + j];
     }
     cost[i] *= div_table[8];
     for (j = 0; j < 4 - 1; j++) {
-      cost[i] += (partial[i][j]*partial[i][j]
-       + partial[i][10 - j]*partial[i][10 - j])*div_table[2*j + 2];
+      cost[i] += (partial[i][j] * partial[i][j] +
+                  partial[i][10 - j] * partial[i][10 - j]) *
+                 div_table[2 * j + 2];
     }
   }
   for (i = 0; i < 8; i++) {
@@ -127,57 +131,62 @@ static int od_dir_find8(const od_dering_in *img, int stride, int32_t *var,
 }
 
 #define OD_DERING_VERY_LARGE (30000)
-#define OD_DERING_INBUF_SIZE ((OD_BSIZE_MAX + 2*OD_FILT_BORDER)*\
(OD_BSIZE_MAX + 2*OD_FILT_BORDER))
+#define OD_DERING_INBUF_SIZE \
 ((OD_BSIZE_MAX + 2 * OD_FILT_BORDER) * (OD_BSIZE_MAX + 2 * OD_FILT_BORDER))
 
 /* Smooth in the direction detected. */
 void od_filter_dering_direction_c(int16_t *y, int ystride, const int16_t *in,
- int ln, int threshold, int dir) {
                                 int ln, int threshold, int dir) {
   int i;
   int j;
   int k;
-  static const int taps[3] = {3, 2, 2};
+  static const int taps[3] = { 3, 2, 2 };
   for (i = 0; i < 1 << ln; i++) {
     for (j = 0; j < 1 << ln; j++) {
       int16_t sum;
       int16_t xx;
       int16_t yy;
-      xx = in[i*OD_FILT_BSTRIDE + j];
-      sum= 0;
+      xx = in[i * OD_FILT_BSTRIDE + j];
+      sum = 0;
       for (k = 0; k < 3; k++) {
         int16_t p0;
         int16_t p1;
-        p0 = in[i*OD_FILT_BSTRIDE + j + OD_DIRECTION_OFFSETS_TABLE[dir][k]]
-         - xx;
-        p1 = in[i*OD_FILT_BSTRIDE + j - OD_DIRECTION_OFFSETS_TABLE[dir][k]]
-         - xx;
-        if (abs(p0) < threshold) sum += taps[k]*p0;
-        if (abs(p1) < threshold) sum += taps[k]*p1;
+        p0 = in[i * OD_FILT_BSTRIDE + j + OD_DIRECTION_OFFSETS_TABLE[dir][k]] -
+             xx;
+        p1 = in[i * OD_FILT_BSTRIDE + j - OD_DIRECTION_OFFSETS_TABLE[dir][k]] -
+             xx;
+        if (abs(p0) < threshold) sum += taps[k] * p0;
+        if (abs(p1) < threshold) sum += taps[k] * p1;
       }
       yy = xx + ((sum + 8) >> 4);
-      y[i*ystride + j] = yy;
+      y[i * ystride + j] = yy;
     }
   }
 }
 
 void od_filter_dering_direction_4x4_c(int16_t *y, int ystride,
- const int16_t *in, int threshold, int dir) {
+                                      const int16_t *in, int threshold,
+                                      int dir) {
   od_filter_dering_direction_c(y, ystride, in, 2, threshold, dir);
 }
 
 void od_filter_dering_direction_8x8_c(int16_t *y, int ystride,
- const int16_t *in, int threshold, int dir) {
+                                      const int16_t *in, int threshold,
+                                      int dir) {
   od_filter_dering_direction_c(y, ystride, in, 3, threshold, dir);
 }
 
 /* Smooth in the direction orthogonal to what was detected. */
 void od_filter_dering_orthogonal_c(int16_t *y, int ystride, const int16_t *in,
- const od_dering_in *x, int xstride, int ln, int threshold, int dir) {
+                                   const od_dering_in *x, int xstride, int ln,
+                                   int threshold, int dir) {
   int i;
   int j;
   int offset;
-  if (dir > 0 && dir < 4) offset = OD_FILT_BSTRIDE;
-  else offset = 1;
+  if (dir > 0 && dir < 4)
+    offset = OD_FILT_BSTRIDE;
+  else
+    offset = 1;
   for (i = 0; i < 1 << ln; i++) {
     for (j = 0; j < 1 << ln; j++) {
       int16_t athresh;
@@ -192,32 +201,33 @@ void od_filter_dering_orthogonal_c(int16_t *y, int ystride, const int16_t *in,
          to be a little bit more aggressive on pure horizontal/vertical
          since the ringing there tends to be directional, so it doesn't
          get removed by the directional filtering. */
-      athresh = OD_MINI(threshold, threshold/3
-       + abs(in[i*OD_FILT_BSTRIDE + j] - x[i*xstride + j]));
-      yy = in[i*OD_FILT_BSTRIDE + j];
+      athresh = OD_MINI(
+          threshold, threshold / 3 +
+                         abs(in[i * OD_FILT_BSTRIDE + j] - x[i * xstride + j]));
+      yy = in[i * OD_FILT_BSTRIDE + j];
       sum = 0;
-      p = in[i*OD_FILT_BSTRIDE + j + offset] - yy;
+      p = in[i * OD_FILT_BSTRIDE + j + offset] - yy;
       if (abs(p) < athresh) sum += p;
-      p = in[i*OD_FILT_BSTRIDE + j - offset] - yy;
+      p = in[i * OD_FILT_BSTRIDE + j - offset] - yy;
       if (abs(p) < athresh) sum += p;
-      p = in[i*OD_FILT_BSTRIDE + j + 2*offset] - yy;
+      p = in[i * OD_FILT_BSTRIDE + j + 2 * offset] - yy;
       if (abs(p) < athresh) sum += p;
-      p = in[i*OD_FILT_BSTRIDE + j - 2*offset] - yy;
+      p = in[i * OD_FILT_BSTRIDE + j - 2 * offset] - yy;
       if (abs(p) < athresh) sum += p;
-      y[i*ystride + j] = yy + ((3*sum + 8) >> 4);
+      y[i * ystride + j] = yy + ((3 * sum + 8) >> 4);
     }
   }
 }
 
 void od_filter_dering_orthogonal_4x4_c(int16_t *y, int ystride,
const int16_t *in, const od_dering_in *x, int xstride, int threshold,
- int dir) {
                                      const int16_t *in, const od_dering_in *x,
                                      int xstride, int threshold, int dir) {
   od_filter_dering_orthogonal_c(y, ystride, in, x, xstride, 2, threshold, dir);
 }
 
 void od_filter_dering_orthogonal_8x8_c(int16_t *y, int ystride,
const int16_t *in, const od_dering_in *x, int xstride, int threshold,
- int dir) {
                                      const int16_t *in, const od_dering_in *x,
                                      int xstride, int threshold, int dir) {
   od_filter_dering_orthogonal_c(y, ystride, in, x, xstride, 3, threshold, dir);
 }
 
@@ -225,9 +235,8 @@ void od_filter_dering_orthogonal_8x8_c(int16_t *y, int ystride,
    to [-.5, 3]. The table is computed as:
    round(256*min(3, max(.5, 1.08*(sqrt(2)*2.^([0:17]+8)/256/256).^.16))) */
 static const int16_t OD_THRESH_TABLE_Q8[18] = {
-  128, 134, 150, 168, 188, 210, 234, 262,
-  292, 327, 365, 408, 455, 509, 569, 635,
-  710, 768,
+  128, 134, 150, 168, 188, 210, 234, 262, 292,
+  327, 365, 408, 455, 509, 569, 635, 710, 768,
 };
 
 /* Compute deringing filter threshold for each 8x8 block based on the
@@ -237,8 +246,9 @@ static const int16_t OD_THRESH_TABLE_Q8[18] = {
    contrast edge, or a non-directional texture, so we want to be careful not
    to blur. */
 static void od_compute_thresh(int thresh[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS],
- int threshold, int32_t var[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS],
- int nhb, int nvb) {
+                              int threshold,
+                              int32_t var[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS],
+                              int nhb, int nvb) {
   int bx;
   int by;
   for (by = 0; by < nvb; by++) {
@@ -246,16 +256,17 @@ static void od_compute_thresh(int thresh[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS],
       int v1;
       /* We use the variance of 8x8 blocks to adjust the threshold. */
       v1 = OD_MINI(32767, var[by][bx] >> 6);
-      thresh[by][bx] = (threshold*OD_THRESH_TABLE_Q8[OD_ILOG(v1)] + 128) >> 8;
+      thresh[by][bx] = (threshold * OD_THRESH_TABLE_Q8[OD_ILOG(v1)] + 128) >> 8;
     }
   }
 }
 
 void od_dering(const od_dering_opt_vtbl *vtbl, int16_t *y, int ystride,
- const od_dering_in *x, int xstride, int nhb, int nvb, int sbx, int sby,
- int nhsb, int nvsb, int xdec, int dir[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS],
- int pli, unsigned char *bskip, int skip_stride, int threshold, int overlap,
- int coeff_shift) {
+               const od_dering_in *x, int xstride, int nhb, int nvb, int sbx,
+               int sby, int nhsb, int nvsb, int xdec,
+               int dir[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS], int pli,
+               unsigned char *bskip, int skip_stride, int threshold,
+               int overlap, int coeff_shift) {
   int i;
   int j;
   int bx;
@@ -266,28 +277,27 @@ void od_dering(const od_dering_opt_vtbl *vtbl, int16_t *y, int ystride,
   int32_t var[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS];
   int thresh[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS];
   bsize = 3 - xdec;
-  in = inbuf + OD_FILT_BORDER*OD_FILT_BSTRIDE + OD_FILT_BORDER;
+  in = inbuf + OD_FILT_BORDER * OD_FILT_BSTRIDE + OD_FILT_BORDER;
   /* We avoid filtering the pixels for which some of the pixels to average
      are outside the frame. We could change the filter instead, but it would
      add special cases for any future vectorization. */
   for (i = 0; i < OD_DERING_INBUF_SIZE; i++) inbuf[i] = OD_DERING_VERY_LARGE;
-  for (i = -OD_FILT_BORDER*(sby != 0); i < (nvb << bsize)
-   + OD_FILT_BORDER*(sby != nvsb - 1); i++) {
-    for (j = -OD_FILT_BORDER*(sbx != 0); j < (nhb << bsize)
-     + OD_FILT_BORDER*(sbx != nhsb - 1); j++) {
-      in[i*OD_FILT_BSTRIDE + j] = x[i*xstride + j];
+  for (i = -OD_FILT_BORDER * (sby != 0);
+       i < (nvb << bsize) + OD_FILT_BORDER * (sby != nvsb - 1); i++) {
+    for (j = -OD_FILT_BORDER * (sbx != 0);
+         j < (nhb << bsize) + OD_FILT_BORDER * (sbx != nhsb - 1); j++) {
+      in[i * OD_FILT_BSTRIDE + j] = x[i * xstride + j];
     }
   }
   if (pli == 0) {
     for (by = 0; by < nvb; by++) {
       for (bx = 0; bx < nhb; bx++) {
-        dir[by][bx] = od_dir_find8(&x[8*by*xstride + 8*bx], xstride,
-         &var[by][bx], coeff_shift);
+        dir[by][bx] = od_dir_find8(&x[8 * by * xstride + 8 * bx], xstride,
+                                   &var[by][bx], coeff_shift);
       }
     }
     od_compute_thresh(thresh, threshold, var, nhb, nvb);
-  }
-  else {
+  } else {
     for (by = 0; by < nvb; by++) {
       for (bx = 0; bx < nhb; bx++) {
         thresh[by][bx] = threshold;
@@ -297,7 +307,7 @@ void od_dering(const od_dering_opt_vtbl *vtbl, int16_t *y, int ystride,
   for (by = 0; by < nvb; by++) {
     for (bx = 0; bx < nhb; bx++) {
       int skip;
-# if defined(DAALA_ODINTRIN)
+#if defined(DAALA_ODINTRIN)
       int xstart;
       int ystart;
       int xend;
@@ -316,13 +326,13 @@ void od_dering(const od_dering_opt_vtbl *vtbl, int16_t *y, int ystride,
          times. */
       for (i = ystart; i < yend; i++) {
         for (j = xstart; j < xend; j++) {
-          skip = skip && bskip[((by << 1 >> xdec) + i)*skip_stride
-           + (bx << 1 >> xdec) + j];
+          skip = skip && bskip[((by << 1 >> xdec) + i) * skip_stride +
+                               (bx << 1 >> xdec) + j];
         }
       }
 #else
       (void)overlap;
-      skip = bskip[by*skip_stride + bx];
+      skip = bskip[by * skip_stride + bx];
 #endif
       if (skip) thresh[by][bx] = 0;
     }
@@ -330,23 +340,23 @@ void od_dering(const od_dering_opt_vtbl *vtbl, int16_t *y, int ystride,
   for (by = 0; by < nvb; by++) {
     for (bx = 0; bx < nhb; bx++) {
       (vtbl->filter_dering_direction[bsize - OD_LOG_BSIZE0])(
-       &y[(by*ystride << bsize) + (bx << bsize)], ystride,
-       &in[(by*OD_FILT_BSTRIDE << bsize) + (bx << bsize)],
-       thresh[by][bx], dir[by][bx]);
+          &y[(by * ystride << bsize) + (bx << bsize)], ystride,
+          &in[(by * OD_FILT_BSTRIDE << bsize) + (bx << bsize)], thresh[by][bx],
+          dir[by][bx]);
     }
   }
   for (i = 0; i < nvb << bsize; i++) {
     for (j = 0; j < nhb << bsize; j++) {
-      in[i*OD_FILT_BSTRIDE + j] = y[i*ystride + j];
+      in[i * OD_FILT_BSTRIDE + j] = y[i * ystride + j];
     }
   }
   for (by = 0; by < nvb; by++) {
     for (bx = 0; bx < nhb; bx++) {
       (vtbl->filter_dering_orthogonal[bsize - OD_LOG_BSIZE0])(
-       &y[(by*ystride << bsize) + (bx << bsize)], ystride,
-       &in[(by*OD_FILT_BSTRIDE << bsize) + (bx << bsize)],
-       &x[(by*xstride << bsize) + (bx << bsize)], xstride,
-       thresh[by][bx], dir[by][bx]);
+          &y[(by * ystride << bsize) + (bx << bsize)], ystride,
+          &in[(by * OD_FILT_BSTRIDE << bsize) + (bx << bsize)],
+          &x[(by * xstride << bsize) + (bx << bsize)], xstride, thresh[by][bx],
+          dir[by][bx]);
     }
   }
 }
index 24127dd973054c9b432d4d9d8ef093b83582cab4..6bb3974314478c8113742c1e448c3d1786da88f2 100644 (file)
@@ -23,14 +23,14 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/
 
 #if !defined(_dering_H)
-# define _dering_H (1)
+#define _dering_H (1)
 
-# include "odintrin.h"
+#include "odintrin.h"
 
-# if defined(DAALA_ODINTRIN)
-#  include "filter.h"
+#if defined(DAALA_ODINTRIN)
+#include "filter.h"
 typedef int16_t od_dering_in;
-# endif
+#endif
 
 #define OD_DERINGSIZES (2)
 
@@ -40,18 +40,21 @@ typedef int16_t od_dering_in;
 #define OD_DERING_LEVELS (6)
 extern const double OD_DERING_GAIN_TABLE[OD_DERING_LEVELS];
 
-#define OD_DERING_NBLOCKS (OD_BSIZE_MAX/8)
+#define OD_DERING_NBLOCKS (OD_BSIZE_MAX / 8)
 
 #define OD_FILT_BORDER (3)
-#define OD_FILT_BSTRIDE (OD_BSIZE_MAX + 2*OD_FILT_BORDER)
+#define OD_FILT_BSTRIDE (OD_BSIZE_MAX + 2 * OD_FILT_BORDER)
 
 extern const int OD_DIRECTION_OFFSETS_TABLE[8][3];
 
 typedef void (*od_filter_dering_direction_func)(int16_t *y, int ystride,
- const int16_t *in, int threshold, int dir);
+                                                const int16_t *in,
+                                                int threshold, int dir);
 typedef void (*od_filter_dering_orthogonal_func)(int16_t *y, int ystride,
- const int16_t *in, const od_dering_in *x, int xstride, int threshold,
- int dir);
+                                                 const int16_t *in,
+                                                 const od_dering_in *x,
+                                                 int xstride, int threshold,
+                                                 int dir);
 
 struct od_dering_opt_vtbl {
   od_filter_dering_direction_func filter_dering_direction[OD_DERINGSIZES];
@@ -59,28 +62,31 @@ struct od_dering_opt_vtbl {
 };
 typedef struct od_dering_opt_vtbl od_dering_opt_vtbl;
 
-
 void od_dering(const od_dering_opt_vtbl *vtbl, int16_t *y, int ystride,
- const od_dering_in *x, int xstride, int nvb, int nhb, int sbx, int sby,
- int nhsb, int nvsb, int xdec, int dir[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS],
- int pli, unsigned char *bskip, int skip_stride, int threshold, int overlap,
- int coeff_shift);
+               const od_dering_in *x, int xstride, int nvb, int nhb, int sbx,
+               int sby, int nhsb, int nvsb, int xdec,
+               int dir[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS], int pli,
+               unsigned char *bskip, int skip_stride, int threshold,
+               int overlap, int coeff_shift);
 void od_filter_dering_direction_c(int16_t *y, int ystride, const int16_t *in,
- int ln, int threshold, int dir);
                                 int ln, int threshold, int dir);
 void od_filter_dering_orthogonal_c(int16_t *y, int ystride, const int16_t *in,
- const od_dering_in *x, int xstride, int ln, int threshold, int dir);
+                                   const od_dering_in *x, int xstride, int ln,
+                                   int threshold, int dir);
 
 extern const od_dering_opt_vtbl OD_DERING_VTBL_C;
 
 void od_filter_dering_direction_4x4_c(int16_t *y, int ystride,
- const int16_t *in, int threshold, int dir);
+                                      const int16_t *in, int threshold,
+                                      int dir);
 void od_filter_dering_direction_8x8_c(int16_t *y, int ystride,
- const int16_t *in, int threshold, int dir);
+                                      const int16_t *in, int threshold,
+                                      int dir);
 void od_filter_dering_orthogonal_4x4_c(int16_t *y, int ystride,
const int16_t *in, const od_dering_in *x, int xstride, int threshold,
- int dir);
                                      const int16_t *in, const od_dering_in *x,
                                      int xstride, int threshold, int dir);
 void od_filter_dering_orthogonal_8x8_c(int16_t *y, int ystride,
const int16_t *in, const od_dering_in *x, int xstride, int threshold,
- int dir);
                                      const int16_t *in, const od_dering_in *x,
                                      int xstride, int threshold, int dir);
 
 #endif
index ca9a5fc4bbb94f4e3ec5adcba4058a9b7c4d8fe6..202488094b17f8566c65a5caa759588897dc0133 100644 (file)
@@ -37,346 +37,516 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/
     year=2005
   }*/
 uint32_t OD_DIVU_SMALL_CONSTS[OD_DIVU_DMAX][2] = {
-  {0xFFFFFFFF, 0xFFFFFFFF}, {0xFFFFFFFF, 0xFFFFFFFF}, {0xAAAAAAAB,          0},
-  {0xFFFFFFFF, 0xFFFFFFFF}, {0xCCCCCCCD,          0}, {0xAAAAAAAB,          0},
-  {0x92492492, 0x92492492}, {0xFFFFFFFF, 0xFFFFFFFF}, {0xE38E38E4,          0},
-  {0xCCCCCCCD,          0}, {0xBA2E8BA3,          0}, {0xAAAAAAAB,          0},
-  {0x9D89D89E,          0}, {0x92492492, 0x92492492}, {0x88888889,          0},
-  {0xFFFFFFFF, 0xFFFFFFFF}, {0xF0F0F0F1,          0}, {0xE38E38E4,          0},
-  {0xD79435E5, 0xD79435E5}, {0xCCCCCCCD,          0}, {0xC30C30C3, 0xC30C30C3},
-  {0xBA2E8BA3,          0}, {0xB21642C9,          0}, {0xAAAAAAAB,          0},
-  {0xA3D70A3E,          0}, {0x9D89D89E,          0}, {0x97B425ED, 0x97B425ED},
-  {0x92492492, 0x92492492}, {0x8D3DCB09,          0}, {0x88888889,          0},
-  {0x84210842, 0x84210842}, {0xFFFFFFFF, 0xFFFFFFFF}, {0xF83E0F84,          0},
-  {0xF0F0F0F1,          0}, {0xEA0EA0EA, 0xEA0EA0EA}, {0xE38E38E4,          0},
-  {0xDD67C8A6, 0xDD67C8A6}, {0xD79435E5, 0xD79435E5}, {0xD20D20D2, 0xD20D20D2},
-  {0xCCCCCCCD,          0}, {0xC7CE0C7D,          0}, {0xC30C30C3, 0xC30C30C3},
-  {0xBE82FA0C,          0}, {0xBA2E8BA3,          0}, {0xB60B60B6, 0xB60B60B6},
-  {0xB21642C9,          0}, {0xAE4C415D,          0}, {0xAAAAAAAB,          0},
-  {0xA72F053A,          0}, {0xA3D70A3E,          0}, {0xA0A0A0A1,          0},
-  {0x9D89D89E,          0}, {0x9A90E7D9, 0x9A90E7D9}, {0x97B425ED, 0x97B425ED},
-  {0x94F2094F, 0x94F2094F}, {0x92492492, 0x92492492}, {0x8FB823EE, 0x8FB823EE},
-  {0x8D3DCB09,          0}, {0x8AD8F2FC,          0}, {0x88888889,          0},
-  {0x864B8A7E,          0}, {0x84210842, 0x84210842}, {0x82082082, 0x82082082},
-  {0xFFFFFFFF, 0xFFFFFFFF}, {0xFC0FC0FD,          0}, {0xF83E0F84,          0},
-  {0xF4898D60,          0}, {0xF0F0F0F1,          0}, {0xED7303B6,          0},
-  {0xEA0EA0EA, 0xEA0EA0EA}, {0xE6C2B449,          0}, {0xE38E38E4,          0},
-  {0xE070381C, 0xE070381C}, {0xDD67C8A6, 0xDD67C8A6}, {0xDA740DA8,          0},
-  {0xD79435E5, 0xD79435E5}, {0xD4C77B04,          0}, {0xD20D20D2, 0xD20D20D2},
-  {0xCF6474A9,          0}, {0xCCCCCCCD,          0}, {0xCA4587E7,          0},
-  {0xC7CE0C7D,          0}, {0xC565C87C,          0}, {0xC30C30C3, 0xC30C30C3},
-  {0xC0C0C0C1,          0}, {0xBE82FA0C,          0}, {0xBC52640C,          0},
-  {0xBA2E8BA3,          0}, {0xB81702E1,          0}, {0xB60B60B6, 0xB60B60B6},
-  {0xB40B40B4, 0xB40B40B4}, {0xB21642C9,          0}, {0xB02C0B03,          0},
-  {0xAE4C415D,          0}, {0xAC769184, 0xAC769184}, {0xAAAAAAAB,          0},
-  {0xA8E83F57, 0xA8E83F57}, {0xA72F053A,          0}, {0xA57EB503,          0},
-  {0xA3D70A3E,          0}, {0xA237C32B, 0xA237C32B}, {0xA0A0A0A1,          0},
-  {0x9F1165E7, 0x9F1165E7}, {0x9D89D89E,          0}, {0x9C09C09C, 0x9C09C09C},
-  {0x9A90E7D9, 0x9A90E7D9}, {0x991F1A51, 0x991F1A51}, {0x97B425ED, 0x97B425ED},
-  {0x964FDA6C, 0x964FDA6C}, {0x94F2094F, 0x94F2094F}, {0x939A85C4, 0x939A85C4},
-  {0x92492492, 0x92492492}, {0x90FDBC09, 0x90FDBC09}, {0x8FB823EE, 0x8FB823EE},
-  {0x8E78356D, 0x8E78356D}, {0x8D3DCB09,          0}, {0x8C08C08C, 0x8C08C08C},
-  {0x8AD8F2FC,          0}, {0x89AE408A,          0}, {0x88888889,          0},
-  {0x8767AB5F, 0x8767AB5F}, {0x864B8A7E,          0}, {0x85340853, 0x85340853},
-  {0x84210842, 0x84210842}, {0x83126E98,          0}, {0x82082082, 0x82082082},
-  {0x81020408, 0x81020408}, {0xFFFFFFFF, 0xFFFFFFFF}, {0xFE03F810,          0},
-  {0xFC0FC0FD,          0}, {0xFA232CF3,          0}, {0xF83E0F84,          0},
-  {0xF6603D99,          0}, {0xF4898D60,          0}, {0xF2B9D649,          0},
-  {0xF0F0F0F1,          0}, {0xEF2EB720,          0}, {0xED7303B6,          0},
-  {0xEBBDB2A6,          0}, {0xEA0EA0EA, 0xEA0EA0EA}, {0xE865AC7C,          0},
-  {0xE6C2B449,          0}, {0xE525982B,          0}, {0xE38E38E4,          0},
-  {0xE1FC780F,          0}, {0xE070381C, 0xE070381C}, {0xDEE95C4D,          0},
-  {0xDD67C8A6, 0xDD67C8A6}, {0xDBEB61EF,          0}, {0xDA740DA8,          0},
-  {0xD901B204,          0}, {0xD79435E5, 0xD79435E5}, {0xD62B80D7,          0},
-  {0xD4C77B04,          0}, {0xD3680D37,          0}, {0xD20D20D2, 0xD20D20D2},
-  {0xD0B69FCC,          0}, {0xCF6474A9,          0}, {0xCE168A77, 0xCE168A77},
-  {0xCCCCCCCD,          0}, {0xCB8727C1,          0}, {0xCA4587E7,          0},
-  {0xC907DA4F,          0}, {0xC7CE0C7D,          0}, {0xC6980C6A,          0},
-  {0xC565C87C,          0}, {0xC4372F86,          0}, {0xC30C30C3, 0xC30C30C3},
-  {0xC1E4BBD6,          0}, {0xC0C0C0C1,          0}, {0xBFA02FE8, 0xBFA02FE8},
-  {0xBE82FA0C,          0}, {0xBD691047, 0xBD691047}, {0xBC52640C,          0},
-  {0xBB3EE722,          0}, {0xBA2E8BA3,          0}, {0xB92143FA, 0xB92143FA},
-  {0xB81702E1,          0}, {0xB70FBB5A, 0xB70FBB5A}, {0xB60B60B6, 0xB60B60B6},
-  {0xB509E68B,          0}, {0xB40B40B4, 0xB40B40B4}, {0xB30F6353,          0},
-  {0xB21642C9,          0}, {0xB11FD3B8, 0xB11FD3B8}, {0xB02C0B03,          0},
-  {0xAF3ADDC7,          0}, {0xAE4C415D,          0}, {0xAD602B58, 0xAD602B58},
-  {0xAC769184, 0xAC769184}, {0xAB8F69E3,          0}, {0xAAAAAAAB,          0},
-  {0xA9C84A48,          0}, {0xA8E83F57, 0xA8E83F57}, {0xA80A80A8, 0xA80A80A8},
-  {0xA72F053A,          0}, {0xA655C439, 0xA655C439}, {0xA57EB503,          0},
-  {0xA4A9CF1E,          0}, {0xA3D70A3E,          0}, {0xA3065E40,          0},
-  {0xA237C32B, 0xA237C32B}, {0xA16B312F,          0}, {0xA0A0A0A1,          0},
-  {0x9FD809FE,          0}, {0x9F1165E7, 0x9F1165E7}, {0x9E4CAD24,          0},
-  {0x9D89D89E,          0}, {0x9CC8E161,          0}, {0x9C09C09C, 0x9C09C09C},
-  {0x9B4C6F9F,          0}, {0x9A90E7D9, 0x9A90E7D9}, {0x99D722DB,          0},
-  {0x991F1A51, 0x991F1A51}, {0x9868C80A,          0}, {0x97B425ED, 0x97B425ED},
-  {0x97012E02, 0x97012E02}, {0x964FDA6C, 0x964FDA6C}, {0x95A02568, 0x95A02568},
-  {0x94F2094F, 0x94F2094F}, {0x94458094, 0x94458094}, {0x939A85C4, 0x939A85C4},
-  {0x92F11384, 0x92F11384}, {0x92492492, 0x92492492}, {0x91A2B3C5,          0},
-  {0x90FDBC09, 0x90FDBC09}, {0x905A3863, 0x905A3863}, {0x8FB823EE, 0x8FB823EE},
-  {0x8F1779DA,          0}, {0x8E78356D, 0x8E78356D}, {0x8DDA5202, 0x8DDA5202},
-  {0x8D3DCB09,          0}, {0x8CA29C04, 0x8CA29C04}, {0x8C08C08C, 0x8C08C08C},
-  {0x8B70344A, 0x8B70344A}, {0x8AD8F2FC,          0}, {0x8A42F870, 0x8A42F870},
-  {0x89AE408A,          0}, {0x891AC73B,          0}, {0x88888889,          0},
-  {0x87F78088,          0}, {0x8767AB5F, 0x8767AB5F}, {0x86D90545,          0},
-  {0x864B8A7E,          0}, {0x85BF3761, 0x85BF3761}, {0x85340853, 0x85340853},
-  {0x84A9F9C8, 0x84A9F9C8}, {0x84210842, 0x84210842}, {0x83993052, 0x83993052},
-  {0x83126E98,          0}, {0x828CBFBF,          0}, {0x82082082, 0x82082082},
-  {0x81848DA9,          0}, {0x81020408, 0x81020408}, {0x80808081,          0},
-  {0xFFFFFFFF, 0xFFFFFFFF}, {0xFF00FF01,          0}, {0xFE03F810,          0},
-  {0xFD08E551,          0}, {0xFC0FC0FD,          0}, {0xFB188566,          0},
-  {0xFA232CF3,          0}, {0xF92FB222,          0}, {0xF83E0F84,          0},
-  {0xF74E3FC3,          0}, {0xF6603D99,          0}, {0xF57403D6,          0},
-  {0xF4898D60,          0}, {0xF3A0D52D,          0}, {0xF2B9D649,          0},
-  {0xF1D48BCF,          0}, {0xF0F0F0F1,          0}, {0xF00F00F0, 0xF00F00F0},
-  {0xEF2EB720,          0}, {0xEE500EE5, 0xEE500EE5}, {0xED7303B6,          0},
-  {0xEC979119,          0}, {0xEBBDB2A6,          0}, {0xEAE56404,          0},
-  {0xEA0EA0EA, 0xEA0EA0EA}, {0xE9396520,          0}, {0xE865AC7C,          0},
-  {0xE79372E3,          0}, {0xE6C2B449,          0}, {0xE5F36CB0, 0xE5F36CB0},
-  {0xE525982B,          0}, {0xE45932D8,          0}, {0xE38E38E4,          0},
-  {0xE2C4A689,          0}, {0xE1FC780F,          0}, {0xE135A9CA,          0},
-  {0xE070381C, 0xE070381C}, {0xDFAC1F75,          0}, {0xDEE95C4D,          0},
-  {0xDE27EB2D,          0}, {0xDD67C8A6, 0xDD67C8A6}, {0xDCA8F159,          0},
-  {0xDBEB61EF,          0}, {0xDB2F171E,          0}, {0xDA740DA8,          0},
-  {0xD9BA4257,          0}, {0xD901B204,          0}, {0xD84A598F,          0},
-  {0xD79435E5, 0xD79435E5}, {0xD6DF43FD,          0}, {0xD62B80D7,          0},
-  {0xD578E97D,          0}, {0xD4C77B04,          0}, {0xD417328A,          0},
-  {0xD3680D37,          0}, {0xD2BA083C,          0}, {0xD20D20D2, 0xD20D20D2},
-  {0xD161543E, 0xD161543E}, {0xD0B69FCC,          0}, {0xD00D00D0, 0xD00D00D0},
-  {0xCF6474A9,          0}, {0xCEBCF8BC,          0}, {0xCE168A77, 0xCE168A77},
-  {0xCD712753,          0}, {0xCCCCCCCD,          0}, {0xCC29786D,          0},
-  {0xCB8727C1,          0}, {0xCAE5D85F, 0xCAE5D85F}, {0xCA4587E7,          0},
-  {0xC9A633FD,          0}, {0xC907DA4F,          0}, {0xC86A7890, 0xC86A7890},
-  {0xC7CE0C7D,          0}, {0xC73293D8,          0}, {0xC6980C6A,          0},
-  {0xC5FE7403, 0xC5FE7403}, {0xC565C87C,          0}, {0xC4CE07B0, 0xC4CE07B0},
-  {0xC4372F86,          0}, {0xC3A13DE6, 0xC3A13DE6}, {0xC30C30C3, 0xC30C30C3},
-  {0xC2780614,          0}, {0xC1E4BBD6,          0}, {0xC152500C, 0xC152500C},
-  {0xC0C0C0C1,          0}, {0xC0300C03, 0xC0300C03}, {0xBFA02FE8, 0xBFA02FE8},
-  {0xBF112A8B,          0}, {0xBE82FA0C,          0}, {0xBDF59C92,          0},
-  {0xBD691047, 0xBD691047}, {0xBCDD535E,          0}, {0xBC52640C,          0},
-  {0xBBC8408D,          0}, {0xBB3EE722,          0}, {0xBAB65610, 0xBAB65610},
-  {0xBA2E8BA3,          0}, {0xB9A7862A, 0xB9A7862A}, {0xB92143FA, 0xB92143FA},
-  {0xB89BC36D,          0}, {0xB81702E1,          0}, {0xB79300B8,          0},
-  {0xB70FBB5A, 0xB70FBB5A}, {0xB68D3134, 0xB68D3134}, {0xB60B60B6, 0xB60B60B6},
-  {0xB58A4855, 0xB58A4855}, {0xB509E68B,          0}, {0xB48A39D4, 0xB48A39D4},
-  {0xB40B40B4, 0xB40B40B4}, {0xB38CF9B0, 0xB38CF9B0}, {0xB30F6353,          0},
-  {0xB2927C2A,          0}, {0xB21642C9,          0}, {0xB19AB5C5,          0},
-  {0xB11FD3B8, 0xB11FD3B8}, {0xB0A59B42,          0}, {0xB02C0B03,          0},
-  {0xAFB321A1, 0xAFB321A1}, {0xAF3ADDC7,          0}, {0xAEC33E20,          0},
-  {0xAE4C415D,          0}, {0xADD5E632, 0xADD5E632}, {0xAD602B58, 0xAD602B58},
-  {0xACEB0F89, 0xACEB0F89}, {0xAC769184, 0xAC769184}, {0xAC02B00B,          0},
-  {0xAB8F69E3,          0}, {0xAB1CBDD4,          0}, {0xAAAAAAAB,          0},
-  {0xAA392F36,          0}, {0xA9C84A48,          0}, {0xA957FAB5, 0xA957FAB5},
-  {0xA8E83F57, 0xA8E83F57}, {0xA8791709,          0}, {0xA80A80A8, 0xA80A80A8},
-  {0xA79C7B17,          0}, {0xA72F053A,          0}, {0xA6C21DF7,          0},
-  {0xA655C439, 0xA655C439}, {0xA5E9F6ED, 0xA5E9F6ED}, {0xA57EB503,          0},
-  {0xA513FD6C,          0}, {0xA4A9CF1E,          0}, {0xA4402910, 0xA4402910},
-  {0xA3D70A3E,          0}, {0xA36E71A3,          0}, {0xA3065E40,          0},
-  {0xA29ECF16, 0xA29ECF16}, {0xA237C32B, 0xA237C32B}, {0xA1D13986,          0},
-  {0xA16B312F,          0}, {0xA105A933,          0}, {0xA0A0A0A1,          0},
-  {0xA03C1689,          0}, {0x9FD809FE,          0}, {0x9F747A15, 0x9F747A15},
-  {0x9F1165E7, 0x9F1165E7}, {0x9EAECC8D, 0x9EAECC8D}, {0x9E4CAD24,          0},
-  {0x9DEB06C9, 0x9DEB06C9}, {0x9D89D89E,          0}, {0x9D2921C4,          0},
-  {0x9CC8E161,          0}, {0x9C69169B, 0x9C69169B}, {0x9C09C09C, 0x9C09C09C},
-  {0x9BAADE8E, 0x9BAADE8E}, {0x9B4C6F9F,          0}, {0x9AEE72FD,          0},
-  {0x9A90E7D9, 0x9A90E7D9}, {0x9A33CD67, 0x9A33CD67}, {0x99D722DB,          0},
-  {0x997AE76B, 0x997AE76B}, {0x991F1A51, 0x991F1A51}, {0x98C3BAC7, 0x98C3BAC7},
-  {0x9868C80A,          0}, {0x980E4156, 0x980E4156}, {0x97B425ED, 0x97B425ED},
-  {0x975A7510,          0}, {0x97012E02, 0x97012E02}, {0x96A8500A,          0},
-  {0x964FDA6C, 0x964FDA6C}, {0x95F7CC73,          0}, {0x95A02568, 0x95A02568},
-  {0x9548E498,          0}, {0x94F2094F, 0x94F2094F}, {0x949B92DE,          0},
-  {0x94458094, 0x94458094}, {0x93EFD1C5, 0x93EFD1C5}, {0x939A85C4, 0x939A85C4},
-  {0x93459BE7,          0}, {0x92F11384, 0x92F11384}, {0x929CEBF5,          0},
-  {0x92492492, 0x92492492}, {0x91F5BCB9,          0}, {0x91A2B3C5,          0},
-  {0x91500915, 0x91500915}, {0x90FDBC09, 0x90FDBC09}, {0x90ABCC02, 0x90ABCC02},
-  {0x905A3863, 0x905A3863}, {0x90090090, 0x90090090}, {0x8FB823EE, 0x8FB823EE},
-  {0x8F67A1E4,          0}, {0x8F1779DA,          0}, {0x8EC7AB3A,          0},
-  {0x8E78356D, 0x8E78356D}, {0x8E2917E1,          0}, {0x8DDA5202, 0x8DDA5202},
-  {0x8D8BE340,          0}, {0x8D3DCB09,          0}, {0x8CF008CF, 0x8CF008CF},
-  {0x8CA29C04, 0x8CA29C04}, {0x8C55841D,          0}, {0x8C08C08C, 0x8C08C08C},
-  {0x8BBC50C9,          0}, {0x8B70344A, 0x8B70344A}, {0x8B246A88,          0},
-  {0x8AD8F2FC,          0}, {0x8A8DCD20,          0}, {0x8A42F870, 0x8A42F870},
-  {0x89F8746A,          0}, {0x89AE408A,          0}, {0x89645C4F, 0x89645C4F},
-  {0x891AC73B,          0}, {0x88D180CD, 0x88D180CD}, {0x88888889,          0},
-  {0x883FDDF0, 0x883FDDF0}, {0x87F78088,          0}, {0x87AF6FD6,          0},
-  {0x8767AB5F, 0x8767AB5F}, {0x872032AC, 0x872032AC}, {0x86D90545,          0},
-  {0x869222B2,          0}, {0x864B8A7E,          0}, {0x86053C34, 0x86053C34},
-  {0x85BF3761, 0x85BF3761}, {0x85797B91, 0x85797B91}, {0x85340853, 0x85340853},
-  {0x84EEDD36,          0}, {0x84A9F9C8, 0x84A9F9C8}, {0x84655D9C,          0},
-  {0x84210842, 0x84210842}, {0x83DCF94E,          0}, {0x83993052, 0x83993052},
-  {0x8355ACE4,          0}, {0x83126E98,          0}, {0x82CF7504,          0},
-  {0x828CBFBF,          0}, {0x824A4E61,          0}, {0x82082082, 0x82082082},
-  {0x81C635BC, 0x81C635BC}, {0x81848DA9,          0}, {0x814327E4,          0},
-  {0x81020408, 0x81020408}, {0x80C121B3,          0}, {0x80808081,          0},
-  {0x80402010, 0x80402010}, {0xFFFFFFFF, 0xFFFFFFFF}, {0xFF803FE1,          0},
-  {0xFF00FF01,          0}, {0xFE823CA6,          0}, {0xFE03F810,          0},
-  {0xFD863087,          0}, {0xFD08E551,          0}, {0xFC8C15B5,          0},
-  {0xFC0FC0FD,          0}, {0xFB93E673,          0}, {0xFB188566,          0},
-  {0xFA9D9D20,          0}, {0xFA232CF3,          0}, {0xF9A9342D,          0},
-  {0xF92FB222,          0}, {0xF8B6A622, 0xF8B6A622}, {0xF83E0F84,          0},
-  {0xF7C5ED9D,          0}, {0xF74E3FC3,          0}, {0xF6D7054E,          0},
-  {0xF6603D99,          0}, {0xF5E9E7FD,          0}, {0xF57403D6,          0},
-  {0xF4FE9083,          0}, {0xF4898D60,          0}, {0xF414F9CE,          0},
-  {0xF3A0D52D,          0}, {0xF32D1EE0,          0}, {0xF2B9D649,          0},
-  {0xF246FACC,          0}, {0xF1D48BCF,          0}, {0xF16288B9,          0},
-  {0xF0F0F0F1,          0}, {0xF07FC3E0, 0xF07FC3E0}, {0xF00F00F0, 0xF00F00F0},
-  {0xEF9EA78C,          0}, {0xEF2EB720,          0}, {0xEEBF2F19,          0},
-  {0xEE500EE5, 0xEE500EE5}, {0xEDE155F4,          0}, {0xED7303B6,          0},
-  {0xED05179C, 0xED05179C}, {0xEC979119,          0}, {0xEC2A6FA0, 0xEC2A6FA0},
-  {0xEBBDB2A6,          0}, {0xEB5159A0,          0}, {0xEAE56404,          0},
-  {0xEA79D14A,          0}, {0xEA0EA0EA, 0xEA0EA0EA}, {0xE9A3D25E, 0xE9A3D25E},
-  {0xE9396520,          0}, {0xE8CF58AB,          0}, {0xE865AC7C,          0},
-  {0xE7FC600F,          0}, {0xE79372E3,          0}, {0xE72AE476,          0},
-  {0xE6C2B449,          0}, {0xE65AE1DC,          0}, {0xE5F36CB0, 0xE5F36CB0},
-  {0xE58C544A,          0}, {0xE525982B,          0}, {0xE4BF37D9,          0},
-  {0xE45932D8,          0}, {0xE3F388AF,          0}, {0xE38E38E4,          0},
-  {0xE32942FF,          0}, {0xE2C4A689,          0}, {0xE260630B,          0},
-  {0xE1FC780F,          0}, {0xE198E520,          0}, {0xE135A9CA,          0},
-  {0xE0D2C59A,          0}, {0xE070381C, 0xE070381C}, {0xE00E00E0, 0xE00E00E0},
-  {0xDFAC1F75,          0}, {0xDF4A9369,          0}, {0xDEE95C4D,          0},
-  {0xDE8879B3,          0}, {0xDE27EB2D,          0}, {0xDDC7B04D,          0},
-  {0xDD67C8A6, 0xDD67C8A6}, {0xDD0833CE,          0}, {0xDCA8F159,          0},
-  {0xDC4A00DD,          0}, {0xDBEB61EF,          0}, {0xDB8D1428,          0},
-  {0xDB2F171E,          0}, {0xDAD16A6B,          0}, {0xDA740DA8,          0},
-  {0xDA17006D, 0xDA17006D}, {0xD9BA4257,          0}, {0xD95DD300,          0},
-  {0xD901B204,          0}, {0xD8A5DEFF,          0}, {0xD84A598F,          0},
-  {0xD7EF2152,          0}, {0xD79435E5, 0xD79435E5}, {0xD73996E9,          0},
-  {0xD6DF43FD,          0}, {0xD6853CC1,          0}, {0xD62B80D7,          0},
-  {0xD5D20FDF,          0}, {0xD578E97D,          0}, {0xD5200D52, 0xD5200D52},
-  {0xD4C77B04,          0}, {0xD46F3235,          0}, {0xD417328A,          0},
-  {0xD3BF7BA9,          0}, {0xD3680D37,          0}, {0xD310E6DB,          0},
-  {0xD2BA083C,          0}, {0xD2637101,          0}, {0xD20D20D2, 0xD20D20D2},
-  {0xD1B71759,          0}, {0xD161543E, 0xD161543E}, {0xD10BD72C,          0},
-  {0xD0B69FCC,          0}, {0xD061ADCA,          0}, {0xD00D00D0, 0xD00D00D0},
-  {0xCFB8988C,          0}, {0xCF6474A9,          0}, {0xCF1094D4,          0},
-  {0xCEBCF8BC,          0}, {0xCE69A00D,          0}, {0xCE168A77, 0xCE168A77},
-  {0xCDC3B7A9, 0xCDC3B7A9}, {0xCD712753,          0}, {0xCD1ED924,          0},
-  {0xCCCCCCCD,          0}, {0xCC7B0200,          0}, {0xCC29786D,          0},
-  {0xCBD82FC7,          0}, {0xCB8727C1,          0}, {0xCB36600D,          0},
-  {0xCAE5D85F, 0xCAE5D85F}, {0xCA95906C,          0}, {0xCA4587E7,          0},
-  {0xC9F5BE86,          0}, {0xC9A633FD,          0}, {0xC956E803, 0xC956E803},
-  {0xC907DA4F,          0}, {0xC8B90A96,          0}, {0xC86A7890, 0xC86A7890},
-  {0xC81C23F5, 0xC81C23F5}, {0xC7CE0C7D,          0}, {0xC78031E0, 0xC78031E0},
-  {0xC73293D8,          0}, {0xC6E5321D,          0}, {0xC6980C6A,          0},
-  {0xC64B2278, 0xC64B2278}, {0xC5FE7403, 0xC5FE7403}, {0xC5B200C6,          0},
-  {0xC565C87C,          0}, {0xC519CAE0, 0xC519CAE0}, {0xC4CE07B0, 0xC4CE07B0},
-  {0xC4827EA8, 0xC4827EA8}, {0xC4372F86,          0}, {0xC3EC1A06,          0},
-  {0xC3A13DE6, 0xC3A13DE6}, {0xC3569AE6,          0}, {0xC30C30C3, 0xC30C30C3},
-  {0xC2C1FF3E,          0}, {0xC2780614,          0}, {0xC22E4507,          0},
-  {0xC1E4BBD6,          0}, {0xC19B6A42,          0}, {0xC152500C, 0xC152500C},
-  {0xC1096CF6,          0}, {0xC0C0C0C1,          0}, {0xC0784B2F,          0},
-  {0xC0300C03, 0xC0300C03}, {0xBFE80300,          0}, {0xBFA02FE8, 0xBFA02FE8},
-  {0xBF589280,          0}, {0xBF112A8B,          0}, {0xBEC9F7CE,          0},
-  {0xBE82FA0C,          0}, {0xBE3C310C,          0}, {0xBDF59C92,          0},
-  {0xBDAF3C64,          0}, {0xBD691047, 0xBD691047}, {0xBD231803,          0},
-  {0xBCDD535E,          0}, {0xBC97C21E, 0xBC97C21E}, {0xBC52640C,          0},
-  {0xBC0D38EE, 0xBC0D38EE}, {0xBBC8408D,          0}, {0xBB837AB1,          0},
-  {0xBB3EE722,          0}, {0xBAFA85A9, 0xBAFA85A9}, {0xBAB65610, 0xBAB65610},
-  {0xBA725820, 0xBA725820}, {0xBA2E8BA3,          0}, {0xB9EAF063,          0},
-  {0xB9A7862A, 0xB9A7862A}, {0xB9644CC4,          0}, {0xB92143FA, 0xB92143FA},
-  {0xB8DE6B9A,          0}, {0xB89BC36D,          0}, {0xB8594B41,          0},
-  {0xB81702E1,          0}, {0xB7D4EA19, 0xB7D4EA19}, {0xB79300B8,          0},
-  {0xB7514689,          0}, {0xB70FBB5A, 0xB70FBB5A}, {0xB6CE5EF9, 0xB6CE5EF9},
-  {0xB68D3134, 0xB68D3134}, {0xB64C31D9,          0}, {0xB60B60B6, 0xB60B60B6},
-  {0xB5CABD9B,          0}, {0xB58A4855, 0xB58A4855}, {0xB54A00B5, 0xB54A00B5},
-  {0xB509E68B,          0}, {0xB4C9F9A5,          0}, {0xB48A39D4, 0xB48A39D4},
-  {0xB44AA6E9, 0xB44AA6E9}, {0xB40B40B4, 0xB40B40B4}, {0xB3CC0706,          0},
-  {0xB38CF9B0, 0xB38CF9B0}, {0xB34E1884,          0}, {0xB30F6353,          0},
-  {0xB2D0D9EF,          0}, {0xB2927C2A,          0}, {0xB25449D7,          0},
-  {0xB21642C9,          0}, {0xB1D866D1, 0xB1D866D1}, {0xB19AB5C5,          0},
-  {0xB15D2F76,          0}, {0xB11FD3B8, 0xB11FD3B8}, {0xB0E2A260, 0xB0E2A260},
-  {0xB0A59B42,          0}, {0xB068BE31,          0}, {0xB02C0B03,          0},
-  {0xAFEF818C,          0}, {0xAFB321A1, 0xAFB321A1}, {0xAF76EB19,          0},
-  {0xAF3ADDC7,          0}, {0xAEFEF982,          0}, {0xAEC33E20,          0},
-  {0xAE87AB76, 0xAE87AB76}, {0xAE4C415D,          0}, {0xAE10FFA9,          0},
-  {0xADD5E632, 0xADD5E632}, {0xAD9AF4D0,          0}, {0xAD602B58, 0xAD602B58},
-  {0xAD2589A4,          0}, {0xACEB0F89, 0xACEB0F89}, {0xACB0BCE1, 0xACB0BCE1},
-  {0xAC769184, 0xAC769184}, {0xAC3C8D4A,          0}, {0xAC02B00B,          0},
-  {0xABC8F9A0, 0xABC8F9A0}, {0xAB8F69E3,          0}, {0xAB5600AC,          0},
-  {0xAB1CBDD4,          0}, {0xAAE3A136,          0}, {0xAAAAAAAB,          0},
-  {0xAA71DA0D,          0}, {0xAA392F36,          0}, {0xAA00AA01,          0},
-  {0xA9C84A48,          0}, {0xA9900FE6,          0}, {0xA957FAB5, 0xA957FAB5},
-  {0xA9200A92, 0xA9200A92}, {0xA8E83F57, 0xA8E83F57}, {0xA8B098E0, 0xA8B098E0},
-  {0xA8791709,          0}, {0xA841B9AD,          0}, {0xA80A80A8, 0xA80A80A8},
-  {0xA7D36BD8,          0}, {0xA79C7B17,          0}, {0xA765AE44,          0},
-  {0xA72F053A,          0}, {0xA6F87FD6, 0xA6F87FD6}, {0xA6C21DF7,          0},
-  {0xA68BDF79,          0}, {0xA655C439, 0xA655C439}, {0xA61FCC16, 0xA61FCC16},
-  {0xA5E9F6ED, 0xA5E9F6ED}, {0xA5B4449D,          0}, {0xA57EB503,          0},
-  {0xA54947FE,          0}, {0xA513FD6C,          0}, {0xA4DED52C, 0xA4DED52C},
-  {0xA4A9CF1E,          0}, {0xA474EB1F, 0xA474EB1F}, {0xA4402910, 0xA4402910},
-  {0xA40B88D0,          0}, {0xA3D70A3E,          0}, {0xA3A2AD39, 0xA3A2AD39},
-  {0xA36E71A3,          0}, {0xA33A575A, 0xA33A575A}, {0xA3065E40,          0},
-  {0xA2D28634,          0}, {0xA29ECF16, 0xA29ECF16}, {0xA26B38C9,          0},
-  {0xA237C32B, 0xA237C32B}, {0xA2046E1F, 0xA2046E1F}, {0xA1D13986,          0},
-  {0xA19E2540,          0}, {0xA16B312F,          0}, {0xA1385D35,          0},
-  {0xA105A933,          0}, {0xA0D3150C,          0}, {0xA0A0A0A1,          0},
-  {0xA06E4BD4, 0xA06E4BD4}, {0xA03C1689,          0}, {0xA00A00A0, 0xA00A00A0},
-  {0x9FD809FE,          0}, {0x9FA63284,          0}, {0x9F747A15, 0x9F747A15},
-  {0x9F42E095, 0x9F42E095}, {0x9F1165E7, 0x9F1165E7}, {0x9EE009EE, 0x9EE009EE},
-  {0x9EAECC8D, 0x9EAECC8D}, {0x9E7DADA9,          0}, {0x9E4CAD24,          0},
-  {0x9E1BCAE3,          0}, {0x9DEB06C9, 0x9DEB06C9}, {0x9DBA60BB, 0x9DBA60BB},
-  {0x9D89D89E,          0}, {0x9D596E54, 0x9D596E54}, {0x9D2921C4,          0},
-  {0x9CF8F2D1, 0x9CF8F2D1}, {0x9CC8E161,          0}, {0x9C98ED58,          0},
-  {0x9C69169B, 0x9C69169B}, {0x9C395D10, 0x9C395D10}, {0x9C09C09C, 0x9C09C09C},
-  {0x9BDA4124, 0x9BDA4124}, {0x9BAADE8E, 0x9BAADE8E}, {0x9B7B98C0,          0},
-  {0x9B4C6F9F,          0}, {0x9B1D6311, 0x9B1D6311}, {0x9AEE72FD,          0},
-  {0x9ABF9F48, 0x9ABF9F48}, {0x9A90E7D9, 0x9A90E7D9}, {0x9A624C97,          0},
-  {0x9A33CD67, 0x9A33CD67}, {0x9A056A31,          0}, {0x99D722DB,          0},
-  {0x99A8F74C,          0}, {0x997AE76B, 0x997AE76B}, {0x994CF320, 0x994CF320},
-  {0x991F1A51, 0x991F1A51}, {0x98F15CE7,          0}, {0x98C3BAC7, 0x98C3BAC7},
-  {0x989633DB, 0x989633DB}, {0x9868C80A,          0}, {0x983B773B,          0},
-  {0x980E4156, 0x980E4156}, {0x97E12644, 0x97E12644}, {0x97B425ED, 0x97B425ED},
-  {0x97874039,          0}, {0x975A7510,          0}, {0x972DC45B,          0},
-  {0x97012E02, 0x97012E02}, {0x96D4B1EF,          0}, {0x96A8500A,          0},
-  {0x967C083B,          0}, {0x964FDA6C, 0x964FDA6C}, {0x9623C686, 0x9623C686},
-  {0x95F7CC73,          0}, {0x95CBEC1B,          0}, {0x95A02568, 0x95A02568},
-  {0x95747844,          0}, {0x9548E498,          0}, {0x951D6A4E,          0},
-  {0x94F2094F, 0x94F2094F}, {0x94C6C187,          0}, {0x949B92DE,          0},
-  {0x94707D3F,          0}, {0x94458094, 0x94458094}, {0x941A9CC8, 0x941A9CC8},
-  {0x93EFD1C5, 0x93EFD1C5}, {0x93C51F76,          0}, {0x939A85C4, 0x939A85C4},
-  {0x9370049C,          0}, {0x93459BE7,          0}, {0x931B4B91,          0},
-  {0x92F11384, 0x92F11384}, {0x92C6F3AC, 0x92C6F3AC}, {0x929CEBF5,          0},
-  {0x9272FC48, 0x9272FC48}, {0x92492492, 0x92492492}, {0x921F64BF,          0},
-  {0x91F5BCB9,          0}, {0x91CC2C6C, 0x91CC2C6C}, {0x91A2B3C5,          0},
-  {0x917952AF,          0}, {0x91500915, 0x91500915}, {0x9126D6E5,          0},
-  {0x90FDBC09, 0x90FDBC09}, {0x90D4B86F,          0}, {0x90ABCC02, 0x90ABCC02},
-  {0x9082F6B0,          0}, {0x905A3863, 0x905A3863}, {0x9031910A,          0},
-  {0x90090090, 0x90090090}, {0x8FE086E3,          0}, {0x8FB823EE, 0x8FB823EE},
-  {0x8F8FD7A0,          0}, {0x8F67A1E4,          0}, {0x8F3F82A8, 0x8F3F82A8},
-  {0x8F1779DA,          0}, {0x8EEF8766,          0}, {0x8EC7AB3A,          0},
-  {0x8E9FE542, 0x8E9FE542}, {0x8E78356D, 0x8E78356D}, {0x8E509BA8, 0x8E509BA8},
-  {0x8E2917E1,          0}, {0x8E01AA05,          0}, {0x8DDA5202, 0x8DDA5202},
-  {0x8DB30FC6, 0x8DB30FC6}, {0x8D8BE340,          0}, {0x8D64CC5C,          0},
-  {0x8D3DCB09,          0}, {0x8D16DF35, 0x8D16DF35}, {0x8CF008CF, 0x8CF008CF},
-  {0x8CC947C5,          0}, {0x8CA29C04, 0x8CA29C04}, {0x8C7C057D,          0},
-  {0x8C55841D,          0}, {0x8C2F17D2, 0x8C2F17D2}, {0x8C08C08C, 0x8C08C08C},
-  {0x8BE27E39, 0x8BE27E39}, {0x8BBC50C9,          0}, {0x8B963829, 0x8B963829},
-  {0x8B70344A, 0x8B70344A}, {0x8B4A451A,          0}, {0x8B246A88,          0},
-  {0x8AFEA483, 0x8AFEA483}, {0x8AD8F2FC,          0}, {0x8AB355E0, 0x8AB355E0},
-  {0x8A8DCD20,          0}, {0x8A6858AB,          0}, {0x8A42F870, 0x8A42F870},
-  {0x8A1DAC60, 0x8A1DAC60}, {0x89F8746A,          0}, {0x89D3507D,          0},
-  {0x89AE408A,          0}, {0x89894480,          0}, {0x89645C4F, 0x89645C4F},
-  {0x893F87E8, 0x893F87E8}, {0x891AC73B,          0}, {0x88F61A37, 0x88F61A37},
-  {0x88D180CD, 0x88D180CD}, {0x88ACFAEE,          0}, {0x88888889,          0},
-  {0x8864298F,          0}, {0x883FDDF0, 0x883FDDF0}, {0x881BA59E,          0},
-  {0x87F78088,          0}, {0x87D36EA0,          0}, {0x87AF6FD6,          0},
-  {0x878B841B,          0}, {0x8767AB5F, 0x8767AB5F}, {0x8743E595,          0},
-  {0x872032AC, 0x872032AC}, {0x86FC9296, 0x86FC9296}, {0x86D90545,          0},
-  {0x86B58AA8,          0}, {0x869222B2,          0}, {0x866ECD53, 0x866ECD53},
-  {0x864B8A7E,          0}, {0x86285A23, 0x86285A23}, {0x86053C34, 0x86053C34},
-  {0x85E230A3, 0x85E230A3}, {0x85BF3761, 0x85BF3761}, {0x859C5060, 0x859C5060},
-  {0x85797B91, 0x85797B91}, {0x8556B8E7, 0x8556B8E7}, {0x85340853, 0x85340853},
-  {0x851169C7, 0x851169C7}, {0x84EEDD36,          0}, {0x84CC6290,          0},
-  {0x84A9F9C8, 0x84A9F9C8}, {0x8487A2D1,          0}, {0x84655D9C,          0},
-  {0x84432A1B, 0x84432A1B}, {0x84210842, 0x84210842}, {0x83FEF802, 0x83FEF802},
-  {0x83DCF94E,          0}, {0x83BB0C18,          0}, {0x83993052, 0x83993052},
-  {0x837765F0, 0x837765F0}, {0x8355ACE4,          0}, {0x83340520, 0x83340520},
-  {0x83126E98,          0}, {0x82F0E93D, 0x82F0E93D}, {0x82CF7504,          0},
-  {0x82AE11DE,          0}, {0x828CBFBF,          0}, {0x826B7E99, 0x826B7E99},
-  {0x824A4E61,          0}, {0x82292F08,          0}, {0x82082082, 0x82082082},
-  {0x81E722C2, 0x81E722C2}, {0x81C635BC, 0x81C635BC}, {0x81A55963,          0},
-  {0x81848DA9,          0}, {0x8163D283,          0}, {0x814327E4,          0},
-  {0x81228DBF,          0}, {0x81020408, 0x81020408}, {0x80E18AB3,          0},
-  {0x80C121B3,          0}, {0x80A0C8FB, 0x80A0C8FB}, {0x80808081,          0},
-  {0x80604836, 0x80604836}, {0x80402010, 0x80402010}, {0x80200802, 0x80200802},
-  {0xFFFFFFFF, 0xFFFFFFFF}
+  { 0xFFFFFFFF, 0xFFFFFFFF }, { 0xFFFFFFFF, 0xFFFFFFFF },
+  { 0xAAAAAAAB, 0 },          { 0xFFFFFFFF, 0xFFFFFFFF },
+  { 0xCCCCCCCD, 0 },          { 0xAAAAAAAB, 0 },
+  { 0x92492492, 0x92492492 }, { 0xFFFFFFFF, 0xFFFFFFFF },
+  { 0xE38E38E4, 0 },          { 0xCCCCCCCD, 0 },
+  { 0xBA2E8BA3, 0 },          { 0xAAAAAAAB, 0 },
+  { 0x9D89D89E, 0 },          { 0x92492492, 0x92492492 },
+  { 0x88888889, 0 },          { 0xFFFFFFFF, 0xFFFFFFFF },
+  { 0xF0F0F0F1, 0 },          { 0xE38E38E4, 0 },
+  { 0xD79435E5, 0xD79435E5 }, { 0xCCCCCCCD, 0 },
+  { 0xC30C30C3, 0xC30C30C3 }, { 0xBA2E8BA3, 0 },
+  { 0xB21642C9, 0 },          { 0xAAAAAAAB, 0 },
+  { 0xA3D70A3E, 0 },          { 0x9D89D89E, 0 },
+  { 0x97B425ED, 0x97B425ED }, { 0x92492492, 0x92492492 },
+  { 0x8D3DCB09, 0 },          { 0x88888889, 0 },
+  { 0x84210842, 0x84210842 }, { 0xFFFFFFFF, 0xFFFFFFFF },
+  { 0xF83E0F84, 0 },          { 0xF0F0F0F1, 0 },
+  { 0xEA0EA0EA, 0xEA0EA0EA }, { 0xE38E38E4, 0 },
+  { 0xDD67C8A6, 0xDD67C8A6 }, { 0xD79435E5, 0xD79435E5 },
+  { 0xD20D20D2, 0xD20D20D2 }, { 0xCCCCCCCD, 0 },
+  { 0xC7CE0C7D, 0 },          { 0xC30C30C3, 0xC30C30C3 },
+  { 0xBE82FA0C, 0 },          { 0xBA2E8BA3, 0 },
+  { 0xB60B60B6, 0xB60B60B6 }, { 0xB21642C9, 0 },
+  { 0xAE4C415D, 0 },          { 0xAAAAAAAB, 0 },
+  { 0xA72F053A, 0 },          { 0xA3D70A3E, 0 },
+  { 0xA0A0A0A1, 0 },          { 0x9D89D89E, 0 },
+  { 0x9A90E7D9, 0x9A90E7D9 }, { 0x97B425ED, 0x97B425ED },
+  { 0x94F2094F, 0x94F2094F }, { 0x92492492, 0x92492492 },
+  { 0x8FB823EE, 0x8FB823EE }, { 0x8D3DCB09, 0 },
+  { 0x8AD8F2FC, 0 },          { 0x88888889, 0 },
+  { 0x864B8A7E, 0 },          { 0x84210842, 0x84210842 },
+  { 0x82082082, 0x82082082 }, { 0xFFFFFFFF, 0xFFFFFFFF },
+  { 0xFC0FC0FD, 0 },          { 0xF83E0F84, 0 },
+  { 0xF4898D60, 0 },          { 0xF0F0F0F1, 0 },
+  { 0xED7303B6, 0 },          { 0xEA0EA0EA, 0xEA0EA0EA },
+  { 0xE6C2B449, 0 },          { 0xE38E38E4, 0 },
+  { 0xE070381C, 0xE070381C }, { 0xDD67C8A6, 0xDD67C8A6 },
+  { 0xDA740DA8, 0 },          { 0xD79435E5, 0xD79435E5 },
+  { 0xD4C77B04, 0 },          { 0xD20D20D2, 0xD20D20D2 },
+  { 0xCF6474A9, 0 },          { 0xCCCCCCCD, 0 },
+  { 0xCA4587E7, 0 },          { 0xC7CE0C7D, 0 },
+  { 0xC565C87C, 0 },          { 0xC30C30C3, 0xC30C30C3 },
+  { 0xC0C0C0C1, 0 },          { 0xBE82FA0C, 0 },
+  { 0xBC52640C, 0 },          { 0xBA2E8BA3, 0 },
+  { 0xB81702E1, 0 },          { 0xB60B60B6, 0xB60B60B6 },
+  { 0xB40B40B4, 0xB40B40B4 }, { 0xB21642C9, 0 },
+  { 0xB02C0B03, 0 },          { 0xAE4C415D, 0 },
+  { 0xAC769184, 0xAC769184 }, { 0xAAAAAAAB, 0 },
+  { 0xA8E83F57, 0xA8E83F57 }, { 0xA72F053A, 0 },
+  { 0xA57EB503, 0 },          { 0xA3D70A3E, 0 },
+  { 0xA237C32B, 0xA237C32B }, { 0xA0A0A0A1, 0 },
+  { 0x9F1165E7, 0x9F1165E7 }, { 0x9D89D89E, 0 },
+  { 0x9C09C09C, 0x9C09C09C }, { 0x9A90E7D9, 0x9A90E7D9 },
+  { 0x991F1A51, 0x991F1A51 }, { 0x97B425ED, 0x97B425ED },
+  { 0x964FDA6C, 0x964FDA6C }, { 0x94F2094F, 0x94F2094F },
+  { 0x939A85C4, 0x939A85C4 }, { 0x92492492, 0x92492492 },
+  { 0x90FDBC09, 0x90FDBC09 }, { 0x8FB823EE, 0x8FB823EE },
+  { 0x8E78356D, 0x8E78356D }, { 0x8D3DCB09, 0 },
+  { 0x8C08C08C, 0x8C08C08C }, { 0x8AD8F2FC, 0 },
+  { 0x89AE408A, 0 },          { 0x88888889, 0 },
+  { 0x8767AB5F, 0x8767AB5F }, { 0x864B8A7E, 0 },
+  { 0x85340853, 0x85340853 }, { 0x84210842, 0x84210842 },
+  { 0x83126E98, 0 },          { 0x82082082, 0x82082082 },
+  { 0x81020408, 0x81020408 }, { 0xFFFFFFFF, 0xFFFFFFFF },
+  { 0xFE03F810, 0 },          { 0xFC0FC0FD, 0 },
+  { 0xFA232CF3, 0 },          { 0xF83E0F84, 0 },
+  { 0xF6603D99, 0 },          { 0xF4898D60, 0 },
+  { 0xF2B9D649, 0 },          { 0xF0F0F0F1, 0 },
+  { 0xEF2EB720, 0 },          { 0xED7303B6, 0 },
+  { 0xEBBDB2A6, 0 },          { 0xEA0EA0EA, 0xEA0EA0EA },
+  { 0xE865AC7C, 0 },          { 0xE6C2B449, 0 },
+  { 0xE525982B, 0 },          { 0xE38E38E4, 0 },
+  { 0xE1FC780F, 0 },          { 0xE070381C, 0xE070381C },
+  { 0xDEE95C4D, 0 },          { 0xDD67C8A6, 0xDD67C8A6 },
+  { 0xDBEB61EF, 0 },          { 0xDA740DA8, 0 },
+  { 0xD901B204, 0 },          { 0xD79435E5, 0xD79435E5 },
+  { 0xD62B80D7, 0 },          { 0xD4C77B04, 0 },
+  { 0xD3680D37, 0 },          { 0xD20D20D2, 0xD20D20D2 },
+  { 0xD0B69FCC, 0 },          { 0xCF6474A9, 0 },
+  { 0xCE168A77, 0xCE168A77 }, { 0xCCCCCCCD, 0 },
+  { 0xCB8727C1, 0 },          { 0xCA4587E7, 0 },
+  { 0xC907DA4F, 0 },          { 0xC7CE0C7D, 0 },
+  { 0xC6980C6A, 0 },          { 0xC565C87C, 0 },
+  { 0xC4372F86, 0 },          { 0xC30C30C3, 0xC30C30C3 },
+  { 0xC1E4BBD6, 0 },          { 0xC0C0C0C1, 0 },
+  { 0xBFA02FE8, 0xBFA02FE8 }, { 0xBE82FA0C, 0 },
+  { 0xBD691047, 0xBD691047 }, { 0xBC52640C, 0 },
+  { 0xBB3EE722, 0 },          { 0xBA2E8BA3, 0 },
+  { 0xB92143FA, 0xB92143FA }, { 0xB81702E1, 0 },
+  { 0xB70FBB5A, 0xB70FBB5A }, { 0xB60B60B6, 0xB60B60B6 },
+  { 0xB509E68B, 0 },          { 0xB40B40B4, 0xB40B40B4 },
+  { 0xB30F6353, 0 },          { 0xB21642C9, 0 },
+  { 0xB11FD3B8, 0xB11FD3B8 }, { 0xB02C0B03, 0 },
+  { 0xAF3ADDC7, 0 },          { 0xAE4C415D, 0 },
+  { 0xAD602B58, 0xAD602B58 }, { 0xAC769184, 0xAC769184 },
+  { 0xAB8F69E3, 0 },          { 0xAAAAAAAB, 0 },
+  { 0xA9C84A48, 0 },          { 0xA8E83F57, 0xA8E83F57 },
+  { 0xA80A80A8, 0xA80A80A8 }, { 0xA72F053A, 0 },
+  { 0xA655C439, 0xA655C439 }, { 0xA57EB503, 0 },
+  { 0xA4A9CF1E, 0 },          { 0xA3D70A3E, 0 },
+  { 0xA3065E40, 0 },          { 0xA237C32B, 0xA237C32B },
+  { 0xA16B312F, 0 },          { 0xA0A0A0A1, 0 },
+  { 0x9FD809FE, 0 },          { 0x9F1165E7, 0x9F1165E7 },
+  { 0x9E4CAD24, 0 },          { 0x9D89D89E, 0 },
+  { 0x9CC8E161, 0 },          { 0x9C09C09C, 0x9C09C09C },
+  { 0x9B4C6F9F, 0 },          { 0x9A90E7D9, 0x9A90E7D9 },
+  { 0x99D722DB, 0 },          { 0x991F1A51, 0x991F1A51 },
+  { 0x9868C80A, 0 },          { 0x97B425ED, 0x97B425ED },
+  { 0x97012E02, 0x97012E02 }, { 0x964FDA6C, 0x964FDA6C },
+  { 0x95A02568, 0x95A02568 }, { 0x94F2094F, 0x94F2094F },
+  { 0x94458094, 0x94458094 }, { 0x939A85C4, 0x939A85C4 },
+  { 0x92F11384, 0x92F11384 }, { 0x92492492, 0x92492492 },
+  { 0x91A2B3C5, 0 },          { 0x90FDBC09, 0x90FDBC09 },
+  { 0x905A3863, 0x905A3863 }, { 0x8FB823EE, 0x8FB823EE },
+  { 0x8F1779DA, 0 },          { 0x8E78356D, 0x8E78356D },
+  { 0x8DDA5202, 0x8DDA5202 }, { 0x8D3DCB09, 0 },
+  { 0x8CA29C04, 0x8CA29C04 }, { 0x8C08C08C, 0x8C08C08C },
+  { 0x8B70344A, 0x8B70344A }, { 0x8AD8F2FC, 0 },
+  { 0x8A42F870, 0x8A42F870 }, { 0x89AE408A, 0 },
+  { 0x891AC73B, 0 },          { 0x88888889, 0 },
+  { 0x87F78088, 0 },          { 0x8767AB5F, 0x8767AB5F },
+  { 0x86D90545, 0 },          { 0x864B8A7E, 0 },
+  { 0x85BF3761, 0x85BF3761 }, { 0x85340853, 0x85340853 },
+  { 0x84A9F9C8, 0x84A9F9C8 }, { 0x84210842, 0x84210842 },
+  { 0x83993052, 0x83993052 }, { 0x83126E98, 0 },
+  { 0x828CBFBF, 0 },          { 0x82082082, 0x82082082 },
+  { 0x81848DA9, 0 },          { 0x81020408, 0x81020408 },
+  { 0x80808081, 0 },          { 0xFFFFFFFF, 0xFFFFFFFF },
+  { 0xFF00FF01, 0 },          { 0xFE03F810, 0 },
+  { 0xFD08E551, 0 },          { 0xFC0FC0FD, 0 },
+  { 0xFB188566, 0 },          { 0xFA232CF3, 0 },
+  { 0xF92FB222, 0 },          { 0xF83E0F84, 0 },
+  { 0xF74E3FC3, 0 },          { 0xF6603D99, 0 },
+  { 0xF57403D6, 0 },          { 0xF4898D60, 0 },
+  { 0xF3A0D52D, 0 },          { 0xF2B9D649, 0 },
+  { 0xF1D48BCF, 0 },          { 0xF0F0F0F1, 0 },
+  { 0xF00F00F0, 0xF00F00F0 }, { 0xEF2EB720, 0 },
+  { 0xEE500EE5, 0xEE500EE5 }, { 0xED7303B6, 0 },
+  { 0xEC979119, 0 },          { 0xEBBDB2A6, 0 },
+  { 0xEAE56404, 0 },          { 0xEA0EA0EA, 0xEA0EA0EA },
+  { 0xE9396520, 0 },          { 0xE865AC7C, 0 },
+  { 0xE79372E3, 0 },          { 0xE6C2B449, 0 },
+  { 0xE5F36CB0, 0xE5F36CB0 }, { 0xE525982B, 0 },
+  { 0xE45932D8, 0 },          { 0xE38E38E4, 0 },
+  { 0xE2C4A689, 0 },          { 0xE1FC780F, 0 },
+  { 0xE135A9CA, 0 },          { 0xE070381C, 0xE070381C },
+  { 0xDFAC1F75, 0 },          { 0xDEE95C4D, 0 },
+  { 0xDE27EB2D, 0 },          { 0xDD67C8A6, 0xDD67C8A6 },
+  { 0xDCA8F159, 0 },          { 0xDBEB61EF, 0 },
+  { 0xDB2F171E, 0 },          { 0xDA740DA8, 0 },
+  { 0xD9BA4257, 0 },          { 0xD901B204, 0 },
+  { 0xD84A598F, 0 },          { 0xD79435E5, 0xD79435E5 },
+  { 0xD6DF43FD, 0 },          { 0xD62B80D7, 0 },
+  { 0xD578E97D, 0 },          { 0xD4C77B04, 0 },
+  { 0xD417328A, 0 },          { 0xD3680D37, 0 },
+  { 0xD2BA083C, 0 },          { 0xD20D20D2, 0xD20D20D2 },
+  { 0xD161543E, 0xD161543E }, { 0xD0B69FCC, 0 },
+  { 0xD00D00D0, 0xD00D00D0 }, { 0xCF6474A9, 0 },
+  { 0xCEBCF8BC, 0 },          { 0xCE168A77, 0xCE168A77 },
+  { 0xCD712753, 0 },          { 0xCCCCCCCD, 0 },
+  { 0xCC29786D, 0 },          { 0xCB8727C1, 0 },
+  { 0xCAE5D85F, 0xCAE5D85F }, { 0xCA4587E7, 0 },
+  { 0xC9A633FD, 0 },          { 0xC907DA4F, 0 },
+  { 0xC86A7890, 0xC86A7890 }, { 0xC7CE0C7D, 0 },
+  { 0xC73293D8, 0 },          { 0xC6980C6A, 0 },
+  { 0xC5FE7403, 0xC5FE7403 }, { 0xC565C87C, 0 },
+  { 0xC4CE07B0, 0xC4CE07B0 }, { 0xC4372F86, 0 },
+  { 0xC3A13DE6, 0xC3A13DE6 }, { 0xC30C30C3, 0xC30C30C3 },
+  { 0xC2780614, 0 },          { 0xC1E4BBD6, 0 },
+  { 0xC152500C, 0xC152500C }, { 0xC0C0C0C1, 0 },
+  { 0xC0300C03, 0xC0300C03 }, { 0xBFA02FE8, 0xBFA02FE8 },
+  { 0xBF112A8B, 0 },          { 0xBE82FA0C, 0 },
+  { 0xBDF59C92, 0 },          { 0xBD691047, 0xBD691047 },
+  { 0xBCDD535E, 0 },          { 0xBC52640C, 0 },
+  { 0xBBC8408D, 0 },          { 0xBB3EE722, 0 },
+  { 0xBAB65610, 0xBAB65610 }, { 0xBA2E8BA3, 0 },
+  { 0xB9A7862A, 0xB9A7862A }, { 0xB92143FA, 0xB92143FA },
+  { 0xB89BC36D, 0 },          { 0xB81702E1, 0 },
+  { 0xB79300B8, 0 },          { 0xB70FBB5A, 0xB70FBB5A },
+  { 0xB68D3134, 0xB68D3134 }, { 0xB60B60B6, 0xB60B60B6 },
+  { 0xB58A4855, 0xB58A4855 }, { 0xB509E68B, 0 },
+  { 0xB48A39D4, 0xB48A39D4 }, { 0xB40B40B4, 0xB40B40B4 },
+  { 0xB38CF9B0, 0xB38CF9B0 }, { 0xB30F6353, 0 },
+  { 0xB2927C2A, 0 },          { 0xB21642C9, 0 },
+  { 0xB19AB5C5, 0 },          { 0xB11FD3B8, 0xB11FD3B8 },
+  { 0xB0A59B42, 0 },          { 0xB02C0B03, 0 },
+  { 0xAFB321A1, 0xAFB321A1 }, { 0xAF3ADDC7, 0 },
+  { 0xAEC33E20, 0 },          { 0xAE4C415D, 0 },
+  { 0xADD5E632, 0xADD5E632 }, { 0xAD602B58, 0xAD602B58 },
+  { 0xACEB0F89, 0xACEB0F89 }, { 0xAC769184, 0xAC769184 },
+  { 0xAC02B00B, 0 },          { 0xAB8F69E3, 0 },
+  { 0xAB1CBDD4, 0 },          { 0xAAAAAAAB, 0 },
+  { 0xAA392F36, 0 },          { 0xA9C84A48, 0 },
+  { 0xA957FAB5, 0xA957FAB5 }, { 0xA8E83F57, 0xA8E83F57 },
+  { 0xA8791709, 0 },          { 0xA80A80A8, 0xA80A80A8 },
+  { 0xA79C7B17, 0 },          { 0xA72F053A, 0 },
+  { 0xA6C21DF7, 0 },          { 0xA655C439, 0xA655C439 },
+  { 0xA5E9F6ED, 0xA5E9F6ED }, { 0xA57EB503, 0 },
+  { 0xA513FD6C, 0 },          { 0xA4A9CF1E, 0 },
+  { 0xA4402910, 0xA4402910 }, { 0xA3D70A3E, 0 },
+  { 0xA36E71A3, 0 },          { 0xA3065E40, 0 },
+  { 0xA29ECF16, 0xA29ECF16 }, { 0xA237C32B, 0xA237C32B },
+  { 0xA1D13986, 0 },          { 0xA16B312F, 0 },
+  { 0xA105A933, 0 },          { 0xA0A0A0A1, 0 },
+  { 0xA03C1689, 0 },          { 0x9FD809FE, 0 },
+  { 0x9F747A15, 0x9F747A15 }, { 0x9F1165E7, 0x9F1165E7 },
+  { 0x9EAECC8D, 0x9EAECC8D }, { 0x9E4CAD24, 0 },
+  { 0x9DEB06C9, 0x9DEB06C9 }, { 0x9D89D89E, 0 },
+  { 0x9D2921C4, 0 },          { 0x9CC8E161, 0 },
+  { 0x9C69169B, 0x9C69169B }, { 0x9C09C09C, 0x9C09C09C },
+  { 0x9BAADE8E, 0x9BAADE8E }, { 0x9B4C6F9F, 0 },
+  { 0x9AEE72FD, 0 },          { 0x9A90E7D9, 0x9A90E7D9 },
+  { 0x9A33CD67, 0x9A33CD67 }, { 0x99D722DB, 0 },
+  { 0x997AE76B, 0x997AE76B }, { 0x991F1A51, 0x991F1A51 },
+  { 0x98C3BAC7, 0x98C3BAC7 }, { 0x9868C80A, 0 },
+  { 0x980E4156, 0x980E4156 }, { 0x97B425ED, 0x97B425ED },
+  { 0x975A7510, 0 },          { 0x97012E02, 0x97012E02 },
+  { 0x96A8500A, 0 },          { 0x964FDA6C, 0x964FDA6C },
+  { 0x95F7CC73, 0 },          { 0x95A02568, 0x95A02568 },
+  { 0x9548E498, 0 },          { 0x94F2094F, 0x94F2094F },
+  { 0x949B92DE, 0 },          { 0x94458094, 0x94458094 },
+  { 0x93EFD1C5, 0x93EFD1C5 }, { 0x939A85C4, 0x939A85C4 },
+  { 0x93459BE7, 0 },          { 0x92F11384, 0x92F11384 },
+  { 0x929CEBF5, 0 },          { 0x92492492, 0x92492492 },
+  { 0x91F5BCB9, 0 },          { 0x91A2B3C5, 0 },
+  { 0x91500915, 0x91500915 }, { 0x90FDBC09, 0x90FDBC09 },
+  { 0x90ABCC02, 0x90ABCC02 }, { 0x905A3863, 0x905A3863 },
+  { 0x90090090, 0x90090090 }, { 0x8FB823EE, 0x8FB823EE },
+  { 0x8F67A1E4, 0 },          { 0x8F1779DA, 0 },
+  { 0x8EC7AB3A, 0 },          { 0x8E78356D, 0x8E78356D },
+  { 0x8E2917E1, 0 },          { 0x8DDA5202, 0x8DDA5202 },
+  { 0x8D8BE340, 0 },          { 0x8D3DCB09, 0 },
+  { 0x8CF008CF, 0x8CF008CF }, { 0x8CA29C04, 0x8CA29C04 },
+  { 0x8C55841D, 0 },          { 0x8C08C08C, 0x8C08C08C },
+  { 0x8BBC50C9, 0 },          { 0x8B70344A, 0x8B70344A },
+  { 0x8B246A88, 0 },          { 0x8AD8F2FC, 0 },
+  { 0x8A8DCD20, 0 },          { 0x8A42F870, 0x8A42F870 },
+  { 0x89F8746A, 0 },          { 0x89AE408A, 0 },
+  { 0x89645C4F, 0x89645C4F }, { 0x891AC73B, 0 },
+  { 0x88D180CD, 0x88D180CD }, { 0x88888889, 0 },
+  { 0x883FDDF0, 0x883FDDF0 }, { 0x87F78088, 0 },
+  { 0x87AF6FD6, 0 },          { 0x8767AB5F, 0x8767AB5F },
+  { 0x872032AC, 0x872032AC }, { 0x86D90545, 0 },
+  { 0x869222B2, 0 },          { 0x864B8A7E, 0 },
+  { 0x86053C34, 0x86053C34 }, { 0x85BF3761, 0x85BF3761 },
+  { 0x85797B91, 0x85797B91 }, { 0x85340853, 0x85340853 },
+  { 0x84EEDD36, 0 },          { 0x84A9F9C8, 0x84A9F9C8 },
+  { 0x84655D9C, 0 },          { 0x84210842, 0x84210842 },
+  { 0x83DCF94E, 0 },          { 0x83993052, 0x83993052 },
+  { 0x8355ACE4, 0 },          { 0x83126E98, 0 },
+  { 0x82CF7504, 0 },          { 0x828CBFBF, 0 },
+  { 0x824A4E61, 0 },          { 0x82082082, 0x82082082 },
+  { 0x81C635BC, 0x81C635BC }, { 0x81848DA9, 0 },
+  { 0x814327E4, 0 },          { 0x81020408, 0x81020408 },
+  { 0x80C121B3, 0 },          { 0x80808081, 0 },
+  { 0x80402010, 0x80402010 }, { 0xFFFFFFFF, 0xFFFFFFFF },
+  { 0xFF803FE1, 0 },          { 0xFF00FF01, 0 },
+  { 0xFE823CA6, 0 },          { 0xFE03F810, 0 },
+  { 0xFD863087, 0 },          { 0xFD08E551, 0 },
+  { 0xFC8C15B5, 0 },          { 0xFC0FC0FD, 0 },
+  { 0xFB93E673, 0 },          { 0xFB188566, 0 },
+  { 0xFA9D9D20, 0 },          { 0xFA232CF3, 0 },
+  { 0xF9A9342D, 0 },          { 0xF92FB222, 0 },
+  { 0xF8B6A622, 0xF8B6A622 }, { 0xF83E0F84, 0 },
+  { 0xF7C5ED9D, 0 },          { 0xF74E3FC3, 0 },
+  { 0xF6D7054E, 0 },          { 0xF6603D99, 0 },
+  { 0xF5E9E7FD, 0 },          { 0xF57403D6, 0 },
+  { 0xF4FE9083, 0 },          { 0xF4898D60, 0 },
+  { 0xF414F9CE, 0 },          { 0xF3A0D52D, 0 },
+  { 0xF32D1EE0, 0 },          { 0xF2B9D649, 0 },
+  { 0xF246FACC, 0 },          { 0xF1D48BCF, 0 },
+  { 0xF16288B9, 0 },          { 0xF0F0F0F1, 0 },
+  { 0xF07FC3E0, 0xF07FC3E0 }, { 0xF00F00F0, 0xF00F00F0 },
+  { 0xEF9EA78C, 0 },          { 0xEF2EB720, 0 },
+  { 0xEEBF2F19, 0 },          { 0xEE500EE5, 0xEE500EE5 },
+  { 0xEDE155F4, 0 },          { 0xED7303B6, 0 },
+  { 0xED05179C, 0xED05179C }, { 0xEC979119, 0 },
+  { 0xEC2A6FA0, 0xEC2A6FA0 }, { 0xEBBDB2A6, 0 },
+  { 0xEB5159A0, 0 },          { 0xEAE56404, 0 },
+  { 0xEA79D14A, 0 },          { 0xEA0EA0EA, 0xEA0EA0EA },
+  { 0xE9A3D25E, 0xE9A3D25E }, { 0xE9396520, 0 },
+  { 0xE8CF58AB, 0 },          { 0xE865AC7C, 0 },
+  { 0xE7FC600F, 0 },          { 0xE79372E3, 0 },
+  { 0xE72AE476, 0 },          { 0xE6C2B449, 0 },
+  { 0xE65AE1DC, 0 },          { 0xE5F36CB0, 0xE5F36CB0 },
+  { 0xE58C544A, 0 },          { 0xE525982B, 0 },
+  { 0xE4BF37D9, 0 },          { 0xE45932D8, 0 },
+  { 0xE3F388AF, 0 },          { 0xE38E38E4, 0 },
+  { 0xE32942FF, 0 },          { 0xE2C4A689, 0 },
+  { 0xE260630B, 0 },          { 0xE1FC780F, 0 },
+  { 0xE198E520, 0 },          { 0xE135A9CA, 0 },
+  { 0xE0D2C59A, 0 },          { 0xE070381C, 0xE070381C },
+  { 0xE00E00E0, 0xE00E00E0 }, { 0xDFAC1F75, 0 },
+  { 0xDF4A9369, 0 },          { 0xDEE95C4D, 0 },
+  { 0xDE8879B3, 0 },          { 0xDE27EB2D, 0 },
+  { 0xDDC7B04D, 0 },          { 0xDD67C8A6, 0xDD67C8A6 },
+  { 0xDD0833CE, 0 },          { 0xDCA8F159, 0 },
+  { 0xDC4A00DD, 0 },          { 0xDBEB61EF, 0 },
+  { 0xDB8D1428, 0 },          { 0xDB2F171E, 0 },
+  { 0xDAD16A6B, 0 },          { 0xDA740DA8, 0 },
+  { 0xDA17006D, 0xDA17006D }, { 0xD9BA4257, 0 },
+  { 0xD95DD300, 0 },          { 0xD901B204, 0 },
+  { 0xD8A5DEFF, 0 },          { 0xD84A598F, 0 },
+  { 0xD7EF2152, 0 },          { 0xD79435E5, 0xD79435E5 },
+  { 0xD73996E9, 0 },          { 0xD6DF43FD, 0 },
+  { 0xD6853CC1, 0 },          { 0xD62B80D7, 0 },
+  { 0xD5D20FDF, 0 },          { 0xD578E97D, 0 },
+  { 0xD5200D52, 0xD5200D52 }, { 0xD4C77B04, 0 },
+  { 0xD46F3235, 0 },          { 0xD417328A, 0 },
+  { 0xD3BF7BA9, 0 },          { 0xD3680D37, 0 },
+  { 0xD310E6DB, 0 },          { 0xD2BA083C, 0 },
+  { 0xD2637101, 0 },          { 0xD20D20D2, 0xD20D20D2 },
+  { 0xD1B71759, 0 },          { 0xD161543E, 0xD161543E },
+  { 0xD10BD72C, 0 },          { 0xD0B69FCC, 0 },
+  { 0xD061ADCA, 0 },          { 0xD00D00D0, 0xD00D00D0 },
+  { 0xCFB8988C, 0 },          { 0xCF6474A9, 0 },
+  { 0xCF1094D4, 0 },          { 0xCEBCF8BC, 0 },
+  { 0xCE69A00D, 0 },          { 0xCE168A77, 0xCE168A77 },
+  { 0xCDC3B7A9, 0xCDC3B7A9 }, { 0xCD712753, 0 },
+  { 0xCD1ED924, 0 },          { 0xCCCCCCCD, 0 },
+  { 0xCC7B0200, 0 },          { 0xCC29786D, 0 },
+  { 0xCBD82FC7, 0 },          { 0xCB8727C1, 0 },
+  { 0xCB36600D, 0 },          { 0xCAE5D85F, 0xCAE5D85F },
+  { 0xCA95906C, 0 },          { 0xCA4587E7, 0 },
+  { 0xC9F5BE86, 0 },          { 0xC9A633FD, 0 },
+  { 0xC956E803, 0xC956E803 }, { 0xC907DA4F, 0 },
+  { 0xC8B90A96, 0 },          { 0xC86A7890, 0xC86A7890 },
+  { 0xC81C23F5, 0xC81C23F5 }, { 0xC7CE0C7D, 0 },
+  { 0xC78031E0, 0xC78031E0 }, { 0xC73293D8, 0 },
+  { 0xC6E5321D, 0 },          { 0xC6980C6A, 0 },
+  { 0xC64B2278, 0xC64B2278 }, { 0xC5FE7403, 0xC5FE7403 },
+  { 0xC5B200C6, 0 },          { 0xC565C87C, 0 },
+  { 0xC519CAE0, 0xC519CAE0 }, { 0xC4CE07B0, 0xC4CE07B0 },
+  { 0xC4827EA8, 0xC4827EA8 }, { 0xC4372F86, 0 },
+  { 0xC3EC1A06, 0 },          { 0xC3A13DE6, 0xC3A13DE6 },
+  { 0xC3569AE6, 0 },          { 0xC30C30C3, 0xC30C30C3 },
+  { 0xC2C1FF3E, 0 },          { 0xC2780614, 0 },
+  { 0xC22E4507, 0 },          { 0xC1E4BBD6, 0 },
+  { 0xC19B6A42, 0 },          { 0xC152500C, 0xC152500C },
+  { 0xC1096CF6, 0 },          { 0xC0C0C0C1, 0 },
+  { 0xC0784B2F, 0 },          { 0xC0300C03, 0xC0300C03 },
+  { 0xBFE80300, 0 },          { 0xBFA02FE8, 0xBFA02FE8 },
+  { 0xBF589280, 0 },          { 0xBF112A8B, 0 },
+  { 0xBEC9F7CE, 0 },          { 0xBE82FA0C, 0 },
+  { 0xBE3C310C, 0 },          { 0xBDF59C92, 0 },
+  { 0xBDAF3C64, 0 },          { 0xBD691047, 0xBD691047 },
+  { 0xBD231803, 0 },          { 0xBCDD535E, 0 },
+  { 0xBC97C21E, 0xBC97C21E }, { 0xBC52640C, 0 },
+  { 0xBC0D38EE, 0xBC0D38EE }, { 0xBBC8408D, 0 },
+  { 0xBB837AB1, 0 },          { 0xBB3EE722, 0 },
+  { 0xBAFA85A9, 0xBAFA85A9 }, { 0xBAB65610, 0xBAB65610 },
+  { 0xBA725820, 0xBA725820 }, { 0xBA2E8BA3, 0 },
+  { 0xB9EAF063, 0 },          { 0xB9A7862A, 0xB9A7862A },
+  { 0xB9644CC4, 0 },          { 0xB92143FA, 0xB92143FA },
+  { 0xB8DE6B9A, 0 },          { 0xB89BC36D, 0 },
+  { 0xB8594B41, 0 },          { 0xB81702E1, 0 },
+  { 0xB7D4EA19, 0xB7D4EA19 }, { 0xB79300B8, 0 },
+  { 0xB7514689, 0 },          { 0xB70FBB5A, 0xB70FBB5A },
+  { 0xB6CE5EF9, 0xB6CE5EF9 }, { 0xB68D3134, 0xB68D3134 },
+  { 0xB64C31D9, 0 },          { 0xB60B60B6, 0xB60B60B6 },
+  { 0xB5CABD9B, 0 },          { 0xB58A4855, 0xB58A4855 },
+  { 0xB54A00B5, 0xB54A00B5 }, { 0xB509E68B, 0 },
+  { 0xB4C9F9A5, 0 },          { 0xB48A39D4, 0xB48A39D4 },
+  { 0xB44AA6E9, 0xB44AA6E9 }, { 0xB40B40B4, 0xB40B40B4 },
+  { 0xB3CC0706, 0 },          { 0xB38CF9B0, 0xB38CF9B0 },
+  { 0xB34E1884, 0 },          { 0xB30F6353, 0 },
+  { 0xB2D0D9EF, 0 },          { 0xB2927C2A, 0 },
+  { 0xB25449D7, 0 },          { 0xB21642C9, 0 },
+  { 0xB1D866D1, 0xB1D866D1 }, { 0xB19AB5C5, 0 },
+  { 0xB15D2F76, 0 },          { 0xB11FD3B8, 0xB11FD3B8 },
+  { 0xB0E2A260, 0xB0E2A260 }, { 0xB0A59B42, 0 },
+  { 0xB068BE31, 0 },          { 0xB02C0B03, 0 },
+  { 0xAFEF818C, 0 },          { 0xAFB321A1, 0xAFB321A1 },
+  { 0xAF76EB19, 0 },          { 0xAF3ADDC7, 0 },
+  { 0xAEFEF982, 0 },          { 0xAEC33E20, 0 },
+  { 0xAE87AB76, 0xAE87AB76 }, { 0xAE4C415D, 0 },
+  { 0xAE10FFA9, 0 },          { 0xADD5E632, 0xADD5E632 },
+  { 0xAD9AF4D0, 0 },          { 0xAD602B58, 0xAD602B58 },
+  { 0xAD2589A4, 0 },          { 0xACEB0F89, 0xACEB0F89 },
+  { 0xACB0BCE1, 0xACB0BCE1 }, { 0xAC769184, 0xAC769184 },
+  { 0xAC3C8D4A, 0 },          { 0xAC02B00B, 0 },
+  { 0xABC8F9A0, 0xABC8F9A0 }, { 0xAB8F69E3, 0 },
+  { 0xAB5600AC, 0 },          { 0xAB1CBDD4, 0 },
+  { 0xAAE3A136, 0 },          { 0xAAAAAAAB, 0 },
+  { 0xAA71DA0D, 0 },          { 0xAA392F36, 0 },
+  { 0xAA00AA01, 0 },          { 0xA9C84A48, 0 },
+  { 0xA9900FE6, 0 },          { 0xA957FAB5, 0xA957FAB5 },
+  { 0xA9200A92, 0xA9200A92 }, { 0xA8E83F57, 0xA8E83F57 },
+  { 0xA8B098E0, 0xA8B098E0 }, { 0xA8791709, 0 },
+  { 0xA841B9AD, 0 },          { 0xA80A80A8, 0xA80A80A8 },
+  { 0xA7D36BD8, 0 },          { 0xA79C7B17, 0 },
+  { 0xA765AE44, 0 },          { 0xA72F053A, 0 },
+  { 0xA6F87FD6, 0xA6F87FD6 }, { 0xA6C21DF7, 0 },
+  { 0xA68BDF79, 0 },          { 0xA655C439, 0xA655C439 },
+  { 0xA61FCC16, 0xA61FCC16 }, { 0xA5E9F6ED, 0xA5E9F6ED },
+  { 0xA5B4449D, 0 },          { 0xA57EB503, 0 },
+  { 0xA54947FE, 0 },          { 0xA513FD6C, 0 },
+  { 0xA4DED52C, 0xA4DED52C }, { 0xA4A9CF1E, 0 },
+  { 0xA474EB1F, 0xA474EB1F }, { 0xA4402910, 0xA4402910 },
+  { 0xA40B88D0, 0 },          { 0xA3D70A3E, 0 },
+  { 0xA3A2AD39, 0xA3A2AD39 }, { 0xA36E71A3, 0 },
+  { 0xA33A575A, 0xA33A575A }, { 0xA3065E40, 0 },
+  { 0xA2D28634, 0 },          { 0xA29ECF16, 0xA29ECF16 },
+  { 0xA26B38C9, 0 },          { 0xA237C32B, 0xA237C32B },
+  { 0xA2046E1F, 0xA2046E1F }, { 0xA1D13986, 0 },
+  { 0xA19E2540, 0 },          { 0xA16B312F, 0 },
+  { 0xA1385D35, 0 },          { 0xA105A933, 0 },
+  { 0xA0D3150C, 0 },          { 0xA0A0A0A1, 0 },
+  { 0xA06E4BD4, 0xA06E4BD4 }, { 0xA03C1689, 0 },
+  { 0xA00A00A0, 0xA00A00A0 }, { 0x9FD809FE, 0 },
+  { 0x9FA63284, 0 },          { 0x9F747A15, 0x9F747A15 },
+  { 0x9F42E095, 0x9F42E095 }, { 0x9F1165E7, 0x9F1165E7 },
+  { 0x9EE009EE, 0x9EE009EE }, { 0x9EAECC8D, 0x9EAECC8D },
+  { 0x9E7DADA9, 0 },          { 0x9E4CAD24, 0 },
+  { 0x9E1BCAE3, 0 },          { 0x9DEB06C9, 0x9DEB06C9 },
+  { 0x9DBA60BB, 0x9DBA60BB }, { 0x9D89D89E, 0 },
+  { 0x9D596E54, 0x9D596E54 }, { 0x9D2921C4, 0 },
+  { 0x9CF8F2D1, 0x9CF8F2D1 }, { 0x9CC8E161, 0 },
+  { 0x9C98ED58, 0 },          { 0x9C69169B, 0x9C69169B },
+  { 0x9C395D10, 0x9C395D10 }, { 0x9C09C09C, 0x9C09C09C },
+  { 0x9BDA4124, 0x9BDA4124 }, { 0x9BAADE8E, 0x9BAADE8E },
+  { 0x9B7B98C0, 0 },          { 0x9B4C6F9F, 0 },
+  { 0x9B1D6311, 0x9B1D6311 }, { 0x9AEE72FD, 0 },
+  { 0x9ABF9F48, 0x9ABF9F48 }, { 0x9A90E7D9, 0x9A90E7D9 },
+  { 0x9A624C97, 0 },          { 0x9A33CD67, 0x9A33CD67 },
+  { 0x9A056A31, 0 },          { 0x99D722DB, 0 },
+  { 0x99A8F74C, 0 },          { 0x997AE76B, 0x997AE76B },
+  { 0x994CF320, 0x994CF320 }, { 0x991F1A51, 0x991F1A51 },
+  { 0x98F15CE7, 0 },          { 0x98C3BAC7, 0x98C3BAC7 },
+  { 0x989633DB, 0x989633DB }, { 0x9868C80A, 0 },
+  { 0x983B773B, 0 },          { 0x980E4156, 0x980E4156 },
+  { 0x97E12644, 0x97E12644 }, { 0x97B425ED, 0x97B425ED },
+  { 0x97874039, 0 },          { 0x975A7510, 0 },
+  { 0x972DC45B, 0 },          { 0x97012E02, 0x97012E02 },
+  { 0x96D4B1EF, 0 },          { 0x96A8500A, 0 },
+  { 0x967C083B, 0 },          { 0x964FDA6C, 0x964FDA6C },
+  { 0x9623C686, 0x9623C686 }, { 0x95F7CC73, 0 },
+  { 0x95CBEC1B, 0 },          { 0x95A02568, 0x95A02568 },
+  { 0x95747844, 0 },          { 0x9548E498, 0 },
+  { 0x951D6A4E, 0 },          { 0x94F2094F, 0x94F2094F },
+  { 0x94C6C187, 0 },          { 0x949B92DE, 0 },
+  { 0x94707D3F, 0 },          { 0x94458094, 0x94458094 },
+  { 0x941A9CC8, 0x941A9CC8 }, { 0x93EFD1C5, 0x93EFD1C5 },
+  { 0x93C51F76, 0 },          { 0x939A85C4, 0x939A85C4 },
+  { 0x9370049C, 0 },          { 0x93459BE7, 0 },
+  { 0x931B4B91, 0 },          { 0x92F11384, 0x92F11384 },
+  { 0x92C6F3AC, 0x92C6F3AC }, { 0x929CEBF5, 0 },
+  { 0x9272FC48, 0x9272FC48 }, { 0x92492492, 0x92492492 },
+  { 0x921F64BF, 0 },          { 0x91F5BCB9, 0 },
+  { 0x91CC2C6C, 0x91CC2C6C }, { 0x91A2B3C5, 0 },
+  { 0x917952AF, 0 },          { 0x91500915, 0x91500915 },
+  { 0x9126D6E5, 0 },          { 0x90FDBC09, 0x90FDBC09 },
+  { 0x90D4B86F, 0 },          { 0x90ABCC02, 0x90ABCC02 },
+  { 0x9082F6B0, 0 },          { 0x905A3863, 0x905A3863 },
+  { 0x9031910A, 0 },          { 0x90090090, 0x90090090 },
+  { 0x8FE086E3, 0 },          { 0x8FB823EE, 0x8FB823EE },
+  { 0x8F8FD7A0, 0 },          { 0x8F67A1E4, 0 },
+  { 0x8F3F82A8, 0x8F3F82A8 }, { 0x8F1779DA, 0 },
+  { 0x8EEF8766, 0 },          { 0x8EC7AB3A, 0 },
+  { 0x8E9FE542, 0x8E9FE542 }, { 0x8E78356D, 0x8E78356D },
+  { 0x8E509BA8, 0x8E509BA8 }, { 0x8E2917E1, 0 },
+  { 0x8E01AA05, 0 },          { 0x8DDA5202, 0x8DDA5202 },
+  { 0x8DB30FC6, 0x8DB30FC6 }, { 0x8D8BE340, 0 },
+  { 0x8D64CC5C, 0 },          { 0x8D3DCB09, 0 },
+  { 0x8D16DF35, 0x8D16DF35 }, { 0x8CF008CF, 0x8CF008CF },
+  { 0x8CC947C5, 0 },          { 0x8CA29C04, 0x8CA29C04 },
+  { 0x8C7C057D, 0 },          { 0x8C55841D, 0 },
+  { 0x8C2F17D2, 0x8C2F17D2 }, { 0x8C08C08C, 0x8C08C08C },
+  { 0x8BE27E39, 0x8BE27E39 }, { 0x8BBC50C9, 0 },
+  { 0x8B963829, 0x8B963829 }, { 0x8B70344A, 0x8B70344A },
+  { 0x8B4A451A, 0 },          { 0x8B246A88, 0 },
+  { 0x8AFEA483, 0x8AFEA483 }, { 0x8AD8F2FC, 0 },
+  { 0x8AB355E0, 0x8AB355E0 }, { 0x8A8DCD20, 0 },
+  { 0x8A6858AB, 0 },          { 0x8A42F870, 0x8A42F870 },
+  { 0x8A1DAC60, 0x8A1DAC60 }, { 0x89F8746A, 0 },
+  { 0x89D3507D, 0 },          { 0x89AE408A, 0 },
+  { 0x89894480, 0 },          { 0x89645C4F, 0x89645C4F },
+  { 0x893F87E8, 0x893F87E8 }, { 0x891AC73B, 0 },
+  { 0x88F61A37, 0x88F61A37 }, { 0x88D180CD, 0x88D180CD },
+  { 0x88ACFAEE, 0 },          { 0x88888889, 0 },
+  { 0x8864298F, 0 },          { 0x883FDDF0, 0x883FDDF0 },
+  { 0x881BA59E, 0 },          { 0x87F78088, 0 },
+  { 0x87D36EA0, 0 },          { 0x87AF6FD6, 0 },
+  { 0x878B841B, 0 },          { 0x8767AB5F, 0x8767AB5F },
+  { 0x8743E595, 0 },          { 0x872032AC, 0x872032AC },
+  { 0x86FC9296, 0x86FC9296 }, { 0x86D90545, 0 },
+  { 0x86B58AA8, 0 },          { 0x869222B2, 0 },
+  { 0x866ECD53, 0x866ECD53 }, { 0x864B8A7E, 0 },
+  { 0x86285A23, 0x86285A23 }, { 0x86053C34, 0x86053C34 },
+  { 0x85E230A3, 0x85E230A3 }, { 0x85BF3761, 0x85BF3761 },
+  { 0x859C5060, 0x859C5060 }, { 0x85797B91, 0x85797B91 },
+  { 0x8556B8E7, 0x8556B8E7 }, { 0x85340853, 0x85340853 },
+  { 0x851169C7, 0x851169C7 }, { 0x84EEDD36, 0 },
+  { 0x84CC6290, 0 },          { 0x84A9F9C8, 0x84A9F9C8 },
+  { 0x8487A2D1, 0 },          { 0x84655D9C, 0 },
+  { 0x84432A1B, 0x84432A1B }, { 0x84210842, 0x84210842 },
+  { 0x83FEF802, 0x83FEF802 }, { 0x83DCF94E, 0 },
+  { 0x83BB0C18, 0 },          { 0x83993052, 0x83993052 },
+  { 0x837765F0, 0x837765F0 }, { 0x8355ACE4, 0 },
+  { 0x83340520, 0x83340520 }, { 0x83126E98, 0 },
+  { 0x82F0E93D, 0x82F0E93D }, { 0x82CF7504, 0 },
+  { 0x82AE11DE, 0 },          { 0x828CBFBF, 0 },
+  { 0x826B7E99, 0x826B7E99 }, { 0x824A4E61, 0 },
+  { 0x82292F08, 0 },          { 0x82082082, 0x82082082 },
+  { 0x81E722C2, 0x81E722C2 }, { 0x81C635BC, 0x81C635BC },
+  { 0x81A55963, 0 },          { 0x81848DA9, 0 },
+  { 0x8163D283, 0 },          { 0x814327E4, 0 },
+  { 0x81228DBF, 0 },          { 0x81020408, 0x81020408 },
+  { 0x80E18AB3, 0 },          { 0x80C121B3, 0 },
+  { 0x80A0C8FB, 0x80A0C8FB }, { 0x80808081, 0 },
+  { 0x80604836, 0x80604836 }, { 0x80402010, 0x80402010 },
+  { 0x80200802, 0x80200802 }, { 0xFFFFFFFF, 0xFFFFFFFF }
 };
index c96f8a7428083c2969bf1bd259c7234f9f4fd44b..b33be692cd1f6aee728c0bcccd897776fdb1b768 100644 (file)
@@ -7,41 +7,42 @@
 #include "vpx_ports/bitops.h"
 
 /*Smallest blocks are 4x4*/
-# define OD_LOG_BSIZE0 (2)
+#define OD_LOG_BSIZE0 (2)
 /*There are 5 block sizes total (4x4, 8x8, 16x16, 32x32 and 64x64).*/
-# define OD_NBSIZES    (5)
+#define OD_NBSIZES (5)
 /*The log of the maximum length of the side of a block.*/
-# define OD_LOG_BSIZE_MAX (OD_LOG_BSIZE0 + OD_NBSIZES - 1)
+#define OD_LOG_BSIZE_MAX (OD_LOG_BSIZE0 + OD_NBSIZES - 1)
 /*The maximum length of the side of a block.*/
-# define OD_BSIZE_MAX     (1 << OD_LOG_BSIZE_MAX)
+#define OD_BSIZE_MAX (1 << OD_LOG_BSIZE_MAX)
 
 typedef int od_coeff;
 
 typedef int16_t od_dering_in;
 
-# define OD_DIVU_DMAX (1024)
+#define OD_DIVU_DMAX (1024)
 
 extern uint32_t OD_DIVU_SMALL_CONSTS[OD_DIVU_DMAX][2];
 
 /*Translate unsigned division by small divisors into multiplications.*/
-# define OD_DIVU_SMALL(_x, _d) \
-  ((uint32_t)((OD_DIVU_SMALL_CONSTS[(_d)-1][0]* \
-  (uint64_t)(_x)+OD_DIVU_SMALL_CONSTS[(_d)-1][1])>>32)>> \
-  (OD_ILOG(_d)-1))
+#define OD_DIVU_SMALL(_x, _d)                                     \
+  ((uint32_t)((OD_DIVU_SMALL_CONSTS[(_d)-1][0] * (uint64_t)(_x) + \
+               OD_DIVU_SMALL_CONSTS[(_d)-1][1]) >>                \
+              32) >>                                              \
+   (OD_ILOG(_d) - 1))
 
-# define OD_DIVU(_x, _d) \
-  (((_d) < OD_DIVU_DMAX)?(OD_DIVU_SMALL((_x), (_d))):((_x)/(_d)))
+#define OD_DIVU(_x, _d) \
+  (((_d) < OD_DIVU_DMAX) ? (OD_DIVU_SMALL((_x), (_d))) : ((_x) / (_d)))
 
 #define OD_MINI VPXMIN
 #define OD_CLAMPI(min, val, max) clamp((val), (min), (max))
 
-# define OD_CLZ0 (1)
-# define OD_CLZ(x) (-get_msb(x))
-# define OD_ILOG_NZ(x) (OD_CLZ0 - OD_CLZ(x))
+#define OD_CLZ0 (1)
+#define OD_CLZ(x) (-get_msb(x))
+#define OD_ILOG_NZ(x) (OD_CLZ0 - OD_CLZ(x))
 /*Note that __builtin_clz is not defined when x == 0, according to the gcc
    documentation (and that of the x86 BSR instruction that implements it), so
    we have to special-case it.
   We define a special version of the macro to use when x can be zero.*/
-# define OD_ILOG(x) ((x) ? OD_ILOG_NZ(x) : 0)
+#define OD_ILOG(x) ((x) ? OD_ILOG_NZ(x) : 0)
 
 #endif
index 142b557d5bd4e77e48a84a97ac80127eb2493f76..fbeffc713bd21bd06d6dd310e4d646e3f736ecbf 100644 (file)
@@ -105,363 +105,297 @@ DECLARE_ALIGNED(16, static const int16_t, row_scan_8x8[64]) = {
 
 #if CONFIG_EXT_TX
 DECLARE_ALIGNED(16, static const int16_t, default_scan_8x16[128]) = {
-  0,  1,  8,  2,  9, 16,  3, 10, 17, 24,  4, 11,
-  18, 25, 32,  5, 12, 19, 26, 33, 40,  6, 13, 20,
-  27, 34, 41, 48,  7, 14, 21, 28, 35, 42, 49, 56,
-  15, 22, 29, 36, 43, 50, 57, 64, 23, 30, 37, 44,
-  51, 58, 65, 72, 31, 38, 45, 52, 59, 66, 73, 80,
-  39, 46, 53, 60, 67, 74, 81, 88, 47, 54, 61, 68,
-  75,  82,  89,  96,  55,  62,  69,  76,  83,  90,  97, 104,
-  63,  70,  77,  84,  91,  98, 105, 112,  71,  78,  85,  92,
-  99, 106, 113, 120,  79,  86,  93, 100, 107, 114, 121,  87,
-  94, 101, 108, 115, 122,  95, 102, 109, 116, 123, 103, 110,
+  0,   1,   8,   2,   9,   16,  3,   10,  17,  24,  4,   11,  18,  25,  32,
+  5,   12,  19,  26,  33,  40,  6,   13,  20,  27,  34,  41,  48,  7,   14,
+  21,  28,  35,  42,  49,  56,  15,  22,  29,  36,  43,  50,  57,  64,  23,
+  30,  37,  44,  51,  58,  65,  72,  31,  38,  45,  52,  59,  66,  73,  80,
+  39,  46,  53,  60,  67,  74,  81,  88,  47,  54,  61,  68,  75,  82,  89,
+  96,  55,  62,  69,  76,  83,  90,  97,  104, 63,  70,  77,  84,  91,  98,
+  105, 112, 71,  78,  85,  92,  99,  106, 113, 120, 79,  86,  93,  100, 107,
+  114, 121, 87,  94,  101, 108, 115, 122, 95,  102, 109, 116, 123, 103, 110,
   117, 124, 111, 118, 125, 119, 126, 127,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, default_scan_16x8[128]) = {
-  0,  1, 16,  2, 17, 32,  3, 18, 33, 48,  4, 19,
-  34, 49, 64,  5, 20, 35, 50, 65, 80,  6, 21, 36,
-  51,  66,  81,  96,   7,  22,  37,  52,  67,  82,  97, 112,
-  8,  23,  38,  53,  68,  83,  98, 113,   9,  24,  39,  54,
-  69,  84,  99, 114,  10,  25,  40,  55,  70,  85, 100, 115,
-  11,  26,  41,  56,  71,  86, 101, 116,  12,  27,  42,  57,
-  72,  87, 102, 117,  13,  28,  43,  58,  73,  88, 103, 118,
-  14,  29,  44,  59,  74,  89, 104, 119,  15,  30,  45,  60,
-  75,  90, 105, 120,  31,  46,  61,  76,  91, 106, 121,  47,
-  62,  77,  92, 107, 122,  63,  78,  93, 108, 123,  79,  94,
-  109, 124,  95, 110, 125, 111, 126, 127,
+  0,   1,  16,  2,   17,  32,  3,  18, 33,  48,  4,   19,  34,  49,  64,  5,
+  20,  35, 50,  65,  80,  6,   21, 36, 51,  66,  81,  96,  7,   22,  37,  52,
+  67,  82, 97,  112, 8,   23,  38, 53, 68,  83,  98,  113, 9,   24,  39,  54,
+  69,  84, 99,  114, 10,  25,  40, 55, 70,  85,  100, 115, 11,  26,  41,  56,
+  71,  86, 101, 116, 12,  27,  42, 57, 72,  87,  102, 117, 13,  28,  43,  58,
+  73,  88, 103, 118, 14,  29,  44, 59, 74,  89,  104, 119, 15,  30,  45,  60,
+  75,  90, 105, 120, 31,  46,  61, 76, 91,  106, 121, 47,  62,  77,  92,  107,
+  122, 63, 78,  93,  108, 123, 79, 94, 109, 124, 95,  110, 125, 111, 126, 127,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_8x16[128]) = {
-  0,  8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88,
-  96, 104, 112, 120,   1,   9,  17,  25,  33,  41,  49,  57,
-  65,  73,  81,  89,  97, 105, 113, 121,   2,  10,  18,  26,
-  34,  42,  50,  58,  66,  74,  82,  90,  98, 106, 114, 122,
-  3, 11, 19, 27, 35, 43, 51, 59, 67, 75, 83, 91,
-  99, 107, 115, 123,   4,  12,  20,  28,  36,  44,  52,  60,
-  68,  76,  84,  92, 100, 108, 116, 124,   5,  13,  21,  29,
-  37,  45,  53,  61,  69,  77,  85,  93, 101, 109, 117, 125,
-  6, 14, 22, 30, 38, 46, 54, 62, 70, 78, 86, 94,
-  102, 110, 118, 126,   7,  15,  23,  31,  39,  47,  55,  63,
-  71,  79,  87,  95, 103, 111, 119, 127,
+  0, 8,  16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96,  104, 112, 120,
+  1, 9,  17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97,  105, 113, 121,
+  2, 10, 18, 26, 34, 42, 50, 58, 66, 74, 82, 90, 98,  106, 114, 122,
+  3, 11, 19, 27, 35, 43, 51, 59, 67, 75, 83, 91, 99,  107, 115, 123,
+  4, 12, 20, 28, 36, 44, 52, 60, 68, 76, 84, 92, 100, 108, 116, 124,
+  5, 13, 21, 29, 37, 45, 53, 61, 69, 77, 85, 93, 101, 109, 117, 125,
+  6, 14, 22, 30, 38, 46, 54, 62, 70, 78, 86, 94, 102, 110, 118, 126,
+  7, 15, 23, 31, 39, 47, 55, 63, 71, 79, 87, 95, 103, 111, 119, 127,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_16x8[128]) = {
-  0,  16,  32,  48,  64,  80,  96, 112,   1,  17,  33,  49,
-  65,  81,  97, 113,   2,  18,  34,  50,  66,  82,  98, 114,
-  3,  19,  35,  51,  67,  83,  99, 115,   4,  20,  36,  52,
-  68,  84, 100, 116,   5,  21,  37,  53,  69,  85, 101, 117,
-  6,  22,  38,  54,  70,  86, 102, 118,   7,  23,  39,  55,
-  71,  87, 103, 119,   8,  24,  40,  56,  72,  88, 104, 120,
-  9,  25,  41,  57,  73,  89, 105, 121,  10,  26,  42,  58,
-  74,  90, 106, 122,  11,  27,  43,  59,  75,  91, 107, 123,
-  12,  28,  44,  60,  76,  92, 108, 124,  13,  29,  45,  61,
-  77,  93, 109, 125,  14,  30,  46,  62,  78,  94, 110, 126,
-  15,  31,  47,  63,  79,  95, 111, 127,
+  0,  16, 32, 48, 64, 80, 96,  112, 1,  17, 33, 49, 65, 81, 97,  113,
+  2,  18, 34, 50, 66, 82, 98,  114, 3,  19, 35, 51, 67, 83, 99,  115,
+  4,  20, 36, 52, 68, 84, 100, 116, 5,  21, 37, 53, 69, 85, 101, 117,
+  6,  22, 38, 54, 70, 86, 102, 118, 7,  23, 39, 55, 71, 87, 103, 119,
+  8,  24, 40, 56, 72, 88, 104, 120, 9,  25, 41, 57, 73, 89, 105, 121,
+  10, 26, 42, 58, 74, 90, 106, 122, 11, 27, 43, 59, 75, 91, 107, 123,
+  12, 28, 44, 60, 76, 92, 108, 124, 13, 29, 45, 61, 77, 93, 109, 125,
+  14, 30, 46, 62, 78, 94, 110, 126, 15, 31, 47, 63, 79, 95, 111, 127,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_8x16[128]) = {
-  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
-  12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
-  24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
-  36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
-  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
-  60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
-  72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
-  84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
-  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107,
-  108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+  0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
+  15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
+  30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
+  45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
+  60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
+  75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
+  90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
+  105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
   120, 121, 122, 123, 124, 125, 126, 127,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_16x8[128]) = {
-  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
-  12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
-  24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
-  36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
-  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
-  60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
-  72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
-  84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
-  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107,
-  108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+  0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
+  15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
+  30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
+  45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
+  60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
+  75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
+  90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
+  105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
   120, 121, 122, 123, 124, 125, 126, 127,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, default_scan_16x32[512]) = {
-  0,  1, 16,  2, 17, 32,  3, 18, 33, 48,  4, 19,
-  34, 49, 64,  5, 20, 35, 50, 65, 80,  6, 21, 36,
-  51,  66,  81,  96,   7,  22,  37,  52,  67,  82,  97, 112,
-  8,  23,  38,  53,  68,  83,  98, 113, 128,   9,  24,  39,
-  54,  69,  84,  99, 114, 129, 144,  10,  25,  40,  55,  70,
-  85, 100, 115, 130, 145, 160,  11,  26,  41,  56,  71,  86,
-  101, 116, 131, 146, 161, 176,  12,  27,  42,  57,  72,  87,
-  102, 117, 132, 147, 162, 177, 192,  13,  28,  43,  58,  73,
-  88, 103, 118, 133, 148, 163, 178, 193, 208,  14,  29,  44,
-  59,  74,  89, 104, 119, 134, 149, 164, 179, 194, 209, 224,
-  15,  30,  45,  60,  75,  90, 105, 120, 135, 150, 165, 180,
-  195, 210, 225, 240,  31,  46,  61,  76,  91, 106, 121, 136,
-  151, 166, 181, 196, 211, 226, 241, 256,  47,  62,  77,  92,
-  107, 122, 137, 152, 167, 182, 197, 212, 227, 242, 257, 272,
-  63,  78,  93, 108, 123, 138, 153, 168, 183, 198, 213, 228,
-  243, 258, 273, 288,  79,  94, 109, 124, 139, 154, 169, 184,
-  199, 214, 229, 244, 259, 274, 289, 304,  95, 110, 125, 140,
-  155, 170, 185, 200, 215, 230, 245, 260, 275, 290, 305, 320,
-  111, 126, 141, 156, 171, 186, 201, 216, 231, 246, 261, 276,
-  291, 306, 321, 336, 127, 142, 157, 172, 187, 202, 217, 232,
-  247, 262, 277, 292, 307, 322, 337, 352, 143, 158, 173, 188,
-  203, 218, 233, 248, 263, 278, 293, 308, 323, 338, 353, 368,
-  159, 174, 189, 204, 219, 234, 249, 264, 279, 294, 309, 324,
-  339, 354, 369, 384, 175, 190, 205, 220, 235, 250, 265, 280,
-  295, 310, 325, 340, 355, 370, 385, 400, 191, 206, 221, 236,
-  251, 266, 281, 296, 311, 326, 341, 356, 371, 386, 401, 416,
-  207, 222, 237, 252, 267, 282, 297, 312, 327, 342, 357, 372,
-  387, 402, 417, 432, 223, 238, 253, 268, 283, 298, 313, 328,
-  343, 358, 373, 388, 403, 418, 433, 448, 239, 254, 269, 284,
-  299, 314, 329, 344, 359, 374, 389, 404, 419, 434, 449, 464,
-  255, 270, 285, 300, 315, 330, 345, 360, 375, 390, 405, 420,
-  435, 450, 465, 480, 271, 286, 301, 316, 331, 346, 361, 376,
-  391, 406, 421, 436, 451, 466, 481, 496, 287, 302, 317, 332,
-  347, 362, 377, 392, 407, 422, 437, 452, 467, 482, 497, 303,
-  318, 333, 348, 363, 378, 393, 408, 423, 438, 453, 468, 483,
-  498, 319, 334, 349, 364, 379, 394, 409, 424, 439, 454, 469,
-  484, 499, 335, 350, 365, 380, 395, 410, 425, 440, 455, 470,
-  485, 500, 351, 366, 381, 396, 411, 426, 441, 456, 471, 486,
-  501, 367, 382, 397, 412, 427, 442, 457, 472, 487, 502, 383,
-  398, 413, 428, 443, 458, 473, 488, 503, 399, 414, 429, 444,
-  459, 474, 489, 504, 415, 430, 445, 460, 475, 490, 505, 431,
-  446, 461, 476, 491, 506, 447, 462, 477, 492, 507, 463, 478,
-  493, 508, 479, 494, 509, 495, 510, 511,
+  0,   1,   16,  2,   17,  32,  3,   18,  33,  48,  4,   19,  34,  49,  64,
+  5,   20,  35,  50,  65,  80,  6,   21,  36,  51,  66,  81,  96,  7,   22,
+  37,  52,  67,  82,  97,  112, 8,   23,  38,  53,  68,  83,  98,  113, 128,
+  9,   24,  39,  54,  69,  84,  99,  114, 129, 144, 10,  25,  40,  55,  70,
+  85,  100, 115, 130, 145, 160, 11,  26,  41,  56,  71,  86,  101, 116, 131,
+  146, 161, 176, 12,  27,  42,  57,  72,  87,  102, 117, 132, 147, 162, 177,
+  192, 13,  28,  43,  58,  73,  88,  103, 118, 133, 148, 163, 178, 193, 208,
+  14,  29,  44,  59,  74,  89,  104, 119, 134, 149, 164, 179, 194, 209, 224,
+  15,  30,  45,  60,  75,  90,  105, 120, 135, 150, 165, 180, 195, 210, 225,
+  240, 31,  46,  61,  76,  91,  106, 121, 136, 151, 166, 181, 196, 211, 226,
+  241, 256, 47,  62,  77,  92,  107, 122, 137, 152, 167, 182, 197, 212, 227,
+  242, 257, 272, 63,  78,  93,  108, 123, 138, 153, 168, 183, 198, 213, 228,
+  243, 258, 273, 288, 79,  94,  109, 124, 139, 154, 169, 184, 199, 214, 229,
+  244, 259, 274, 289, 304, 95,  110, 125, 140, 155, 170, 185, 200, 215, 230,
+  245, 260, 275, 290, 305, 320, 111, 126, 141, 156, 171, 186, 201, 216, 231,
+  246, 261, 276, 291, 306, 321, 336, 127, 142, 157, 172, 187, 202, 217, 232,
+  247, 262, 277, 292, 307, 322, 337, 352, 143, 158, 173, 188, 203, 218, 233,
+  248, 263, 278, 293, 308, 323, 338, 353, 368, 159, 174, 189, 204, 219, 234,
+  249, 264, 279, 294, 309, 324, 339, 354, 369, 384, 175, 190, 205, 220, 235,
+  250, 265, 280, 295, 310, 325, 340, 355, 370, 385, 400, 191, 206, 221, 236,
+  251, 266, 281, 296, 311, 326, 341, 356, 371, 386, 401, 416, 207, 222, 237,
+  252, 267, 282, 297, 312, 327, 342, 357, 372, 387, 402, 417, 432, 223, 238,
+  253, 268, 283, 298, 313, 328, 343, 358, 373, 388, 403, 418, 433, 448, 239,
+  254, 269, 284, 299, 314, 329, 344, 359, 374, 389, 404, 419, 434, 449, 464,
+  255, 270, 285, 300, 315, 330, 345, 360, 375, 390, 405, 420, 435, 450, 465,
+  480, 271, 286, 301, 316, 331, 346, 361, 376, 391, 406, 421, 436, 451, 466,
+  481, 496, 287, 302, 317, 332, 347, 362, 377, 392, 407, 422, 437, 452, 467,
+  482, 497, 303, 318, 333, 348, 363, 378, 393, 408, 423, 438, 453, 468, 483,
+  498, 319, 334, 349, 364, 379, 394, 409, 424, 439, 454, 469, 484, 499, 335,
+  350, 365, 380, 395, 410, 425, 440, 455, 470, 485, 500, 351, 366, 381, 396,
+  411, 426, 441, 456, 471, 486, 501, 367, 382, 397, 412, 427, 442, 457, 472,
+  487, 502, 383, 398, 413, 428, 443, 458, 473, 488, 503, 399, 414, 429, 444,
+  459, 474, 489, 504, 415, 430, 445, 460, 475, 490, 505, 431, 446, 461, 476,
+  491, 506, 447, 462, 477, 492, 507, 463, 478, 493, 508, 479, 494, 509, 495,
+  510, 511,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, default_scan_32x16[512]) = {
-  0,  1, 32,  2, 33, 64,  3, 34, 65, 96,  4, 35,
-  66,  97, 128,   5,  36,  67,  98, 129, 160,   6,  37,  68,
-  99, 130, 161, 192,   7,  38,  69, 100, 131, 162, 193, 224,
-  8,  39,  70, 101, 132, 163, 194, 225, 256,   9,  40,  71,
-  102, 133, 164, 195, 226, 257, 288,  10,  41,  72, 103, 134,
-  165, 196, 227, 258, 289, 320,  11,  42,  73, 104, 135, 166,
-  197, 228, 259, 290, 321, 352,  12,  43,  74, 105, 136, 167,
-  198, 229, 260, 291, 322, 353, 384,  13,  44,  75, 106, 137,
-  168, 199, 230, 261, 292, 323, 354, 385, 416,  14,  45,  76,
-  107, 138, 169, 200, 231, 262, 293, 324, 355, 386, 417, 448,
-  15,  46,  77, 108, 139, 170, 201, 232, 263, 294, 325, 356,
-  387, 418, 449, 480,  16,  47,  78, 109, 140, 171, 202, 233,
-  264, 295, 326, 357, 388, 419, 450, 481,  17,  48,  79, 110,
-  141, 172, 203, 234, 265, 296, 327, 358, 389, 420, 451, 482,
-  18,  49,  80, 111, 142, 173, 204, 235, 266, 297, 328, 359,
-  390, 421, 452, 483,  19,  50,  81, 112, 143, 174, 205, 236,
-  267, 298, 329, 360, 391, 422, 453, 484,  20,  51,  82, 113,
-  144, 175, 206, 237, 268, 299, 330, 361, 392, 423, 454, 485,
-  21,  52,  83, 114, 145, 176, 207, 238, 269, 300, 331, 362,
-  393, 424, 455, 486,  22,  53,  84, 115, 146, 177, 208, 239,
-  270, 301, 332, 363, 394, 425, 456, 487,  23,  54,  85, 116,
-  147, 178, 209, 240, 271, 302, 333, 364, 395, 426, 457, 488,
-  24,  55,  86, 117, 148, 179, 210, 241, 272, 303, 334, 365,
-  396, 427, 458, 489,  25,  56,  87, 118, 149, 180, 211, 242,
-  273, 304, 335, 366, 397, 428, 459, 490,  26,  57,  88, 119,
-  150, 181, 212, 243, 274, 305, 336, 367, 398, 429, 460, 491,
-  27,  58,  89, 120, 151, 182, 213, 244, 275, 306, 337, 368,
-  399, 430, 461, 492,  28,  59,  90, 121, 152, 183, 214, 245,
-  276, 307, 338, 369, 400, 431, 462, 493,  29,  60,  91, 122,
-  153, 184, 215, 246, 277, 308, 339, 370, 401, 432, 463, 494,
-  30,  61,  92, 123, 154, 185, 216, 247, 278, 309, 340, 371,
-  402, 433, 464, 495,  31,  62,  93, 124, 155, 186, 217, 248,
-  279, 310, 341, 372, 403, 434, 465, 496,  63,  94, 125, 156,
-  187, 218, 249, 280, 311, 342, 373, 404, 435, 466, 497,  95,
-  126, 157, 188, 219, 250, 281, 312, 343, 374, 405, 436, 467,
-  498, 127, 158, 189, 220, 251, 282, 313, 344, 375, 406, 437,
-  468, 499, 159, 190, 221, 252, 283, 314, 345, 376, 407, 438,
-  469, 500, 191, 222, 253, 284, 315, 346, 377, 408, 439, 470,
-  501, 223, 254, 285, 316, 347, 378, 409, 440, 471, 502, 255,
-  286, 317, 348, 379, 410, 441, 472, 503, 287, 318, 349, 380,
-  411, 442, 473, 504, 319, 350, 381, 412, 443, 474, 505, 351,
-  382, 413, 444, 475, 506, 383, 414, 445, 476, 507, 415, 446,
-  477, 508, 447, 478, 509, 479, 510, 511,
+  0,   1,   32,  2,   33,  64,  3,   34,  65,  96,  4,   35,  66,  97,  128,
+  5,   36,  67,  98,  129, 160, 6,   37,  68,  99,  130, 161, 192, 7,   38,
+  69,  100, 131, 162, 193, 224, 8,   39,  70,  101, 132, 163, 194, 225, 256,
+  9,   40,  71,  102, 133, 164, 195, 226, 257, 288, 10,  41,  72,  103, 134,
+  165, 196, 227, 258, 289, 320, 11,  42,  73,  104, 135, 166, 197, 228, 259,
+  290, 321, 352, 12,  43,  74,  105, 136, 167, 198, 229, 260, 291, 322, 353,
+  384, 13,  44,  75,  106, 137, 168, 199, 230, 261, 292, 323, 354, 385, 416,
+  14,  45,  76,  107, 138, 169, 200, 231, 262, 293, 324, 355, 386, 417, 448,
+  15,  46,  77,  108, 139, 170, 201, 232, 263, 294, 325, 356, 387, 418, 449,
+  480, 16,  47,  78,  109, 140, 171, 202, 233, 264, 295, 326, 357, 388, 419,
+  450, 481, 17,  48,  79,  110, 141, 172, 203, 234, 265, 296, 327, 358, 389,
+  420, 451, 482, 18,  49,  80,  111, 142, 173, 204, 235, 266, 297, 328, 359,
+  390, 421, 452, 483, 19,  50,  81,  112, 143, 174, 205, 236, 267, 298, 329,
+  360, 391, 422, 453, 484, 20,  51,  82,  113, 144, 175, 206, 237, 268, 299,
+  330, 361, 392, 423, 454, 485, 21,  52,  83,  114, 145, 176, 207, 238, 269,
+  300, 331, 362, 393, 424, 455, 486, 22,  53,  84,  115, 146, 177, 208, 239,
+  270, 301, 332, 363, 394, 425, 456, 487, 23,  54,  85,  116, 147, 178, 209,
+  240, 271, 302, 333, 364, 395, 426, 457, 488, 24,  55,  86,  117, 148, 179,
+  210, 241, 272, 303, 334, 365, 396, 427, 458, 489, 25,  56,  87,  118, 149,
+  180, 211, 242, 273, 304, 335, 366, 397, 428, 459, 490, 26,  57,  88,  119,
+  150, 181, 212, 243, 274, 305, 336, 367, 398, 429, 460, 491, 27,  58,  89,
+  120, 151, 182, 213, 244, 275, 306, 337, 368, 399, 430, 461, 492, 28,  59,
+  90,  121, 152, 183, 214, 245, 276, 307, 338, 369, 400, 431, 462, 493, 29,
+  60,  91,  122, 153, 184, 215, 246, 277, 308, 339, 370, 401, 432, 463, 494,
+  30,  61,  92,  123, 154, 185, 216, 247, 278, 309, 340, 371, 402, 433, 464,
+  495, 31,  62,  93,  124, 155, 186, 217, 248, 279, 310, 341, 372, 403, 434,
+  465, 496, 63,  94,  125, 156, 187, 218, 249, 280, 311, 342, 373, 404, 435,
+  466, 497, 95,  126, 157, 188, 219, 250, 281, 312, 343, 374, 405, 436, 467,
+  498, 127, 158, 189, 220, 251, 282, 313, 344, 375, 406, 437, 468, 499, 159,
+  190, 221, 252, 283, 314, 345, 376, 407, 438, 469, 500, 191, 222, 253, 284,
+  315, 346, 377, 408, 439, 470, 501, 223, 254, 285, 316, 347, 378, 409, 440,
+  471, 502, 255, 286, 317, 348, 379, 410, 441, 472, 503, 287, 318, 349, 380,
+  411, 442, 473, 504, 319, 350, 381, 412, 443, 474, 505, 351, 382, 413, 444,
+  475, 506, 383, 414, 445, 476, 507, 415, 446, 477, 508, 447, 478, 509, 479,
+  510, 511,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_16x32[512]) = {
-  0,  16,  32,  48,  64,  80,  96, 112, 128, 144, 160, 176,
-  192, 208, 224, 240, 256, 272, 288, 304, 320, 336, 352, 368,
-  384, 400, 416, 432, 448, 464, 480, 496,   1,  17,  33,  49,
-  65,  81,  97, 113, 129, 145, 161, 177, 193, 209, 225, 241,
-  257, 273, 289, 305, 321, 337, 353, 369, 385, 401, 417, 433,
-  449, 465, 481, 497,   2,  18,  34,  50,  66,  82,  98, 114,
-  130, 146, 162, 178, 194, 210, 226, 242, 258, 274, 290, 306,
-  322, 338, 354, 370, 386, 402, 418, 434, 450, 466, 482, 498,
-  3,  19,  35,  51,  67,  83,  99, 115, 131, 147, 163, 179,
-  195, 211, 227, 243, 259, 275, 291, 307, 323, 339, 355, 371,
-  387, 403, 419, 435, 451, 467, 483, 499,   4,  20,  36,  52,
-  68,  84, 100, 116, 132, 148, 164, 180, 196, 212, 228, 244,
-  260, 276, 292, 308, 324, 340, 356, 372, 388, 404, 420, 436,
-  452, 468, 484, 500,   5,  21,  37,  53,  69,  85, 101, 117,
-  133, 149, 165, 181, 197, 213, 229, 245, 261, 277, 293, 309,
-  325, 341, 357, 373, 389, 405, 421, 437, 453, 469, 485, 501,
-  6,  22,  38,  54,  70,  86, 102, 118, 134, 150, 166, 182,
-  198, 214, 230, 246, 262, 278, 294, 310, 326, 342, 358, 374,
-  390, 406, 422, 438, 454, 470, 486, 502,   7,  23,  39,  55,
-  71,  87, 103, 119, 135, 151, 167, 183, 199, 215, 231, 247,
-  263, 279, 295, 311, 327, 343, 359, 375, 391, 407, 423, 439,
-  455, 471, 487, 503,   8,  24,  40,  56,  72,  88, 104, 120,
-  136, 152, 168, 184, 200, 216, 232, 248, 264, 280, 296, 312,
-  328, 344, 360, 376, 392, 408, 424, 440, 456, 472, 488, 504,
-  9,  25,  41,  57,  73,  89, 105, 121, 137, 153, 169, 185,
-  201, 217, 233, 249, 265, 281, 297, 313, 329, 345, 361, 377,
-  393, 409, 425, 441, 457, 473, 489, 505,  10,  26,  42,  58,
-  74,  90, 106, 122, 138, 154, 170, 186, 202, 218, 234, 250,
-  266, 282, 298, 314, 330, 346, 362, 378, 394, 410, 426, 442,
-  458, 474, 490, 506,  11,  27,  43,  59,  75,  91, 107, 123,
-  139, 155, 171, 187, 203, 219, 235, 251, 267, 283, 299, 315,
-  331, 347, 363, 379, 395, 411, 427, 443, 459, 475, 491, 507,
-  12,  28,  44,  60,  76,  92, 108, 124, 140, 156, 172, 188,
-  204, 220, 236, 252, 268, 284, 300, 316, 332, 348, 364, 380,
-  396, 412, 428, 444, 460, 476, 492, 508,  13,  29,  45,  61,
-  77,  93, 109, 125, 141, 157, 173, 189, 205, 221, 237, 253,
-  269, 285, 301, 317, 333, 349, 365, 381, 397, 413, 429, 445,
-  461, 477, 493, 509,  14,  30,  46,  62,  78,  94, 110, 126,
-  142, 158, 174, 190, 206, 222, 238, 254, 270, 286, 302, 318,
-  334, 350, 366, 382, 398, 414, 430, 446, 462, 478, 494, 510,
-  15,  31,  47,  63,  79,  95, 111, 127, 143, 159, 175, 191,
-  207, 223, 239, 255, 271, 287, 303, 319, 335, 351, 367, 383,
-  399, 415, 431, 447, 463, 479, 495, 511,
+  0,   16,  32,  48,  64,  80,  96,  112, 128, 144, 160, 176, 192, 208, 224,
+  240, 256, 272, 288, 304, 320, 336, 352, 368, 384, 400, 416, 432, 448, 464,
+  480, 496, 1,   17,  33,  49,  65,  81,  97,  113, 129, 145, 161, 177, 193,
+  209, 225, 241, 257, 273, 289, 305, 321, 337, 353, 369, 385, 401, 417, 433,
+  449, 465, 481, 497, 2,   18,  34,  50,  66,  82,  98,  114, 130, 146, 162,
+  178, 194, 210, 226, 242, 258, 274, 290, 306, 322, 338, 354, 370, 386, 402,
+  418, 434, 450, 466, 482, 498, 3,   19,  35,  51,  67,  83,  99,  115, 131,
+  147, 163, 179, 195, 211, 227, 243, 259, 275, 291, 307, 323, 339, 355, 371,
+  387, 403, 419, 435, 451, 467, 483, 499, 4,   20,  36,  52,  68,  84,  100,
+  116, 132, 148, 164, 180, 196, 212, 228, 244, 260, 276, 292, 308, 324, 340,
+  356, 372, 388, 404, 420, 436, 452, 468, 484, 500, 5,   21,  37,  53,  69,
+  85,  101, 117, 133, 149, 165, 181, 197, 213, 229, 245, 261, 277, 293, 309,
+  325, 341, 357, 373, 389, 405, 421, 437, 453, 469, 485, 501, 6,   22,  38,
+  54,  70,  86,  102, 118, 134, 150, 166, 182, 198, 214, 230, 246, 262, 278,
+  294, 310, 326, 342, 358, 374, 390, 406, 422, 438, 454, 470, 486, 502, 7,
+  23,  39,  55,  71,  87,  103, 119, 135, 151, 167, 183, 199, 215, 231, 247,
+  263, 279, 295, 311, 327, 343, 359, 375, 391, 407, 423, 439, 455, 471, 487,
+  503, 8,   24,  40,  56,  72,  88,  104, 120, 136, 152, 168, 184, 200, 216,
+  232, 248, 264, 280, 296, 312, 328, 344, 360, 376, 392, 408, 424, 440, 456,
+  472, 488, 504, 9,   25,  41,  57,  73,  89,  105, 121, 137, 153, 169, 185,
+  201, 217, 233, 249, 265, 281, 297, 313, 329, 345, 361, 377, 393, 409, 425,
+  441, 457, 473, 489, 505, 10,  26,  42,  58,  74,  90,  106, 122, 138, 154,
+  170, 186, 202, 218, 234, 250, 266, 282, 298, 314, 330, 346, 362, 378, 394,
+  410, 426, 442, 458, 474, 490, 506, 11,  27,  43,  59,  75,  91,  107, 123,
+  139, 155, 171, 187, 203, 219, 235, 251, 267, 283, 299, 315, 331, 347, 363,
+  379, 395, 411, 427, 443, 459, 475, 491, 507, 12,  28,  44,  60,  76,  92,
+  108, 124, 140, 156, 172, 188, 204, 220, 236, 252, 268, 284, 300, 316, 332,
+  348, 364, 380, 396, 412, 428, 444, 460, 476, 492, 508, 13,  29,  45,  61,
+  77,  93,  109, 125, 141, 157, 173, 189, 205, 221, 237, 253, 269, 285, 301,
+  317, 333, 349, 365, 381, 397, 413, 429, 445, 461, 477, 493, 509, 14,  30,
+  46,  62,  78,  94,  110, 126, 142, 158, 174, 190, 206, 222, 238, 254, 270,
+  286, 302, 318, 334, 350, 366, 382, 398, 414, 430, 446, 462, 478, 494, 510,
+  15,  31,  47,  63,  79,  95,  111, 127, 143, 159, 175, 191, 207, 223, 239,
+  255, 271, 287, 303, 319, 335, 351, 367, 383, 399, 415, 431, 447, 463, 479,
+  495, 511,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_32x16[512]) = {
-  0,  32,  64,  96, 128, 160, 192, 224, 256, 288, 320, 352,
-  384, 416, 448, 480,   1,  33,  65,  97, 129, 161, 193, 225,
-  257, 289, 321, 353, 385, 417, 449, 481,   2,  34,  66,  98,
-  130, 162, 194, 226, 258, 290, 322, 354, 386, 418, 450, 482,
-  3,  35,  67,  99, 131, 163, 195, 227, 259, 291, 323, 355,
-  387, 419, 451, 483,   4,  36,  68, 100, 132, 164, 196, 228,
-  260, 292, 324, 356, 388, 420, 452, 484,   5,  37,  69, 101,
-  133, 165, 197, 229, 261, 293, 325, 357, 389, 421, 453, 485,
-  6,  38,  70, 102, 134, 166, 198, 230, 262, 294, 326, 358,
-  390, 422, 454, 486,   7,  39,  71, 103, 135, 167, 199, 231,
-  263, 295, 327, 359, 391, 423, 455, 487,   8,  40,  72, 104,
-  136, 168, 200, 232, 264, 296, 328, 360, 392, 424, 456, 488,
-  9,  41,  73, 105, 137, 169, 201, 233, 265, 297, 329, 361,
-  393, 425, 457, 489,  10,  42,  74, 106, 138, 170, 202, 234,
-  266, 298, 330, 362, 394, 426, 458, 490,  11,  43,  75, 107,
-  139, 171, 203, 235, 267, 299, 331, 363, 395, 427, 459, 491,
-  12,  44,  76, 108, 140, 172, 204, 236, 268, 300, 332, 364,
-  396, 428, 460, 492,  13,  45,  77, 109, 141, 173, 205, 237,
-  269, 301, 333, 365, 397, 429, 461, 493,  14,  46,  78, 110,
-  142, 174, 206, 238, 270, 302, 334, 366, 398, 430, 462, 494,
-  15,  47,  79, 111, 143, 175, 207, 239, 271, 303, 335, 367,
-  399, 431, 463, 495,  16,  48,  80, 112, 144, 176, 208, 240,
-  272, 304, 336, 368, 400, 432, 464, 496,  17,  49,  81, 113,
-  145, 177, 209, 241, 273, 305, 337, 369, 401, 433, 465, 497,
-  18,  50,  82, 114, 146, 178, 210, 242, 274, 306, 338, 370,
-  402, 434, 466, 498,  19,  51,  83, 115, 147, 179, 211, 243,
-  275, 307, 339, 371, 403, 435, 467, 499,  20,  52,  84, 116,
-  148, 180, 212, 244, 276, 308, 340, 372, 404, 436, 468, 500,
-  21,  53,  85, 117, 149, 181, 213, 245, 277, 309, 341, 373,
-  405, 437, 469, 501,  22,  54,  86, 118, 150, 182, 214, 246,
-  278, 310, 342, 374, 406, 438, 470, 502,  23,  55,  87, 119,
-  151, 183, 215, 247, 279, 311, 343, 375, 407, 439, 471, 503,
-  24,  56,  88, 120, 152, 184, 216, 248, 280, 312, 344, 376,
-  408, 440, 472, 504,  25,  57,  89, 121, 153, 185, 217, 249,
-  281, 313, 345, 377, 409, 441, 473, 505,  26,  58,  90, 122,
-  154, 186, 218, 250, 282, 314, 346, 378, 410, 442, 474, 506,
-  27,  59,  91, 123, 155, 187, 219, 251, 283, 315, 347, 379,
-  411, 443, 475, 507,  28,  60,  92, 124, 156, 188, 220, 252,
-  284, 316, 348, 380, 412, 444, 476, 508,  29,  61,  93, 125,
-  157, 189, 221, 253, 285, 317, 349, 381, 413, 445, 477, 509,
-  30,  62,  94, 126, 158, 190, 222, 254, 286, 318, 350, 382,
-  414, 446, 478, 510,  31,  63,  95, 127, 159, 191, 223, 255,
-  287, 319, 351, 383, 415, 447, 479, 511,
+  0,  32, 64, 96,  128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480,
+  1,  33, 65, 97,  129, 161, 193, 225, 257, 289, 321, 353, 385, 417, 449, 481,
+  2,  34, 66, 98,  130, 162, 194, 226, 258, 290, 322, 354, 386, 418, 450, 482,
+  3,  35, 67, 99,  131, 163, 195, 227, 259, 291, 323, 355, 387, 419, 451, 483,
+  4,  36, 68, 100, 132, 164, 196, 228, 260, 292, 324, 356, 388, 420, 452, 484,
+  5,  37, 69, 101, 133, 165, 197, 229, 261, 293, 325, 357, 389, 421, 453, 485,
+  6,  38, 70, 102, 134, 166, 198, 230, 262, 294, 326, 358, 390, 422, 454, 486,
+  7,  39, 71, 103, 135, 167, 199, 231, 263, 295, 327, 359, 391, 423, 455, 487,
+  8,  40, 72, 104, 136, 168, 200, 232, 264, 296, 328, 360, 392, 424, 456, 488,
+  9,  41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 361, 393, 425, 457, 489,
+  10, 42, 74, 106, 138, 170, 202, 234, 266, 298, 330, 362, 394, 426, 458, 490,
+  11, 43, 75, 107, 139, 171, 203, 235, 267, 299, 331, 363, 395, 427, 459, 491,
+  12, 44, 76, 108, 140, 172, 204, 236, 268, 300, 332, 364, 396, 428, 460, 492,
+  13, 45, 77, 109, 141, 173, 205, 237, 269, 301, 333, 365, 397, 429, 461, 493,
+  14, 46, 78, 110, 142, 174, 206, 238, 270, 302, 334, 366, 398, 430, 462, 494,
+  15, 47, 79, 111, 143, 175, 207, 239, 271, 303, 335, 367, 399, 431, 463, 495,
+  16, 48, 80, 112, 144, 176, 208, 240, 272, 304, 336, 368, 400, 432, 464, 496,
+  17, 49, 81, 113, 145, 177, 209, 241, 273, 305, 337, 369, 401, 433, 465, 497,
+  18, 50, 82, 114, 146, 178, 210, 242, 274, 306, 338, 370, 402, 434, 466, 498,
+  19, 51, 83, 115, 147, 179, 211, 243, 275, 307, 339, 371, 403, 435, 467, 499,
+  20, 52, 84, 116, 148, 180, 212, 244, 276, 308, 340, 372, 404, 436, 468, 500,
+  21, 53, 85, 117, 149, 181, 213, 245, 277, 309, 341, 373, 405, 437, 469, 501,
+  22, 54, 86, 118, 150, 182, 214, 246, 278, 310, 342, 374, 406, 438, 470, 502,
+  23, 55, 87, 119, 151, 183, 215, 247, 279, 311, 343, 375, 407, 439, 471, 503,
+  24, 56, 88, 120, 152, 184, 216, 248, 280, 312, 344, 376, 408, 440, 472, 504,
+  25, 57, 89, 121, 153, 185, 217, 249, 281, 313, 345, 377, 409, 441, 473, 505,
+  26, 58, 90, 122, 154, 186, 218, 250, 282, 314, 346, 378, 410, 442, 474, 506,
+  27, 59, 91, 123, 155, 187, 219, 251, 283, 315, 347, 379, 411, 443, 475, 507,
+  28, 60, 92, 124, 156, 188, 220, 252, 284, 316, 348, 380, 412, 444, 476, 508,
+  29, 61, 93, 125, 157, 189, 221, 253, 285, 317, 349, 381, 413, 445, 477, 509,
+  30, 62, 94, 126, 158, 190, 222, 254, 286, 318, 350, 382, 414, 446, 478, 510,
+  31, 63, 95, 127, 159, 191, 223, 255, 287, 319, 351, 383, 415, 447, 479, 511,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_16x32[512]) = {
-  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
-  12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
-  24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
-  36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
-  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
-  60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
-  72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
-  84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
-  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107,
-  108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
-  120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
-  132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
-  144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
-  156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
-  168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
-  180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
-  192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
-  204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
-  216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
-  228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
-  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
-  252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
-  264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
-  276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
-  288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
-  300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
-  312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
-  324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
-  336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
-  348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
-  360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
-  372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
-  384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
-  396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
-  408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
-  420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
-  432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
-  444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
-  456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
-  468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
-  480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
-  492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
-  504, 505, 506, 507, 508, 509, 510, 511,
+  0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
+  15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
+  30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
+  45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
+  60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
+  75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
+  90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
+  105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+  120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+  135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+  150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+  165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+  180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+  195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+  210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+  225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+  255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+  270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+  285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+  300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+  315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+  330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+  345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
+  360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+  375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
+  390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+  405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+  420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+  435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
+  450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
+  465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
+  480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+  495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+  510, 511,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_32x16[512]) = {
-  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
-  12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
-  24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
-  36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
-  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
-  60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
-  72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
-  84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
-  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107,
-  108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
-  120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
-  132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
-  144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
-  156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
-  168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
-  180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
-  192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
-  204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
-  216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
-  228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
-  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
-  252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
-  264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
-  276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
-  288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
-  300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
-  312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
-  324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
-  336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
-  348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
-  360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
-  372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
-  384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
-  396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
-  408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
-  420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
-  432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
-  444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
-  456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
-  468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
-  480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
-  492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
-  504, 505, 506, 507, 508, 509, 510, 511,
+  0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
+  15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
+  30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
+  45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
+  60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
+  75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
+  90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
+  105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+  120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+  135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+  150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+  165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+  180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+  195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+  210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+  225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+  255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+  270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+  285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+  300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+  315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+  330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+  345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
+  360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+  375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
+  390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+  405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+  420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+  435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
+  450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
+  465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
+  480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+  495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+  510, 511,
 };
 #endif  // CONFIG_EXT_TX
 
@@ -1208,710 +1142,570 @@ DECLARE_ALIGNED(16, static const int16_t,
 #if CONFIG_EXT_TX
 DECLARE_ALIGNED(16, static const int16_t,
                 default_scan_8x16_neighbors[129 * MAX_NEIGHBORS]) = {
-  0, 0, 0, 0, 0, 0, 1, 1, 1, 8, 8, 8,
-  2,  2,  2,  9,  9, 16, 16, 16,  3,  3,  3, 10,
-  10, 17, 17, 24, 24, 24,  4,  4,  4, 11, 11, 18,
-  18, 25, 25, 32, 32, 32,  5,  5,  5, 12, 12, 19,
-  19, 26, 26, 33, 33, 40, 40, 40,  6,  6,  6, 13,
-  13, 20, 20, 27, 27, 34, 34, 41, 41, 48, 48, 48,
-  7, 14, 14, 21, 21, 28, 28, 35, 35, 42, 42, 49,
-  49, 56, 56, 56, 15, 22, 22, 29, 29, 36, 36, 43,
-  43, 50, 50, 57, 57, 64, 64, 64, 23, 30, 30, 37,
-  37, 44, 44, 51, 51, 58, 58, 65, 65, 72, 72, 72,
-  31, 38, 38, 45, 45, 52, 52, 59, 59, 66, 66, 73,
-  73, 80, 80, 80, 39, 46, 46, 53, 53, 60, 60, 67,
-  67, 74, 74, 81, 81, 88, 88, 88, 47, 54, 54, 61,
-  61, 68, 68, 75, 75, 82, 82, 89, 89, 96, 96, 96,
-  55, 62, 62, 69, 69, 76, 76, 83, 83, 90, 90, 97,
-  97, 104, 104, 104,  63,  70,  70,  77,  77,  84,  84,  91,
-  91,  98,  98, 105, 105, 112, 112, 112,  71,  78,  78,  85,
-  85,  92,  92,  99,  99, 106, 106, 113, 113, 120,  79,  86,
-  86,  93,  93, 100, 100, 107, 107, 114, 114, 121,  87,  94,
-  94, 101, 101, 108, 108, 115, 115, 122,  95, 102, 102, 109,
-  109, 116, 116, 123, 103, 110, 110, 117, 117, 124, 111, 118,
-  118, 125, 119, 126,
-  0, 0
+  0,   0,   0,   0,   0,   0,   1,   1,   1,   8,   8,   8,   2,   2,   2,
+  9,   9,   16,  16,  16,  3,   3,   3,   10,  10,  17,  17,  24,  24,  24,
+  4,   4,   4,   11,  11,  18,  18,  25,  25,  32,  32,  32,  5,   5,   5,
+  12,  12,  19,  19,  26,  26,  33,  33,  40,  40,  40,  6,   6,   6,   13,
+  13,  20,  20,  27,  27,  34,  34,  41,  41,  48,  48,  48,  7,   14,  14,
+  21,  21,  28,  28,  35,  35,  42,  42,  49,  49,  56,  56,  56,  15,  22,
+  22,  29,  29,  36,  36,  43,  43,  50,  50,  57,  57,  64,  64,  64,  23,
+  30,  30,  37,  37,  44,  44,  51,  51,  58,  58,  65,  65,  72,  72,  72,
+  31,  38,  38,  45,  45,  52,  52,  59,  59,  66,  66,  73,  73,  80,  80,
+  80,  39,  46,  46,  53,  53,  60,  60,  67,  67,  74,  74,  81,  81,  88,
+  88,  88,  47,  54,  54,  61,  61,  68,  68,  75,  75,  82,  82,  89,  89,
+  96,  96,  96,  55,  62,  62,  69,  69,  76,  76,  83,  83,  90,  90,  97,
+  97,  104, 104, 104, 63,  70,  70,  77,  77,  84,  84,  91,  91,  98,  98,
+  105, 105, 112, 112, 112, 71,  78,  78,  85,  85,  92,  92,  99,  99,  106,
+  106, 113, 113, 120, 79,  86,  86,  93,  93,  100, 100, 107, 107, 114, 114,
+  121, 87,  94,  94,  101, 101, 108, 108, 115, 115, 122, 95,  102, 102, 109,
+  109, 116, 116, 123, 103, 110, 110, 117, 117, 124, 111, 118, 118, 125, 119,
+  126, 0,   0
 };
 
 DECLARE_ALIGNED(16, static const int16_t,
                 default_scan_16x8_neighbors[129 * MAX_NEIGHBORS]) = {
-  0,  0,  0,  0,  0,  0,  1,  1,  1, 16, 16, 16,
-  2,  2,  2, 17, 17, 32, 32, 32,  3,  3,  3, 18,
-  18, 33, 33, 48, 48, 48,  4,  4,  4, 19, 19, 34,
-  34, 49, 49, 64, 64, 64,  5,  5,  5, 20, 20, 35,
-  35, 50, 50, 65, 65, 80, 80, 80,  6,  6,  6, 21,
-  21, 36, 36, 51, 51, 66, 66, 81, 81, 96, 96, 96,
-  7,  7,  7, 22, 22, 37, 37, 52, 52, 67, 67, 82,
-  82,  97,  97, 112,   8,   8,   8,  23,  23,  38,  38,  53,
-  53,  68,  68,  83,  83,  98,  98, 113,   9,   9,   9,  24,
-  24,  39,  39,  54,  54,  69,  69,  84,  84,  99,  99, 114,
-  10, 10, 10, 25, 25, 40, 40, 55, 55, 70, 70, 85,
-  85, 100, 100, 115,  11,  11,  11,  26,  26,  41,  41,  56,
-  56,  71,  71,  86,  86, 101, 101, 116,  12,  12,  12,  27,
-  27,  42,  42,  57,  57,  72,  72,  87,  87, 102, 102, 117,
-  13, 13, 13, 28, 28, 43, 43, 58, 58, 73, 73, 88,
-  88, 103, 103, 118,  14,  14,  14,  29,  29,  44,  44,  59,
-  59,  74,  74,  89,  89, 104, 104, 119,  15,  30,  30,  45,
-  45,  60,  60,  75,  75,  90,  90, 105, 105, 120,  31,  46,
-  46,  61,  61,  76,  76,  91,  91, 106, 106, 121,  47,  62,
-  62,  77,  77,  92,  92, 107, 107, 122,  63,  78,  78,  93,
-  93, 108, 108, 123,  79,  94,  94, 109, 109, 124,  95, 110,
-  110, 125, 111, 126,
-  0, 0
+  0,   0,   0,   0,   0,   0,  1,  1,   1,   16,  16,  16,  2,   2,   2,
+  17,  17,  32,  32,  32,  3,  3,  3,   18,  18,  33,  33,  48,  48,  48,
+  4,   4,   4,   19,  19,  34, 34, 49,  49,  64,  64,  64,  5,   5,   5,
+  20,  20,  35,  35,  50,  50, 65, 65,  80,  80,  80,  6,   6,   6,   21,
+  21,  36,  36,  51,  51,  66, 66, 81,  81,  96,  96,  96,  7,   7,   7,
+  22,  22,  37,  37,  52,  52, 67, 67,  82,  82,  97,  97,  112, 8,   8,
+  8,   23,  23,  38,  38,  53, 53, 68,  68,  83,  83,  98,  98,  113, 9,
+  9,   9,   24,  24,  39,  39, 54, 54,  69,  69,  84,  84,  99,  99,  114,
+  10,  10,  10,  25,  25,  40, 40, 55,  55,  70,  70,  85,  85,  100, 100,
+  115, 11,  11,  11,  26,  26, 41, 41,  56,  56,  71,  71,  86,  86,  101,
+  101, 116, 12,  12,  12,  27, 27, 42,  42,  57,  57,  72,  72,  87,  87,
+  102, 102, 117, 13,  13,  13, 28, 28,  43,  43,  58,  58,  73,  73,  88,
+  88,  103, 103, 118, 14,  14, 14, 29,  29,  44,  44,  59,  59,  74,  74,
+  89,  89,  104, 104, 119, 15, 30, 30,  45,  45,  60,  60,  75,  75,  90,
+  90,  105, 105, 120, 31,  46, 46, 61,  61,  76,  76,  91,  91,  106, 106,
+  121, 47,  62,  62,  77,  77, 92, 92,  107, 107, 122, 63,  78,  78,  93,
+  93,  108, 108, 123, 79,  94, 94, 109, 109, 124, 95,  110, 110, 125, 111,
+  126, 0,   0
 };
 
 DECLARE_ALIGNED(16, static const int16_t,
                 mcol_scan_8x16_neighbors[129 * MAX_NEIGHBORS]) = {
-  0,  0,  0,  0,  8,  8, 16, 16, 24, 24, 32, 32,
-  40, 40, 48, 48, 56, 56, 64, 64, 72, 72, 80, 80,
-  88,  88,  96,  96, 104, 104, 112, 112,   0,   0,   1,   8,
-  9, 16, 17, 24, 25, 32, 33, 40, 41, 48, 49, 56,
-  57,  64,  65,  72,  73,  80,  81,  88,  89,  96,  97, 104,
-  105, 112, 113, 120,   1,   1,   2,   9,  10,  17,  18,  25,
-  26, 33, 34, 41, 42, 49, 50, 57, 58, 65, 66, 73,
-  74,  81,  82,  89,  90,  97,  98, 105, 106, 113, 114, 121,
-  2,  2,  3, 10, 11, 18, 19, 26, 27, 34, 35, 42,
-  43, 50, 51, 58, 59, 66, 67, 74, 75, 82, 83, 90,
-  91,  98,  99, 106, 107, 114, 115, 122,   3,   3,   4,  11,
-  12, 19, 20, 27, 28, 35, 36, 43, 44, 51, 52, 59,
-  60,  67,  68,  75,  76,  83,  84,  91,  92,  99, 100, 107,
-  108, 115, 116, 123,   4,   4,   5,  12,  13,  20,  21,  28,
-  29, 36, 37, 44, 45, 52, 53, 60, 61, 68, 69, 76,
-  77,  84,  85,  92,  93, 100, 101, 108, 109, 116, 117, 124,
-  5,  5,  6, 13, 14, 21, 22, 29, 30, 37, 38, 45,
-  46, 53, 54, 61, 62, 69, 70, 77, 78, 85, 86, 93,
-  94, 101, 102, 109, 110, 117, 118, 125,   6,   6,   7,  14,
-  15, 22, 23, 30, 31, 38, 39, 46, 47, 54, 55, 62,
-  63,  70,  71,  78,  79,  86,  87,  94,  95, 102, 103, 110,
-  111, 118, 119, 126,
-  0, 0
+  0,  0,  0,  0,  8,  8,  16, 16, 24, 24,  32,  32,  40,  40,  48,  48,
+  56, 56, 64, 64, 72, 72, 80, 80, 88, 88,  96,  96,  104, 104, 112, 112,
+  0,  0,  1,  8,  9,  16, 17, 24, 25, 32,  33,  40,  41,  48,  49,  56,
+  57, 64, 65, 72, 73, 80, 81, 88, 89, 96,  97,  104, 105, 112, 113, 120,
+  1,  1,  2,  9,  10, 17, 18, 25, 26, 33,  34,  41,  42,  49,  50,  57,
+  58, 65, 66, 73, 74, 81, 82, 89, 90, 97,  98,  105, 106, 113, 114, 121,
+  2,  2,  3,  10, 11, 18, 19, 26, 27, 34,  35,  42,  43,  50,  51,  58,
+  59, 66, 67, 74, 75, 82, 83, 90, 91, 98,  99,  106, 107, 114, 115, 122,
+  3,  3,  4,  11, 12, 19, 20, 27, 28, 35,  36,  43,  44,  51,  52,  59,
+  60, 67, 68, 75, 76, 83, 84, 91, 92, 99,  100, 107, 108, 115, 116, 123,
+  4,  4,  5,  12, 13, 20, 21, 28, 29, 36,  37,  44,  45,  52,  53,  60,
+  61, 68, 69, 76, 77, 84, 85, 92, 93, 100, 101, 108, 109, 116, 117, 124,
+  5,  5,  6,  13, 14, 21, 22, 29, 30, 37,  38,  45,  46,  53,  54,  61,
+  62, 69, 70, 77, 78, 85, 86, 93, 94, 101, 102, 109, 110, 117, 118, 125,
+  6,  6,  7,  14, 15, 22, 23, 30, 31, 38,  39,  46,  47,  54,  55,  62,
+  63, 70, 71, 78, 79, 86, 87, 94, 95, 102, 103, 110, 111, 118, 119, 126,
+  0,  0
 };
 
 DECLARE_ALIGNED(16, static const int16_t,
                 mcol_scan_16x8_neighbors[129 * MAX_NEIGHBORS]) = {
-  0,  0,  0,  0, 16, 16, 32, 32, 48, 48, 64, 64,
-  80, 80, 96, 96,  0,  0,  1, 16, 17, 32, 33, 48,
-  49,  64,  65,  80,  81,  96,  97, 112,   1,   1,   2,  17,
-  18,  33,  34,  49,  50,  65,  66,  81,  82,  97,  98, 113,
-  2,  2,  3, 18, 19, 34, 35, 50, 51, 66, 67, 82,
-  83,  98,  99, 114,   3,   3,   4,  19,  20,  35,  36,  51,
-  52,  67,  68,  83,  84,  99, 100, 115,   4,   4,   5,  20,
-  21,  36,  37,  52,  53,  68,  69,  84,  85, 100, 101, 116,
-  5,  5,  6, 21, 22, 37, 38, 53, 54, 69, 70, 85,
-  86, 101, 102, 117,   6,   6,   7,  22,  23,  38,  39,  54,
-  55,  70,  71,  86,  87, 102, 103, 118,   7,   7,   8,  23,
-  24,  39,  40,  55,  56,  71,  72,  87,  88, 103, 104, 119,
-  8,  8,  9, 24, 25, 40, 41, 56, 57, 72, 73, 88,
-  89, 104, 105, 120,   9,   9,  10,  25,  26,  41,  42,  57,
-  58,  73,  74,  89,  90, 105, 106, 121,  10,  10,  11,  26,
-  27,  42,  43,  58,  59,  74,  75,  90,  91, 106, 107, 122,
-  11, 11, 12, 27, 28, 43, 44, 59, 60, 75, 76, 91,
-  92, 107, 108, 123,  12,  12,  13,  28,  29,  44,  45,  60,
-  61,  76,  77,  92,  93, 108, 109, 124,  13,  13,  14,  29,
-  30,  45,  46,  61,  62,  77,  78,  93,  94, 109, 110, 125,
-  14, 14, 15, 30, 31, 46, 47, 62, 63, 78, 79, 94,
-  95, 110, 111, 126,
-  0, 0
+  0,  0,  0,  0,  16, 16, 32, 32, 48, 48, 64, 64, 80, 80,  96,  96,
+  0,  0,  1,  16, 17, 32, 33, 48, 49, 64, 65, 80, 81, 96,  97,  112,
+  1,  1,  2,  17, 18, 33, 34, 49, 50, 65, 66, 81, 82, 97,  98,  113,
+  2,  2,  3,  18, 19, 34, 35, 50, 51, 66, 67, 82, 83, 98,  99,  114,
+  3,  3,  4,  19, 20, 35, 36, 51, 52, 67, 68, 83, 84, 99,  100, 115,
+  4,  4,  5,  20, 21, 36, 37, 52, 53, 68, 69, 84, 85, 100, 101, 116,
+  5,  5,  6,  21, 22, 37, 38, 53, 54, 69, 70, 85, 86, 101, 102, 117,
+  6,  6,  7,  22, 23, 38, 39, 54, 55, 70, 71, 86, 87, 102, 103, 118,
+  7,  7,  8,  23, 24, 39, 40, 55, 56, 71, 72, 87, 88, 103, 104, 119,
+  8,  8,  9,  24, 25, 40, 41, 56, 57, 72, 73, 88, 89, 104, 105, 120,
+  9,  9,  10, 25, 26, 41, 42, 57, 58, 73, 74, 89, 90, 105, 106, 121,
+  10, 10, 11, 26, 27, 42, 43, 58, 59, 74, 75, 90, 91, 106, 107, 122,
+  11, 11, 12, 27, 28, 43, 44, 59, 60, 75, 76, 91, 92, 107, 108, 123,
+  12, 12, 13, 28, 29, 44, 45, 60, 61, 76, 77, 92, 93, 108, 109, 124,
+  13, 13, 14, 29, 30, 45, 46, 61, 62, 77, 78, 93, 94, 109, 110, 125,
+  14, 14, 15, 30, 31, 46, 47, 62, 63, 78, 79, 94, 95, 110, 111, 126,
+  0,  0
 };
 
 DECLARE_ALIGNED(16, static const int16_t,
                 mrow_scan_8x16_neighbors[129 * MAX_NEIGHBORS]) = {
-  0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4,
-  5,  5,  6,  6,  0,  0,  1,  8,  2,  9,  3, 10,
-  4, 11,  5, 12,  6, 13,  7, 14,  8,  8,  9, 16,
-  10, 17, 11, 18, 12, 19, 13, 20, 14, 21, 15, 22,
-  16, 16, 17, 24, 18, 25, 19, 26, 20, 27, 21, 28,
-  22, 29, 23, 30, 24, 24, 25, 32, 26, 33, 27, 34,
-  28, 35, 29, 36, 30, 37, 31, 38, 32, 32, 33, 40,
-  34, 41, 35, 42, 36, 43, 37, 44, 38, 45, 39, 46,
-  40, 40, 41, 48, 42, 49, 43, 50, 44, 51, 45, 52,
-  46, 53, 47, 54, 48, 48, 49, 56, 50, 57, 51, 58,
-  52, 59, 53, 60, 54, 61, 55, 62, 56, 56, 57, 64,
-  58, 65, 59, 66, 60, 67, 61, 68, 62, 69, 63, 70,
-  64, 64, 65, 72, 66, 73, 67, 74, 68, 75, 69, 76,
-  70, 77, 71, 78, 72, 72, 73, 80, 74, 81, 75, 82,
-  76, 83, 77, 84, 78, 85, 79, 86, 80, 80, 81, 88,
-  82, 89, 83, 90, 84, 91, 85, 92, 86, 93, 87, 94,
-  88,  88,  89,  96,  90,  97,  91,  98,  92,  99,  93, 100,
-  94, 101,  95, 102,  96,  96,  97, 104,  98, 105,  99, 106,
-  100, 107, 101, 108, 102, 109, 103, 110, 104, 104, 105, 112,
-  106, 113, 107, 114, 108, 115, 109, 116, 110, 117, 111, 118,
-  112, 112, 113, 120, 114, 121, 115, 122, 116, 123, 117, 124,
-  118, 125, 119, 126,
-  0, 0
+  0,   0,   0,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,
+  6,   0,   0,   1,   8,   2,   9,   3,   10,  4,   11,  5,   12,  6,   13,
+  7,   14,  8,   8,   9,   16,  10,  17,  11,  18,  12,  19,  13,  20,  14,
+  21,  15,  22,  16,  16,  17,  24,  18,  25,  19,  26,  20,  27,  21,  28,
+  22,  29,  23,  30,  24,  24,  25,  32,  26,  33,  27,  34,  28,  35,  29,
+  36,  30,  37,  31,  38,  32,  32,  33,  40,  34,  41,  35,  42,  36,  43,
+  37,  44,  38,  45,  39,  46,  40,  40,  41,  48,  42,  49,  43,  50,  44,
+  51,  45,  52,  46,  53,  47,  54,  48,  48,  49,  56,  50,  57,  51,  58,
+  52,  59,  53,  60,  54,  61,  55,  62,  56,  56,  57,  64,  58,  65,  59,
+  66,  60,  67,  61,  68,  62,  69,  63,  70,  64,  64,  65,  72,  66,  73,
+  67,  74,  68,  75,  69,  76,  70,  77,  71,  78,  72,  72,  73,  80,  74,
+  81,  75,  82,  76,  83,  77,  84,  78,  85,  79,  86,  80,  80,  81,  88,
+  82,  89,  83,  90,  84,  91,  85,  92,  86,  93,  87,  94,  88,  88,  89,
+  96,  90,  97,  91,  98,  92,  99,  93,  100, 94,  101, 95,  102, 96,  96,
+  97,  104, 98,  105, 99,  106, 100, 107, 101, 108, 102, 109, 103, 110, 104,
+  104, 105, 112, 106, 113, 107, 114, 108, 115, 109, 116, 110, 117, 111, 118,
+  112, 112, 113, 120, 114, 121, 115, 122, 116, 123, 117, 124, 118, 125, 119,
+  126, 0,   0
 };
 
 DECLARE_ALIGNED(16, static const int16_t,
                 mrow_scan_16x8_neighbors[129 * MAX_NEIGHBORS]) = {
-  0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4,
-  5,  5,  6,  6,  7,  7,  8,  8,  9,  9, 10, 10,
-  11, 11, 12, 12, 13, 13, 14, 14,  0,  0,  1, 16,
-  2, 17,  3, 18,  4, 19,  5, 20,  6, 21,  7, 22,
-  8, 23,  9, 24, 10, 25, 11, 26, 12, 27, 13, 28,
-  14, 29, 15, 30, 16, 16, 17, 32, 18, 33, 19, 34,
-  20, 35, 21, 36, 22, 37, 23, 38, 24, 39, 25, 40,
-  26, 41, 27, 42, 28, 43, 29, 44, 30, 45, 31, 46,
-  32, 32, 33, 48, 34, 49, 35, 50, 36, 51, 37, 52,
-  38, 53, 39, 54, 40, 55, 41, 56, 42, 57, 43, 58,
-  44, 59, 45, 60, 46, 61, 47, 62, 48, 48, 49, 64,
-  50, 65, 51, 66, 52, 67, 53, 68, 54, 69, 55, 70,
-  56, 71, 57, 72, 58, 73, 59, 74, 60, 75, 61, 76,
-  62, 77, 63, 78, 64, 64, 65, 80, 66, 81, 67, 82,
-  68, 83, 69, 84, 70, 85, 71, 86, 72, 87, 73, 88,
-  74, 89, 75, 90, 76, 91, 77, 92, 78, 93, 79, 94,
-  80,  80,  81,  96,  82,  97,  83,  98,  84,  99,  85, 100,
-  86, 101,  87, 102,  88, 103,  89, 104,  90, 105,  91, 106,
-  92, 107,  93, 108,  94, 109,  95, 110,  96,  96,  97, 112,
-  98, 113,  99, 114, 100, 115, 101, 116, 102, 117, 103, 118,
-  104, 119, 105, 120, 106, 121, 107, 122, 108, 123, 109, 124,
-  110, 125, 111, 126,
-  0, 0
+  0,   0,   0,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,
+  6,   7,   7,   8,   8,   9,   9,   10,  10,  11,  11,  12,  12,  13,  13,
+  14,  14,  0,   0,   1,   16,  2,   17,  3,   18,  4,   19,  5,   20,  6,
+  21,  7,   22,  8,   23,  9,   24,  10,  25,  11,  26,  12,  27,  13,  28,
+  14,  29,  15,  30,  16,  16,  17,  32,  18,  33,  19,  34,  20,  35,  21,
+  36,  22,  37,  23,  38,  24,  39,  25,  40,  26,  41,  27,  42,  28,  43,
+  29,  44,  30,  45,  31,  46,  32,  32,  33,  48,  34,  49,  35,  50,  36,
+  51,  37,  52,  38,  53,  39,  54,  40,  55,  41,  56,  42,  57,  43,  58,
+  44,  59,  45,  60,  46,  61,  47,  62,  48,  48,  49,  64,  50,  65,  51,
+  66,  52,  67,  53,  68,  54,  69,  55,  70,  56,  71,  57,  72,  58,  73,
+  59,  74,  60,  75,  61,  76,  62,  77,  63,  78,  64,  64,  65,  80,  66,
+  81,  67,  82,  68,  83,  69,  84,  70,  85,  71,  86,  72,  87,  73,  88,
+  74,  89,  75,  90,  76,  91,  77,  92,  78,  93,  79,  94,  80,  80,  81,
+  96,  82,  97,  83,  98,  84,  99,  85,  100, 86,  101, 87,  102, 88,  103,
+  89,  104, 90,  105, 91,  106, 92,  107, 93,  108, 94,  109, 95,  110, 96,
+  96,  97,  112, 98,  113, 99,  114, 100, 115, 101, 116, 102, 117, 103, 118,
+  104, 119, 105, 120, 106, 121, 107, 122, 108, 123, 109, 124, 110, 125, 111,
+  126, 0,   0
 };
 
 DECLARE_ALIGNED(16, static const int16_t,
                 default_scan_16x32_neighbors[513 * MAX_NEIGHBORS]) = {
-  0,  0,  0,  0,  0,  0,  1,  1,  1, 16, 16, 16,
-  2,  2,  2, 17, 17, 32, 32, 32,  3,  3,  3, 18,
-  18, 33, 33, 48, 48, 48,  4,  4,  4, 19, 19, 34,
-  34, 49, 49, 64, 64, 64,  5,  5,  5, 20, 20, 35,
-  35, 50, 50, 65, 65, 80, 80, 80,  6,  6,  6, 21,
-  21, 36, 36, 51, 51, 66, 66, 81, 81, 96, 96, 96,
-  7,  7,  7, 22, 22, 37, 37, 52, 52, 67, 67, 82,
-  82,  97,  97, 112, 112, 112,   8,   8,   8,  23,  23,  38,
-  38,  53,  53,  68,  68,  83,  83,  98,  98, 113, 113, 128,
-  128, 128,   9,   9,   9,  24,  24,  39,  39,  54,  54,  69,
-  69,  84,  84,  99,  99, 114, 114, 129, 129, 144, 144, 144,
-  10, 10, 10, 25, 25, 40, 40, 55, 55, 70, 70, 85,
-  85, 100, 100, 115, 115, 130, 130, 145, 145, 160, 160, 160,
-  11, 11, 11, 26, 26, 41, 41, 56, 56, 71, 71, 86,
-  86, 101, 101, 116, 116, 131, 131, 146, 146, 161, 161, 176,
-  176, 176,  12,  12,  12,  27,  27,  42,  42,  57,  57,  72,
-  72,  87,  87, 102, 102, 117, 117, 132, 132, 147, 147, 162,
-  162, 177, 177, 192, 192, 192,  13,  13,  13,  28,  28,  43,
-  43,  58,  58,  73,  73,  88,  88, 103, 103, 118, 118, 133,
-  133, 148, 148, 163, 163, 178, 178, 193, 193, 208, 208, 208,
-  14, 14, 14, 29, 29, 44, 44, 59, 59, 74, 74, 89,
-  89, 104, 104, 119, 119, 134, 134, 149, 149, 164, 164, 179,
-  179, 194, 194, 209, 209, 224, 224, 224,  15,  30,  30,  45,
-  45,  60,  60,  75,  75,  90,  90, 105, 105, 120, 120, 135,
-  135, 150, 150, 165, 165, 180, 180, 195, 195, 210, 210, 225,
-  225, 240, 240, 240,  31,  46,  46,  61,  61,  76,  76,  91,
-  91, 106, 106, 121, 121, 136, 136, 151, 151, 166, 166, 181,
-  181, 196, 196, 211, 211, 226, 226, 241, 241, 256, 256, 256,
-  47,  62,  62,  77,  77,  92,  92, 107, 107, 122, 122, 137,
-  137, 152, 152, 167, 167, 182, 182, 197, 197, 212, 212, 227,
-  227, 242, 242, 257, 257, 272, 272, 272,  63,  78,  78,  93,
-  93, 108, 108, 123, 123, 138, 138, 153, 153, 168, 168, 183,
-  183, 198, 198, 213, 213, 228, 228, 243, 243, 258, 258, 273,
-  273, 288, 288, 288,  79,  94,  94, 109, 109, 124, 124, 139,
-  139, 154, 154, 169, 169, 184, 184, 199, 199, 214, 214, 229,
-  229, 244, 244, 259, 259, 274, 274, 289, 289, 304, 304, 304,
-  95, 110, 110, 125, 125, 140, 140, 155, 155, 170, 170, 185,
-  185, 200, 200, 215, 215, 230, 230, 245, 245, 260, 260, 275,
-  275, 290, 290, 305, 305, 320, 320, 320, 111, 126, 126, 141,
-  141, 156, 156, 171, 171, 186, 186, 201, 201, 216, 216, 231,
-  231, 246, 246, 261, 261, 276, 276, 291, 291, 306, 306, 321,
-  321, 336, 336, 336, 127, 142, 142, 157, 157, 172, 172, 187,
-  187, 202, 202, 217, 217, 232, 232, 247, 247, 262, 262, 277,
-  277, 292, 292, 307, 307, 322, 322, 337, 337, 352, 352, 352,
-  143, 158, 158, 173, 173, 188, 188, 203, 203, 218, 218, 233,
-  233, 248, 248, 263, 263, 278, 278, 293, 293, 308, 308, 323,
-  323, 338, 338, 353, 353, 368, 368, 368, 159, 174, 174, 189,
-  189, 204, 204, 219, 219, 234, 234, 249, 249, 264, 264, 279,
-  279, 294, 294, 309, 309, 324, 324, 339, 339, 354, 354, 369,
-  369, 384, 384, 384, 175, 190, 190, 205, 205, 220, 220, 235,
-  235, 250, 250, 265, 265, 280, 280, 295, 295, 310, 310, 325,
-  325, 340, 340, 355, 355, 370, 370, 385, 385, 400, 400, 400,
-  191, 206, 206, 221, 221, 236, 236, 251, 251, 266, 266, 281,
-  281, 296, 296, 311, 311, 326, 326, 341, 341, 356, 356, 371,
-  371, 386, 386, 401, 401, 416, 416, 416, 207, 222, 222, 237,
-  237, 252, 252, 267, 267, 282, 282, 297, 297, 312, 312, 327,
-  327, 342, 342, 357, 357, 372, 372, 387, 387, 402, 402, 417,
-  417, 432, 432, 432, 223, 238, 238, 253, 253, 268, 268, 283,
-  283, 298, 298, 313, 313, 328, 328, 343, 343, 358, 358, 373,
-  373, 388, 388, 403, 403, 418, 418, 433, 433, 448, 448, 448,
-  239, 254, 254, 269, 269, 284, 284, 299, 299, 314, 314, 329,
-  329, 344, 344, 359, 359, 374, 374, 389, 389, 404, 404, 419,
-  419, 434, 434, 449, 449, 464, 464, 464, 255, 270, 270, 285,
-  285, 300, 300, 315, 315, 330, 330, 345, 345, 360, 360, 375,
-  375, 390, 390, 405, 405, 420, 420, 435, 435, 450, 450, 465,
-  465, 480, 480, 480, 271, 286, 286, 301, 301, 316, 316, 331,
-  331, 346, 346, 361, 361, 376, 376, 391, 391, 406, 406, 421,
-  421, 436, 436, 451, 451, 466, 466, 481, 481, 496, 287, 302,
-  302, 317, 317, 332, 332, 347, 347, 362, 362, 377, 377, 392,
-  392, 407, 407, 422, 422, 437, 437, 452, 452, 467, 467, 482,
-  482, 497, 303, 318, 318, 333, 333, 348, 348, 363, 363, 378,
-  378, 393, 393, 408, 408, 423, 423, 438, 438, 453, 453, 468,
-  468, 483, 483, 498, 319, 334, 334, 349, 349, 364, 364, 379,
-  379, 394, 394, 409, 409, 424, 424, 439, 439, 454, 454, 469,
-  469, 484, 484, 499, 335, 350, 350, 365, 365, 380, 380, 395,
-  395, 410, 410, 425, 425, 440, 440, 455, 455, 470, 470, 485,
-  485, 500, 351, 366, 366, 381, 381, 396, 396, 411, 411, 426,
-  426, 441, 441, 456, 456, 471, 471, 486, 486, 501, 367, 382,
-  382, 397, 397, 412, 412, 427, 427, 442, 442, 457, 457, 472,
-  472, 487, 487, 502, 383, 398, 398, 413, 413, 428, 428, 443,
-  443, 458, 458, 473, 473, 488, 488, 503, 399, 414, 414, 429,
-  429, 444, 444, 459, 459, 474, 474, 489, 489, 504, 415, 430,
-  430, 445, 445, 460, 460, 475, 475, 490, 490, 505, 431, 446,
-  446, 461, 461, 476, 476, 491, 491, 506, 447, 462, 462, 477,
-  477, 492, 492, 507, 463, 478, 478, 493, 493, 508, 479, 494,
-  494, 509, 495, 510,
-  0, 0
+  0,   0,   0,   0,   0,   0,   1,   1,   1,   16,  16,  16,  2,   2,   2,
+  17,  17,  32,  32,  32,  3,   3,   3,   18,  18,  33,  33,  48,  48,  48,
+  4,   4,   4,   19,  19,  34,  34,  49,  49,  64,  64,  64,  5,   5,   5,
+  20,  20,  35,  35,  50,  50,  65,  65,  80,  80,  80,  6,   6,   6,   21,
+  21,  36,  36,  51,  51,  66,  66,  81,  81,  96,  96,  96,  7,   7,   7,
+  22,  22,  37,  37,  52,  52,  67,  67,  82,  82,  97,  97,  112, 112, 112,
+  8,   8,   8,   23,  23,  38,  38,  53,  53,  68,  68,  83,  83,  98,  98,
+  113, 113, 128, 128, 128, 9,   9,   9,   24,  24,  39,  39,  54,  54,  69,
+  69,  84,  84,  99,  99,  114, 114, 129, 129, 144, 144, 144, 10,  10,  10,
+  25,  25,  40,  40,  55,  55,  70,  70,  85,  85,  100, 100, 115, 115, 130,
+  130, 145, 145, 160, 160, 160, 11,  11,  11,  26,  26,  41,  41,  56,  56,
+  71,  71,  86,  86,  101, 101, 116, 116, 131, 131, 146, 146, 161, 161, 176,
+  176, 176, 12,  12,  12,  27,  27,  42,  42,  57,  57,  72,  72,  87,  87,
+  102, 102, 117, 117, 132, 132, 147, 147, 162, 162, 177, 177, 192, 192, 192,
+  13,  13,  13,  28,  28,  43,  43,  58,  58,  73,  73,  88,  88,  103, 103,
+  118, 118, 133, 133, 148, 148, 163, 163, 178, 178, 193, 193, 208, 208, 208,
+  14,  14,  14,  29,  29,  44,  44,  59,  59,  74,  74,  89,  89,  104, 104,
+  119, 119, 134, 134, 149, 149, 164, 164, 179, 179, 194, 194, 209, 209, 224,
+  224, 224, 15,  30,  30,  45,  45,  60,  60,  75,  75,  90,  90,  105, 105,
+  120, 120, 135, 135, 150, 150, 165, 165, 180, 180, 195, 195, 210, 210, 225,
+  225, 240, 240, 240, 31,  46,  46,  61,  61,  76,  76,  91,  91,  106, 106,
+  121, 121, 136, 136, 151, 151, 166, 166, 181, 181, 196, 196, 211, 211, 226,
+  226, 241, 241, 256, 256, 256, 47,  62,  62,  77,  77,  92,  92,  107, 107,
+  122, 122, 137, 137, 152, 152, 167, 167, 182, 182, 197, 197, 212, 212, 227,
+  227, 242, 242, 257, 257, 272, 272, 272, 63,  78,  78,  93,  93,  108, 108,
+  123, 123, 138, 138, 153, 153, 168, 168, 183, 183, 198, 198, 213, 213, 228,
+  228, 243, 243, 258, 258, 273, 273, 288, 288, 288, 79,  94,  94,  109, 109,
+  124, 124, 139, 139, 154, 154, 169, 169, 184, 184, 199, 199, 214, 214, 229,
+  229, 244, 244, 259, 259, 274, 274, 289, 289, 304, 304, 304, 95,  110, 110,
+  125, 125, 140, 140, 155, 155, 170, 170, 185, 185, 200, 200, 215, 215, 230,
+  230, 245, 245, 260, 260, 275, 275, 290, 290, 305, 305, 320, 320, 320, 111,
+  126, 126, 141, 141, 156, 156, 171, 171, 186, 186, 201, 201, 216, 216, 231,
+  231, 246, 246, 261, 261, 276, 276, 291, 291, 306, 306, 321, 321, 336, 336,
+  336, 127, 142, 142, 157, 157, 172, 172, 187, 187, 202, 202, 217, 217, 232,
+  232, 247, 247, 262, 262, 277, 277, 292, 292, 307, 307, 322, 322, 337, 337,
+  352, 352, 352, 143, 158, 158, 173, 173, 188, 188, 203, 203, 218, 218, 233,
+  233, 248, 248, 263, 263, 278, 278, 293, 293, 308, 308, 323, 323, 338, 338,
+  353, 353, 368, 368, 368, 159, 174, 174, 189, 189, 204, 204, 219, 219, 234,
+  234, 249, 249, 264, 264, 279, 279, 294, 294, 309, 309, 324, 324, 339, 339,
+  354, 354, 369, 369, 384, 384, 384, 175, 190, 190, 205, 205, 220, 220, 235,
+  235, 250, 250, 265, 265, 280, 280, 295, 295, 310, 310, 325, 325, 340, 340,
+  355, 355, 370, 370, 385, 385, 400, 400, 400, 191, 206, 206, 221, 221, 236,
+  236, 251, 251, 266, 266, 281, 281, 296, 296, 311, 311, 326, 326, 341, 341,
+  356, 356, 371, 371, 386, 386, 401, 401, 416, 416, 416, 207, 222, 222, 237,
+  237, 252, 252, 267, 267, 282, 282, 297, 297, 312, 312, 327, 327, 342, 342,
+  357, 357, 372, 372, 387, 387, 402, 402, 417, 417, 432, 432, 432, 223, 238,
+  238, 253, 253, 268, 268, 283, 283, 298, 298, 313, 313, 328, 328, 343, 343,
+  358, 358, 373, 373, 388, 388, 403, 403, 418, 418, 433, 433, 448, 448, 448,
+  239, 254, 254, 269, 269, 284, 284, 299, 299, 314, 314, 329, 329, 344, 344,
+  359, 359, 374, 374, 389, 389, 404, 404, 419, 419, 434, 434, 449, 449, 464,
+  464, 464, 255, 270, 270, 285, 285, 300, 300, 315, 315, 330, 330, 345, 345,
+  360, 360, 375, 375, 390, 390, 405, 405, 420, 420, 435, 435, 450, 450, 465,
+  465, 480, 480, 480, 271, 286, 286, 301, 301, 316, 316, 331, 331, 346, 346,
+  361, 361, 376, 376, 391, 391, 406, 406, 421, 421, 436, 436, 451, 451, 466,
+  466, 481, 481, 496, 287, 302, 302, 317, 317, 332, 332, 347, 347, 362, 362,
+  377, 377, 392, 392, 407, 407, 422, 422, 437, 437, 452, 452, 467, 467, 482,
+  482, 497, 303, 318, 318, 333, 333, 348, 348, 363, 363, 378, 378, 393, 393,
+  408, 408, 423, 423, 438, 438, 453, 453, 468, 468, 483, 483, 498, 319, 334,
+  334, 349, 349, 364, 364, 379, 379, 394, 394, 409, 409, 424, 424, 439, 439,
+  454, 454, 469, 469, 484, 484, 499, 335, 350, 350, 365, 365, 380, 380, 395,
+  395, 410, 410, 425, 425, 440, 440, 455, 455, 470, 470, 485, 485, 500, 351,
+  366, 366, 381, 381, 396, 396, 411, 411, 426, 426, 441, 441, 456, 456, 471,
+  471, 486, 486, 501, 367, 382, 382, 397, 397, 412, 412, 427, 427, 442, 442,
+  457, 457, 472, 472, 487, 487, 502, 383, 398, 398, 413, 413, 428, 428, 443,
+  443, 458, 458, 473, 473, 488, 488, 503, 399, 414, 414, 429, 429, 444, 444,
+  459, 459, 474, 474, 489, 489, 504, 415, 430, 430, 445, 445, 460, 460, 475,
+  475, 490, 490, 505, 431, 446, 446, 461, 461, 476, 476, 491, 491, 506, 447,
+  462, 462, 477, 477, 492, 492, 507, 463, 478, 478, 493, 493, 508, 479, 494,
+  494, 509, 495, 510, 0,   0
 };
 
 DECLARE_ALIGNED(16, static const int16_t,
                 default_scan_32x16_neighbors[513 * MAX_NEIGHBORS]) = {
-  0,  0,  0,  0,  0,  0,  1,  1,  1, 32, 32, 32,
-  2,  2,  2, 33, 33, 64, 64, 64,  3,  3,  3, 34,
-  34, 65, 65, 96, 96, 96,  4,  4,  4, 35, 35, 66,
-  66,  97,  97, 128, 128, 128,   5,   5,   5,  36,  36,  67,
-  67,  98,  98, 129, 129, 160, 160, 160,   6,   6,   6,  37,
-  37,  68,  68,  99,  99, 130, 130, 161, 161, 192, 192, 192,
-  7,   7,   7,  38,  38,  69,  69, 100, 100, 131, 131, 162,
-  162, 193, 193, 224, 224, 224,   8,   8,   8,  39,  39,  70,
-  70, 101, 101, 132, 132, 163, 163, 194, 194, 225, 225, 256,
-  256, 256,   9,   9,   9,  40,  40,  71,  71, 102, 102, 133,
-  133, 164, 164, 195, 195, 226, 226, 257, 257, 288, 288, 288,
-  10,  10,  10,  41,  41,  72,  72, 103, 103, 134, 134, 165,
-  165, 196, 196, 227, 227, 258, 258, 289, 289, 320, 320, 320,
-  11,  11,  11,  42,  42,  73,  73, 104, 104, 135, 135, 166,
-  166, 197, 197, 228, 228, 259, 259, 290, 290, 321, 321, 352,
-  352, 352,  12,  12,  12,  43,  43,  74,  74, 105, 105, 136,
-  136, 167, 167, 198, 198, 229, 229, 260, 260, 291, 291, 322,
-  322, 353, 353, 384, 384, 384,  13,  13,  13,  44,  44,  75,
-  75, 106, 106, 137, 137, 168, 168, 199, 199, 230, 230, 261,
-  261, 292, 292, 323, 323, 354, 354, 385, 385, 416, 416, 416,
-  14,  14,  14,  45,  45,  76,  76, 107, 107, 138, 138, 169,
-  169, 200, 200, 231, 231, 262, 262, 293, 293, 324, 324, 355,
-  355, 386, 386, 417, 417, 448, 448, 448,  15,  15,  15,  46,
-  46,  77,  77, 108, 108, 139, 139, 170, 170, 201, 201, 232,
-  232, 263, 263, 294, 294, 325, 325, 356, 356, 387, 387, 418,
-  418, 449, 449, 480,  16,  16,  16,  47,  47,  78,  78, 109,
-  109, 140, 140, 171, 171, 202, 202, 233, 233, 264, 264, 295,
-  295, 326, 326, 357, 357, 388, 388, 419, 419, 450, 450, 481,
-  17,  17,  17,  48,  48,  79,  79, 110, 110, 141, 141, 172,
-  172, 203, 203, 234, 234, 265, 265, 296, 296, 327, 327, 358,
-  358, 389, 389, 420, 420, 451, 451, 482,  18,  18,  18,  49,
-  49,  80,  80, 111, 111, 142, 142, 173, 173, 204, 204, 235,
-  235, 266, 266, 297, 297, 328, 328, 359, 359, 390, 390, 421,
-  421, 452, 452, 483,  19,  19,  19,  50,  50,  81,  81, 112,
-  112, 143, 143, 174, 174, 205, 205, 236, 236, 267, 267, 298,
-  298, 329, 329, 360, 360, 391, 391, 422, 422, 453, 453, 484,
-  20,  20,  20,  51,  51,  82,  82, 113, 113, 144, 144, 175,
-  175, 206, 206, 237, 237, 268, 268, 299, 299, 330, 330, 361,
-  361, 392, 392, 423, 423, 454, 454, 485,  21,  21,  21,  52,
-  52,  83,  83, 114, 114, 145, 145, 176, 176, 207, 207, 238,
-  238, 269, 269, 300, 300, 331, 331, 362, 362, 393, 393, 424,
-  424, 455, 455, 486,  22,  22,  22,  53,  53,  84,  84, 115,
-  115, 146, 146, 177, 177, 208, 208, 239, 239, 270, 270, 301,
-  301, 332, 332, 363, 363, 394, 394, 425, 425, 456, 456, 487,
-  23,  23,  23,  54,  54,  85,  85, 116, 116, 147, 147, 178,
-  178, 209, 209, 240, 240, 271, 271, 302, 302, 333, 333, 364,
-  364, 395, 395, 426, 426, 457, 457, 488,  24,  24,  24,  55,
-  55,  86,  86, 117, 117, 148, 148, 179, 179, 210, 210, 241,
-  241, 272, 272, 303, 303, 334, 334, 365, 365, 396, 396, 427,
-  427, 458, 458, 489,  25,  25,  25,  56,  56,  87,  87, 118,
-  118, 149, 149, 180, 180, 211, 211, 242, 242, 273, 273, 304,
-  304, 335, 335, 366, 366, 397, 397, 428, 428, 459, 459, 490,
-  26,  26,  26,  57,  57,  88,  88, 119, 119, 150, 150, 181,
-  181, 212, 212, 243, 243, 274, 274, 305, 305, 336, 336, 367,
-  367, 398, 398, 429, 429, 460, 460, 491,  27,  27,  27,  58,
-  58,  89,  89, 120, 120, 151, 151, 182, 182, 213, 213, 244,
-  244, 275, 275, 306, 306, 337, 337, 368, 368, 399, 399, 430,
-  430, 461, 461, 492,  28,  28,  28,  59,  59,  90,  90, 121,
-  121, 152, 152, 183, 183, 214, 214, 245, 245, 276, 276, 307,
-  307, 338, 338, 369, 369, 400, 400, 431, 431, 462, 462, 493,
-  29,  29,  29,  60,  60,  91,  91, 122, 122, 153, 153, 184,
-  184, 215, 215, 246, 246, 277, 277, 308, 308, 339, 339, 370,
-  370, 401, 401, 432, 432, 463, 463, 494,  30,  30,  30,  61,
-  61,  92,  92, 123, 123, 154, 154, 185, 185, 216, 216, 247,
-  247, 278, 278, 309, 309, 340, 340, 371, 371, 402, 402, 433,
-  433, 464, 464, 495,  31,  62,  62,  93,  93, 124, 124, 155,
-  155, 186, 186, 217, 217, 248, 248, 279, 279, 310, 310, 341,
-  341, 372, 372, 403, 403, 434, 434, 465, 465, 496,  63,  94,
-  94, 125, 125, 156, 156, 187, 187, 218, 218, 249, 249, 280,
-  280, 311, 311, 342, 342, 373, 373, 404, 404, 435, 435, 466,
-  466, 497,  95, 126, 126, 157, 157, 188, 188, 219, 219, 250,
-  250, 281, 281, 312, 312, 343, 343, 374, 374, 405, 405, 436,
-  436, 467, 467, 498, 127, 158, 158, 189, 189, 220, 220, 251,
-  251, 282, 282, 313, 313, 344, 344, 375, 375, 406, 406, 437,
-  437, 468, 468, 499, 159, 190, 190, 221, 221, 252, 252, 283,
-  283, 314, 314, 345, 345, 376, 376, 407, 407, 438, 438, 469,
-  469, 500, 191, 222, 222, 253, 253, 284, 284, 315, 315, 346,
-  346, 377, 377, 408, 408, 439, 439, 470, 470, 501, 223, 254,
-  254, 285, 285, 316, 316, 347, 347, 378, 378, 409, 409, 440,
-  440, 471, 471, 502, 255, 286, 286, 317, 317, 348, 348, 379,
-  379, 410, 410, 441, 441, 472, 472, 503, 287, 318, 318, 349,
-  349, 380, 380, 411, 411, 442, 442, 473, 473, 504, 319, 350,
-  350, 381, 381, 412, 412, 443, 443, 474, 474, 505, 351, 382,
-  382, 413, 413, 444, 444, 475, 475, 506, 383, 414, 414, 445,
-  445, 476, 476, 507, 415, 446, 446, 477, 477, 508, 447, 478,
-  478, 509, 479, 510,
-  0, 0
+  0,   0,   0,   0,   0,   0,   1,   1,   1,   32,  32,  32,  2,   2,   2,
+  33,  33,  64,  64,  64,  3,   3,   3,   34,  34,  65,  65,  96,  96,  96,
+  4,   4,   4,   35,  35,  66,  66,  97,  97,  128, 128, 128, 5,   5,   5,
+  36,  36,  67,  67,  98,  98,  129, 129, 160, 160, 160, 6,   6,   6,   37,
+  37,  68,  68,  99,  99,  130, 130, 161, 161, 192, 192, 192, 7,   7,   7,
+  38,  38,  69,  69,  100, 100, 131, 131, 162, 162, 193, 193, 224, 224, 224,
+  8,   8,   8,   39,  39,  70,  70,  101, 101, 132, 132, 163, 163, 194, 194,
+  225, 225, 256, 256, 256, 9,   9,   9,   40,  40,  71,  71,  102, 102, 133,
+  133, 164, 164, 195, 195, 226, 226, 257, 257, 288, 288, 288, 10,  10,  10,
+  41,  41,  72,  72,  103, 103, 134, 134, 165, 165, 196, 196, 227, 227, 258,
+  258, 289, 289, 320, 320, 320, 11,  11,  11,  42,  42,  73,  73,  104, 104,
+  135, 135, 166, 166, 197, 197, 228, 228, 259, 259, 290, 290, 321, 321, 352,
+  352, 352, 12,  12,  12,  43,  43,  74,  74,  105, 105, 136, 136, 167, 167,
+  198, 198, 229, 229, 260, 260, 291, 291, 322, 322, 353, 353, 384, 384, 384,
+  13,  13,  13,  44,  44,  75,  75,  106, 106, 137, 137, 168, 168, 199, 199,
+  230, 230, 261, 261, 292, 292, 323, 323, 354, 354, 385, 385, 416, 416, 416,
+  14,  14,  14,  45,  45,  76,  76,  107, 107, 138, 138, 169, 169, 200, 200,
+  231, 231, 262, 262, 293, 293, 324, 324, 355, 355, 386, 386, 417, 417, 448,
+  448, 448, 15,  15,  15,  46,  46,  77,  77,  108, 108, 139, 139, 170, 170,
+  201, 201, 232, 232, 263, 263, 294, 294, 325, 325, 356, 356, 387, 387, 418,
+  418, 449, 449, 480, 16,  16,  16,  47,  47,  78,  78,  109, 109, 140, 140,
+  171, 171, 202, 202, 233, 233, 264, 264, 295, 295, 326, 326, 357, 357, 388,
+  388, 419, 419, 450, 450, 481, 17,  17,  17,  48,  48,  79,  79,  110, 110,
+  141, 141, 172, 172, 203, 203, 234, 234, 265, 265, 296, 296, 327, 327, 358,
+  358, 389, 389, 420, 420, 451, 451, 482, 18,  18,  18,  49,  49,  80,  80,
+  111, 111, 142, 142, 173, 173, 204, 204, 235, 235, 266, 266, 297, 297, 328,
+  328, 359, 359, 390, 390, 421, 421, 452, 452, 483, 19,  19,  19,  50,  50,
+  81,  81,  112, 112, 143, 143, 174, 174, 205, 205, 236, 236, 267, 267, 298,
+  298, 329, 329, 360, 360, 391, 391, 422, 422, 453, 453, 484, 20,  20,  20,
+  51,  51,  82,  82,  113, 113, 144, 144, 175, 175, 206, 206, 237, 237, 268,
+  268, 299, 299, 330, 330, 361, 361, 392, 392, 423, 423, 454, 454, 485, 21,
+  21,  21,  52,  52,  83,  83,  114, 114, 145, 145, 176, 176, 207, 207, 238,
+  238, 269, 269, 300, 300, 331, 331, 362, 362, 393, 393, 424, 424, 455, 455,
+  486, 22,  22,  22,  53,  53,  84,  84,  115, 115, 146, 146, 177, 177, 208,
+  208, 239, 239, 270, 270, 301, 301, 332, 332, 363, 363, 394, 394, 425, 425,
+  456, 456, 487, 23,  23,  23,  54,  54,  85,  85,  116, 116, 147, 147, 178,
+  178, 209, 209, 240, 240, 271, 271, 302, 302, 333, 333, 364, 364, 395, 395,
+  426, 426, 457, 457, 488, 24,  24,  24,  55,  55,  86,  86,  117, 117, 148,
+  148, 179, 179, 210, 210, 241, 241, 272, 272, 303, 303, 334, 334, 365, 365,
+  396, 396, 427, 427, 458, 458, 489, 25,  25,  25,  56,  56,  87,  87,  118,
+  118, 149, 149, 180, 180, 211, 211, 242, 242, 273, 273, 304, 304, 335, 335,
+  366, 366, 397, 397, 428, 428, 459, 459, 490, 26,  26,  26,  57,  57,  88,
+  88,  119, 119, 150, 150, 181, 181, 212, 212, 243, 243, 274, 274, 305, 305,
+  336, 336, 367, 367, 398, 398, 429, 429, 460, 460, 491, 27,  27,  27,  58,
+  58,  89,  89,  120, 120, 151, 151, 182, 182, 213, 213, 244, 244, 275, 275,
+  306, 306, 337, 337, 368, 368, 399, 399, 430, 430, 461, 461, 492, 28,  28,
+  28,  59,  59,  90,  90,  121, 121, 152, 152, 183, 183, 214, 214, 245, 245,
+  276, 276, 307, 307, 338, 338, 369, 369, 400, 400, 431, 431, 462, 462, 493,
+  29,  29,  29,  60,  60,  91,  91,  122, 122, 153, 153, 184, 184, 215, 215,
+  246, 246, 277, 277, 308, 308, 339, 339, 370, 370, 401, 401, 432, 432, 463,
+  463, 494, 30,  30,  30,  61,  61,  92,  92,  123, 123, 154, 154, 185, 185,
+  216, 216, 247, 247, 278, 278, 309, 309, 340, 340, 371, 371, 402, 402, 433,
+  433, 464, 464, 495, 31,  62,  62,  93,  93,  124, 124, 155, 155, 186, 186,
+  217, 217, 248, 248, 279, 279, 310, 310, 341, 341, 372, 372, 403, 403, 434,
+  434, 465, 465, 496, 63,  94,  94,  125, 125, 156, 156, 187, 187, 218, 218,
+  249, 249, 280, 280, 311, 311, 342, 342, 373, 373, 404, 404, 435, 435, 466,
+  466, 497, 95,  126, 126, 157, 157, 188, 188, 219, 219, 250, 250, 281, 281,
+  312, 312, 343, 343, 374, 374, 405, 405, 436, 436, 467, 467, 498, 127, 158,
+  158, 189, 189, 220, 220, 251, 251, 282, 282, 313, 313, 344, 344, 375, 375,
+  406, 406, 437, 437, 468, 468, 499, 159, 190, 190, 221, 221, 252, 252, 283,
+  283, 314, 314, 345, 345, 376, 376, 407, 407, 438, 438, 469, 469, 500, 191,
+  222, 222, 253, 253, 284, 284, 315, 315, 346, 346, 377, 377, 408, 408, 439,
+  439, 470, 470, 501, 223, 254, 254, 285, 285, 316, 316, 347, 347, 378, 378,
+  409, 409, 440, 440, 471, 471, 502, 255, 286, 286, 317, 317, 348, 348, 379,
+  379, 410, 410, 441, 441, 472, 472, 503, 287, 318, 318, 349, 349, 380, 380,
+  411, 411, 442, 442, 473, 473, 504, 319, 350, 350, 381, 381, 412, 412, 443,
+  443, 474, 474, 505, 351, 382, 382, 413, 413, 444, 444, 475, 475, 506, 383,
+  414, 414, 445, 445, 476, 476, 507, 415, 446, 446, 477, 477, 508, 447, 478,
+  478, 509, 479, 510, 0,   0
 };
 
 DECLARE_ALIGNED(16, static const int16_t,
                 mcol_scan_16x32_neighbors[513 * MAX_NEIGHBORS]) = {
-  0,  0,  0,  0, 16, 16, 32, 32, 48, 48, 64, 64,
-  80,  80,  96,  96, 112, 112, 128, 128, 144, 144, 160, 160,
-  176, 176, 192, 192, 208, 208, 224, 224, 240, 240, 256, 256,
-  272, 272, 288, 288, 304, 304, 320, 320, 336, 336, 352, 352,
-  368, 368, 384, 384, 400, 400, 416, 416, 432, 432, 448, 448,
-  464, 464, 480, 480,   0,   0,   1,  16,  17,  32,  33,  48,
-  49,  64,  65,  80,  81,  96,  97, 112, 113, 128, 129, 144,
-  145, 160, 161, 176, 177, 192, 193, 208, 209, 224, 225, 240,
-  241, 256, 257, 272, 273, 288, 289, 304, 305, 320, 321, 336,
-  337, 352, 353, 368, 369, 384, 385, 400, 401, 416, 417, 432,
-  433, 448, 449, 464, 465, 480, 481, 496,   1,   1,   2,  17,
-  18,  33,  34,  49,  50,  65,  66,  81,  82,  97,  98, 113,
-  114, 129, 130, 145, 146, 161, 162, 177, 178, 193, 194, 209,
-  210, 225, 226, 241, 242, 257, 258, 273, 274, 289, 290, 305,
-  306, 321, 322, 337, 338, 353, 354, 369, 370, 385, 386, 401,
-  402, 417, 418, 433, 434, 449, 450, 465, 466, 481, 482, 497,
-  2,  2,  3, 18, 19, 34, 35, 50, 51, 66, 67, 82,
-  83,  98,  99, 114, 115, 130, 131, 146, 147, 162, 163, 178,
-  179, 194, 195, 210, 211, 226, 227, 242, 243, 258, 259, 274,
-  275, 290, 291, 306, 307, 322, 323, 338, 339, 354, 355, 370,
-  371, 386, 387, 402, 403, 418, 419, 434, 435, 450, 451, 466,
-  467, 482, 483, 498,   3,   3,   4,  19,  20,  35,  36,  51,
-  52,  67,  68,  83,  84,  99, 100, 115, 116, 131, 132, 147,
-  148, 163, 164, 179, 180, 195, 196, 211, 212, 227, 228, 243,
-  244, 259, 260, 275, 276, 291, 292, 307, 308, 323, 324, 339,
-  340, 355, 356, 371, 372, 387, 388, 403, 404, 419, 420, 435,
-  436, 451, 452, 467, 468, 483, 484, 499,   4,   4,   5,  20,
-  21,  36,  37,  52,  53,  68,  69,  84,  85, 100, 101, 116,
-  117, 132, 133, 148, 149, 164, 165, 180, 181, 196, 197, 212,
-  213, 228, 229, 244, 245, 260, 261, 276, 277, 292, 293, 308,
-  309, 324, 325, 340, 341, 356, 357, 372, 373, 388, 389, 404,
-  405, 420, 421, 436, 437, 452, 453, 468, 469, 484, 485, 500,
-  5,  5,  6, 21, 22, 37, 38, 53, 54, 69, 70, 85,
-  86, 101, 102, 117, 118, 133, 134, 149, 150, 165, 166, 181,
-  182, 197, 198, 213, 214, 229, 230, 245, 246, 261, 262, 277,
-  278, 293, 294, 309, 310, 325, 326, 341, 342, 357, 358, 373,
-  374, 389, 390, 405, 406, 421, 422, 437, 438, 453, 454, 469,
-  470, 485, 486, 501,   6,   6,   7,  22,  23,  38,  39,  54,
-  55,  70,  71,  86,  87, 102, 103, 118, 119, 134, 135, 150,
-  151, 166, 167, 182, 183, 198, 199, 214, 215, 230, 231, 246,
-  247, 262, 263, 278, 279, 294, 295, 310, 311, 326, 327, 342,
-  343, 358, 359, 374, 375, 390, 391, 406, 407, 422, 423, 438,
-  439, 454, 455, 470, 471, 486, 487, 502,   7,   7,   8,  23,
-  24,  39,  40,  55,  56,  71,  72,  87,  88, 103, 104, 119,
-  120, 135, 136, 151, 152, 167, 168, 183, 184, 199, 200, 215,
-  216, 231, 232, 247, 248, 263, 264, 279, 280, 295, 296, 311,
-  312, 327, 328, 343, 344, 359, 360, 375, 376, 391, 392, 407,
-  408, 423, 424, 439, 440, 455, 456, 471, 472, 487, 488, 503,
-  8,  8,  9, 24, 25, 40, 41, 56, 57, 72, 73, 88,
-  89, 104, 105, 120, 121, 136, 137, 152, 153, 168, 169, 184,
-  185, 200, 201, 216, 217, 232, 233, 248, 249, 264, 265, 280,
-  281, 296, 297, 312, 313, 328, 329, 344, 345, 360, 361, 376,
-  377, 392, 393, 408, 409, 424, 425, 440, 441, 456, 457, 472,
-  473, 488, 489, 504,   9,   9,  10,  25,  26,  41,  42,  57,
-  58,  73,  74,  89,  90, 105, 106, 121, 122, 137, 138, 153,
-  154, 169, 170, 185, 186, 201, 202, 217, 218, 233, 234, 249,
-  250, 265, 266, 281, 282, 297, 298, 313, 314, 329, 330, 345,
-  346, 361, 362, 377, 378, 393, 394, 409, 410, 425, 426, 441,
-  442, 457, 458, 473, 474, 489, 490, 505,  10,  10,  11,  26,
-  27,  42,  43,  58,  59,  74,  75,  90,  91, 106, 107, 122,
-  123, 138, 139, 154, 155, 170, 171, 186, 187, 202, 203, 218,
-  219, 234, 235, 250, 251, 266, 267, 282, 283, 298, 299, 314,
-  315, 330, 331, 346, 347, 362, 363, 378, 379, 394, 395, 410,
-  411, 426, 427, 442, 443, 458, 459, 474, 475, 490, 491, 506,
-  11, 11, 12, 27, 28, 43, 44, 59, 60, 75, 76, 91,
-  92, 107, 108, 123, 124, 139, 140, 155, 156, 171, 172, 187,
-  188, 203, 204, 219, 220, 235, 236, 251, 252, 267, 268, 283,
-  284, 299, 300, 315, 316, 331, 332, 347, 348, 363, 364, 379,
-  380, 395, 396, 411, 412, 427, 428, 443, 444, 459, 460, 475,
-  476, 491, 492, 507,  12,  12,  13,  28,  29,  44,  45,  60,
-  61,  76,  77,  92,  93, 108, 109, 124, 125, 140, 141, 156,
-  157, 172, 173, 188, 189, 204, 205, 220, 221, 236, 237, 252,
-  253, 268, 269, 284, 285, 300, 301, 316, 317, 332, 333, 348,
-  349, 364, 365, 380, 381, 396, 397, 412, 413, 428, 429, 444,
-  445, 460, 461, 476, 477, 492, 493, 508,  13,  13,  14,  29,
-  30,  45,  46,  61,  62,  77,  78,  93,  94, 109, 110, 125,
-  126, 141, 142, 157, 158, 173, 174, 189, 190, 205, 206, 221,
-  222, 237, 238, 253, 254, 269, 270, 285, 286, 301, 302, 317,
-  318, 333, 334, 349, 350, 365, 366, 381, 382, 397, 398, 413,
-  414, 429, 430, 445, 446, 461, 462, 477, 478, 493, 494, 509,
-  14, 14, 15, 30, 31, 46, 47, 62, 63, 78, 79, 94,
-  95, 110, 111, 126, 127, 142, 143, 158, 159, 174, 175, 190,
-  191, 206, 207, 222, 223, 238, 239, 254, 255, 270, 271, 286,
-  287, 302, 303, 318, 319, 334, 335, 350, 351, 366, 367, 382,
-  383, 398, 399, 414, 415, 430, 431, 446, 447, 462, 463, 478,
-  479, 494, 495, 510,
-  0, 0
+  0,   0,   0,   0,   16,  16,  32,  32,  48,  48,  64,  64,  80,  80,  96,
+  96,  112, 112, 128, 128, 144, 144, 160, 160, 176, 176, 192, 192, 208, 208,
+  224, 224, 240, 240, 256, 256, 272, 272, 288, 288, 304, 304, 320, 320, 336,
+  336, 352, 352, 368, 368, 384, 384, 400, 400, 416, 416, 432, 432, 448, 448,
+  464, 464, 480, 480, 0,   0,   1,   16,  17,  32,  33,  48,  49,  64,  65,
+  80,  81,  96,  97,  112, 113, 128, 129, 144, 145, 160, 161, 176, 177, 192,
+  193, 208, 209, 224, 225, 240, 241, 256, 257, 272, 273, 288, 289, 304, 305,
+  320, 321, 336, 337, 352, 353, 368, 369, 384, 385, 400, 401, 416, 417, 432,
+  433, 448, 449, 464, 465, 480, 481, 496, 1,   1,   2,   17,  18,  33,  34,
+  49,  50,  65,  66,  81,  82,  97,  98,  113, 114, 129, 130, 145, 146, 161,
+  162, 177, 178, 193, 194, 209, 210, 225, 226, 241, 242, 257, 258, 273, 274,
+  289, 290, 305, 306, 321, 322, 337, 338, 353, 354, 369, 370, 385, 386, 401,
+  402, 417, 418, 433, 434, 449, 450, 465, 466, 481, 482, 497, 2,   2,   3,
+  18,  19,  34,  35,  50,  51,  66,  67,  82,  83,  98,  99,  114, 115, 130,
+  131, 146, 147, 162, 163, 178, 179, 194, 195, 210, 211, 226, 227, 242, 243,
+  258, 259, 274, 275, 290, 291, 306, 307, 322, 323, 338, 339, 354, 355, 370,
+  371, 386, 387, 402, 403, 418, 419, 434, 435, 450, 451, 466, 467, 482, 483,
+  498, 3,   3,   4,   19,  20,  35,  36,  51,  52,  67,  68,  83,  84,  99,
+  100, 115, 116, 131, 132, 147, 148, 163, 164, 179, 180, 195, 196, 211, 212,
+  227, 228, 243, 244, 259, 260, 275, 276, 291, 292, 307, 308, 323, 324, 339,
+  340, 355, 356, 371, 372, 387, 388, 403, 404, 419, 420, 435, 436, 451, 452,
+  467, 468, 483, 484, 499, 4,   4,   5,   20,  21,  36,  37,  52,  53,  68,
+  69,  84,  85,  100, 101, 116, 117, 132, 133, 148, 149, 164, 165, 180, 181,
+  196, 197, 212, 213, 228, 229, 244, 245, 260, 261, 276, 277, 292, 293, 308,
+  309, 324, 325, 340, 341, 356, 357, 372, 373, 388, 389, 404, 405, 420, 421,
+  436, 437, 452, 453, 468, 469, 484, 485, 500, 5,   5,   6,   21,  22,  37,
+  38,  53,  54,  69,  70,  85,  86,  101, 102, 117, 118, 133, 134, 149, 150,
+  165, 166, 181, 182, 197, 198, 213, 214, 229, 230, 245, 246, 261, 262, 277,
+  278, 293, 294, 309, 310, 325, 326, 341, 342, 357, 358, 373, 374, 389, 390,
+  405, 406, 421, 422, 437, 438, 453, 454, 469, 470, 485, 486, 501, 6,   6,
+  7,   22,  23,  38,  39,  54,  55,  70,  71,  86,  87,  102, 103, 118, 119,
+  134, 135, 150, 151, 166, 167, 182, 183, 198, 199, 214, 215, 230, 231, 246,
+  247, 262, 263, 278, 279, 294, 295, 310, 311, 326, 327, 342, 343, 358, 359,
+  374, 375, 390, 391, 406, 407, 422, 423, 438, 439, 454, 455, 470, 471, 486,
+  487, 502, 7,   7,   8,   23,  24,  39,  40,  55,  56,  71,  72,  87,  88,
+  103, 104, 119, 120, 135, 136, 151, 152, 167, 168, 183, 184, 199, 200, 215,
+  216, 231, 232, 247, 248, 263, 264, 279, 280, 295, 296, 311, 312, 327, 328,
+  343, 344, 359, 360, 375, 376, 391, 392, 407, 408, 423, 424, 439, 440, 455,
+  456, 471, 472, 487, 488, 503, 8,   8,   9,   24,  25,  40,  41,  56,  57,
+  72,  73,  88,  89,  104, 105, 120, 121, 136, 137, 152, 153, 168, 169, 184,
+  185, 200, 201, 216, 217, 232, 233, 248, 249, 264, 265, 280, 281, 296, 297,
+  312, 313, 328, 329, 344, 345, 360, 361, 376, 377, 392, 393, 408, 409, 424,
+  425, 440, 441, 456, 457, 472, 473, 488, 489, 504, 9,   9,   10,  25,  26,
+  41,  42,  57,  58,  73,  74,  89,  90,  105, 106, 121, 122, 137, 138, 153,
+  154, 169, 170, 185, 186, 201, 202, 217, 218, 233, 234, 249, 250, 265, 266,
+  281, 282, 297, 298, 313, 314, 329, 330, 345, 346, 361, 362, 377, 378, 393,
+  394, 409, 410, 425, 426, 441, 442, 457, 458, 473, 474, 489, 490, 505, 10,
+  10,  11,  26,  27,  42,  43,  58,  59,  74,  75,  90,  91,  106, 107, 122,
+  123, 138, 139, 154, 155, 170, 171, 186, 187, 202, 203, 218, 219, 234, 235,
+  250, 251, 266, 267, 282, 283, 298, 299, 314, 315, 330, 331, 346, 347, 362,
+  363, 378, 379, 394, 395, 410, 411, 426, 427, 442, 443, 458, 459, 474, 475,
+  490, 491, 506, 11,  11,  12,  27,  28,  43,  44,  59,  60,  75,  76,  91,
+  92,  107, 108, 123, 124, 139, 140, 155, 156, 171, 172, 187, 188, 203, 204,
+  219, 220, 235, 236, 251, 252, 267, 268, 283, 284, 299, 300, 315, 316, 331,
+  332, 347, 348, 363, 364, 379, 380, 395, 396, 411, 412, 427, 428, 443, 444,
+  459, 460, 475, 476, 491, 492, 507, 12,  12,  13,  28,  29,  44,  45,  60,
+  61,  76,  77,  92,  93,  108, 109, 124, 125, 140, 141, 156, 157, 172, 173,
+  188, 189, 204, 205, 220, 221, 236, 237, 252, 253, 268, 269, 284, 285, 300,
+  301, 316, 317, 332, 333, 348, 349, 364, 365, 380, 381, 396, 397, 412, 413,
+  428, 429, 444, 445, 460, 461, 476, 477, 492, 493, 508, 13,  13,  14,  29,
+  30,  45,  46,  61,  62,  77,  78,  93,  94,  109, 110, 125, 126, 141, 142,
+  157, 158, 173, 174, 189, 190, 205, 206, 221, 222, 237, 238, 253, 254, 269,
+  270, 285, 286, 301, 302, 317, 318, 333, 334, 349, 350, 365, 366, 381, 382,
+  397, 398, 413, 414, 429, 430, 445, 446, 461, 462, 477, 478, 493, 494, 509,
+  14,  14,  15,  30,  31,  46,  47,  62,  63,  78,  79,  94,  95,  110, 111,
+  126, 127, 142, 143, 158, 159, 174, 175, 190, 191, 206, 207, 222, 223, 238,
+  239, 254, 255, 270, 271, 286, 287, 302, 303, 318, 319, 334, 335, 350, 351,
+  366, 367, 382, 383, 398, 399, 414, 415, 430, 431, 446, 447, 462, 463, 478,
+  479, 494, 495, 510, 0,   0
 };
 
 DECLARE_ALIGNED(16, static const int16_t,
                 mcol_scan_32x16_neighbors[513 * MAX_NEIGHBORS]) = {
-  0,   0,   0,   0,  32,  32,  64,  64,  96,  96, 128, 128,
-  160, 160, 192, 192, 224, 224, 256, 256, 288, 288, 320, 320,
-  352, 352, 384, 384, 416, 416, 448, 448,   0,   0,   1,  32,
-  33,  64,  65,  96,  97, 128, 129, 160, 161, 192, 193, 224,
-  225, 256, 257, 288, 289, 320, 321, 352, 353, 384, 385, 416,
-  417, 448, 449, 480,   1,   1,   2,  33,  34,  65,  66,  97,
-  98, 129, 130, 161, 162, 193, 194, 225, 226, 257, 258, 289,
-  290, 321, 322, 353, 354, 385, 386, 417, 418, 449, 450, 481,
-  2,   2,   3,  34,  35,  66,  67,  98,  99, 130, 131, 162,
-  163, 194, 195, 226, 227, 258, 259, 290, 291, 322, 323, 354,
-  355, 386, 387, 418, 419, 450, 451, 482,   3,   3,   4,  35,
-  36,  67,  68,  99, 100, 131, 132, 163, 164, 195, 196, 227,
-  228, 259, 260, 291, 292, 323, 324, 355, 356, 387, 388, 419,
-  420, 451, 452, 483,   4,   4,   5,  36,  37,  68,  69, 100,
-  101, 132, 133, 164, 165, 196, 197, 228, 229, 260, 261, 292,
-  293, 324, 325, 356, 357, 388, 389, 420, 421, 452, 453, 484,
-  5,   5,   6,  37,  38,  69,  70, 101, 102, 133, 134, 165,
-  166, 197, 198, 229, 230, 261, 262, 293, 294, 325, 326, 357,
-  358, 389, 390, 421, 422, 453, 454, 485,   6,   6,   7,  38,
-  39,  70,  71, 102, 103, 134, 135, 166, 167, 198, 199, 230,
-  231, 262, 263, 294, 295, 326, 327, 358, 359, 390, 391, 422,
-  423, 454, 455, 486,   7,   7,   8,  39,  40,  71,  72, 103,
-  104, 135, 136, 167, 168, 199, 200, 231, 232, 263, 264, 295,
-  296, 327, 328, 359, 360, 391, 392, 423, 424, 455, 456, 487,
-  8,   8,   9,  40,  41,  72,  73, 104, 105, 136, 137, 168,
-  169, 200, 201, 232, 233, 264, 265, 296, 297, 328, 329, 360,
-  361, 392, 393, 424, 425, 456, 457, 488,   9,   9,  10,  41,
-  42,  73,  74, 105, 106, 137, 138, 169, 170, 201, 202, 233,
-  234, 265, 266, 297, 298, 329, 330, 361, 362, 393, 394, 425,
-  426, 457, 458, 489,  10,  10,  11,  42,  43,  74,  75, 106,
-  107, 138, 139, 170, 171, 202, 203, 234, 235, 266, 267, 298,
-  299, 330, 331, 362, 363, 394, 395, 426, 427, 458, 459, 490,
-  11,  11,  12,  43,  44,  75,  76, 107, 108, 139, 140, 171,
-  172, 203, 204, 235, 236, 267, 268, 299, 300, 331, 332, 363,
-  364, 395, 396, 427, 428, 459, 460, 491,  12,  12,  13,  44,
-  45,  76,  77, 108, 109, 140, 141, 172, 173, 204, 205, 236,
-  237, 268, 269, 300, 301, 332, 333, 364, 365, 396, 397, 428,
-  429, 460, 461, 492,  13,  13,  14,  45,  46,  77,  78, 109,
-  110, 141, 142, 173, 174, 205, 206, 237, 238, 269, 270, 301,
-  302, 333, 334, 365, 366, 397, 398, 429, 430, 461, 462, 493,
-  14,  14,  15,  46,  47,  78,  79, 110, 111, 142, 143, 174,
-  175, 206, 207, 238, 239, 270, 271, 302, 303, 334, 335, 366,
-  367, 398, 399, 430, 431, 462, 463, 494,  15,  15,  16,  47,
-  48,  79,  80, 111, 112, 143, 144, 175, 176, 207, 208, 239,
-  240, 271, 272, 303, 304, 335, 336, 367, 368, 399, 400, 431,
-  432, 463, 464, 495,  16,  16,  17,  48,  49,  80,  81, 112,
-  113, 144, 145, 176, 177, 208, 209, 240, 241, 272, 273, 304,
-  305, 336, 337, 368, 369, 400, 401, 432, 433, 464, 465, 496,
-  17,  17,  18,  49,  50,  81,  82, 113, 114, 145, 146, 177,
-  178, 209, 210, 241, 242, 273, 274, 305, 306, 337, 338, 369,
-  370, 401, 402, 433, 434, 465, 466, 497,  18,  18,  19,  50,
-  51,  82,  83, 114, 115, 146, 147, 178, 179, 210, 211, 242,
-  243, 274, 275, 306, 307, 338, 339, 370, 371, 402, 403, 434,
-  435, 466, 467, 498,  19,  19,  20,  51,  52,  83,  84, 115,
-  116, 147, 148, 179, 180, 211, 212, 243, 244, 275, 276, 307,
-  308, 339, 340, 371, 372, 403, 404, 435, 436, 467, 468, 499,
-  20,  20,  21,  52,  53,  84,  85, 116, 117, 148, 149, 180,
-  181, 212, 213, 244, 245, 276, 277, 308, 309, 340, 341, 372,
-  373, 404, 405, 436, 437, 468, 469, 500,  21,  21,  22,  53,
-  54,  85,  86, 117, 118, 149, 150, 181, 182, 213, 214, 245,
-  246, 277, 278, 309, 310, 341, 342, 373, 374, 405, 406, 437,
-  438, 469, 470, 501,  22,  22,  23,  54,  55,  86,  87, 118,
-  119, 150, 151, 182, 183, 214, 215, 246, 247, 278, 279, 310,
-  311, 342, 343, 374, 375, 406, 407, 438, 439, 470, 471, 502,
-  23,  23,  24,  55,  56,  87,  88, 119, 120, 151, 152, 183,
-  184, 215, 216, 247, 248, 279, 280, 311, 312, 343, 344, 375,
-  376, 407, 408, 439, 440, 471, 472, 503,  24,  24,  25,  56,
-  57,  88,  89, 120, 121, 152, 153, 184, 185, 216, 217, 248,
-  249, 280, 281, 312, 313, 344, 345, 376, 377, 408, 409, 440,
-  441, 472, 473, 504,  25,  25,  26,  57,  58,  89,  90, 121,
-  122, 153, 154, 185, 186, 217, 218, 249, 250, 281, 282, 313,
-  314, 345, 346, 377, 378, 409, 410, 441, 442, 473, 474, 505,
-  26,  26,  27,  58,  59,  90,  91, 122, 123, 154, 155, 186,
-  187, 218, 219, 250, 251, 282, 283, 314, 315, 346, 347, 378,
-  379, 410, 411, 442, 443, 474, 475, 506,  27,  27,  28,  59,
-  60,  91,  92, 123, 124, 155, 156, 187, 188, 219, 220, 251,
-  252, 283, 284, 315, 316, 347, 348, 379, 380, 411, 412, 443,
-  444, 475, 476, 507,  28,  28,  29,  60,  61,  92,  93, 124,
-  125, 156, 157, 188, 189, 220, 221, 252, 253, 284, 285, 316,
-  317, 348, 349, 380, 381, 412, 413, 444, 445, 476, 477, 508,
-  29,  29,  30,  61,  62,  93,  94, 125, 126, 157, 158, 189,
-  190, 221, 222, 253, 254, 285, 286, 317, 318, 349, 350, 381,
-  382, 413, 414, 445, 446, 477, 478, 509,  30,  30,  31,  62,
-  63,  94,  95, 126, 127, 158, 159, 190, 191, 222, 223, 254,
-  255, 286, 287, 318, 319, 350, 351, 382, 383, 414, 415, 446,
-  447, 478, 479, 510,
-  0, 0
+  0,   0,   0,   0,   32,  32,  64,  64,  96,  96,  128, 128, 160, 160, 192,
+  192, 224, 224, 256, 256, 288, 288, 320, 320, 352, 352, 384, 384, 416, 416,
+  448, 448, 0,   0,   1,   32,  33,  64,  65,  96,  97,  128, 129, 160, 161,
+  192, 193, 224, 225, 256, 257, 288, 289, 320, 321, 352, 353, 384, 385, 416,
+  417, 448, 449, 480, 1,   1,   2,   33,  34,  65,  66,  97,  98,  129, 130,
+  161, 162, 193, 194, 225, 226, 257, 258, 289, 290, 321, 322, 353, 354, 385,
+  386, 417, 418, 449, 450, 481, 2,   2,   3,   34,  35,  66,  67,  98,  99,
+  130, 131, 162, 163, 194, 195, 226, 227, 258, 259, 290, 291, 322, 323, 354,
+  355, 386, 387, 418, 419, 450, 451, 482, 3,   3,   4,   35,  36,  67,  68,
+  99,  100, 131, 132, 163, 164, 195, 196, 227, 228, 259, 260, 291, 292, 323,
+  324, 355, 356, 387, 388, 419, 420, 451, 452, 483, 4,   4,   5,   36,  37,
+  68,  69,  100, 101, 132, 133, 164, 165, 196, 197, 228, 229, 260, 261, 292,
+  293, 324, 325, 356, 357, 388, 389, 420, 421, 452, 453, 484, 5,   5,   6,
+  37,  38,  69,  70,  101, 102, 133, 134, 165, 166, 197, 198, 229, 230, 261,
+  262, 293, 294, 325, 326, 357, 358, 389, 390, 421, 422, 453, 454, 485, 6,
+  6,   7,   38,  39,  70,  71,  102, 103, 134, 135, 166, 167, 198, 199, 230,
+  231, 262, 263, 294, 295, 326, 327, 358, 359, 390, 391, 422, 423, 454, 455,
+  486, 7,   7,   8,   39,  40,  71,  72,  103, 104, 135, 136, 167, 168, 199,
+  200, 231, 232, 263, 264, 295, 296, 327, 328, 359, 360, 391, 392, 423, 424,
+  455, 456, 487, 8,   8,   9,   40,  41,  72,  73,  104, 105, 136, 137, 168,
+  169, 200, 201, 232, 233, 264, 265, 296, 297, 328, 329, 360, 361, 392, 393,
+  424, 425, 456, 457, 488, 9,   9,   10,  41,  42,  73,  74,  105, 106, 137,
+  138, 169, 170, 201, 202, 233, 234, 265, 266, 297, 298, 329, 330, 361, 362,
+  393, 394, 425, 426, 457, 458, 489, 10,  10,  11,  42,  43,  74,  75,  106,
+  107, 138, 139, 170, 171, 202, 203, 234, 235, 266, 267, 298, 299, 330, 331,
+  362, 363, 394, 395, 426, 427, 458, 459, 490, 11,  11,  12,  43,  44,  75,
+  76,  107, 108, 139, 140, 171, 172, 203, 204, 235, 236, 267, 268, 299, 300,
+  331, 332, 363, 364, 395, 396, 427, 428, 459, 460, 491, 12,  12,  13,  44,
+  45,  76,  77,  108, 109, 140, 141, 172, 173, 204, 205, 236, 237, 268, 269,
+  300, 301, 332, 333, 364, 365, 396, 397, 428, 429, 460, 461, 492, 13,  13,
+  14,  45,  46,  77,  78,  109, 110, 141, 142, 173, 174, 205, 206, 237, 238,
+  269, 270, 301, 302, 333, 334, 365, 366, 397, 398, 429, 430, 461, 462, 493,
+  14,  14,  15,  46,  47,  78,  79,  110, 111, 142, 143, 174, 175, 206, 207,
+  238, 239, 270, 271, 302, 303, 334, 335, 366, 367, 398, 399, 430, 431, 462,
+  463, 494, 15,  15,  16,  47,  48,  79,  80,  111, 112, 143, 144, 175, 176,
+  207, 208, 239, 240, 271, 272, 303, 304, 335, 336, 367, 368, 399, 400, 431,
+  432, 463, 464, 495, 16,  16,  17,  48,  49,  80,  81,  112, 113, 144, 145,
+  176, 177, 208, 209, 240, 241, 272, 273, 304, 305, 336, 337, 368, 369, 400,
+  401, 432, 433, 464, 465, 496, 17,  17,  18,  49,  50,  81,  82,  113, 114,
+  145, 146, 177, 178, 209, 210, 241, 242, 273, 274, 305, 306, 337, 338, 369,
+  370, 401, 402, 433, 434, 465, 466, 497, 18,  18,  19,  50,  51,  82,  83,
+  114, 115, 146, 147, 178, 179, 210, 211, 242, 243, 274, 275, 306, 307, 338,
+  339, 370, 371, 402, 403, 434, 435, 466, 467, 498, 19,  19,  20,  51,  52,
+  83,  84,  115, 116, 147, 148, 179, 180, 211, 212, 243, 244, 275, 276, 307,
+  308, 339, 340, 371, 372, 403, 404, 435, 436, 467, 468, 499, 20,  20,  21,
+  52,  53,  84,  85,  116, 117, 148, 149, 180, 181, 212, 213, 244, 245, 276,
+  277, 308, 309, 340, 341, 372, 373, 404, 405, 436, 437, 468, 469, 500, 21,
+  21,  22,  53,  54,  85,  86,  117, 118, 149, 150, 181, 182, 213, 214, 245,
+  246, 277, 278, 309, 310, 341, 342, 373, 374, 405, 406, 437, 438, 469, 470,
+  501, 22,  22,  23,  54,  55,  86,  87,  118, 119, 150, 151, 182, 183, 214,
+  215, 246, 247, 278, 279, 310, 311, 342, 343, 374, 375, 406, 407, 438, 439,
+  470, 471, 502, 23,  23,  24,  55,  56,  87,  88,  119, 120, 151, 152, 183,
+  184, 215, 216, 247, 248, 279, 280, 311, 312, 343, 344, 375, 376, 407, 408,
+  439, 440, 471, 472, 503, 24,  24,  25,  56,  57,  88,  89,  120, 121, 152,
+  153, 184, 185, 216, 217, 248, 249, 280, 281, 312, 313, 344, 345, 376, 377,
+  408, 409, 440, 441, 472, 473, 504, 25,  25,  26,  57,  58,  89,  90,  121,
+  122, 153, 154, 185, 186, 217, 218, 249, 250, 281, 282, 313, 314, 345, 346,
+  377, 378, 409, 410, 441, 442, 473, 474, 505, 26,  26,  27,  58,  59,  90,
+  91,  122, 123, 154, 155, 186, 187, 218, 219, 250, 251, 282, 283, 314, 315,
+  346, 347, 378, 379, 410, 411, 442, 443, 474, 475, 506, 27,  27,  28,  59,
+  60,  91,  92,  123, 124, 155, 156, 187, 188, 219, 220, 251, 252, 283, 284,
+  315, 316, 347, 348, 379, 380, 411, 412, 443, 444, 475, 476, 507, 28,  28,
+  29,  60,  61,  92,  93,  124, 125, 156, 157, 188, 189, 220, 221, 252, 253,
+  284, 285, 316, 317, 348, 349, 380, 381, 412, 413, 444, 445, 476, 477, 508,
+  29,  29,  30,  61,  62,  93,  94,  125, 126, 157, 158, 189, 190, 221, 222,
+  253, 254, 285, 286, 317, 318, 349, 350, 381, 382, 413, 414, 445, 446, 477,
+  478, 509, 30,  30,  31,  62,  63,  94,  95,  126, 127, 158, 159, 190, 191,
+  222, 223, 254, 255, 286, 287, 318, 319, 350, 351, 382, 383, 414, 415, 446,
+  447, 478, 479, 510, 0,   0
 };
 
 DECLARE_ALIGNED(16, static const int16_t,
                 mrow_scan_16x32_neighbors[513 * MAX_NEIGHBORS]) = {
-  0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4,
-  5,  5,  6,  6,  7,  7,  8,  8,  9,  9, 10, 10,
-  11, 11, 12, 12, 13, 13, 14, 14,  0,  0,  1, 16,
-  2, 17,  3, 18,  4, 19,  5, 20,  6, 21,  7, 22,
-  8, 23,  9, 24, 10, 25, 11, 26, 12, 27, 13, 28,
-  14, 29, 15, 30, 16, 16, 17, 32, 18, 33, 19, 34,
-  20, 35, 21, 36, 22, 37, 23, 38, 24, 39, 25, 40,
-  26, 41, 27, 42, 28, 43, 29, 44, 30, 45, 31, 46,
-  32, 32, 33, 48, 34, 49, 35, 50, 36, 51, 37, 52,
-  38, 53, 39, 54, 40, 55, 41, 56, 42, 57, 43, 58,
-  44, 59, 45, 60, 46, 61, 47, 62, 48, 48, 49, 64,
-  50, 65, 51, 66, 52, 67, 53, 68, 54, 69, 55, 70,
-  56, 71, 57, 72, 58, 73, 59, 74, 60, 75, 61, 76,
-  62, 77, 63, 78, 64, 64, 65, 80, 66, 81, 67, 82,
-  68, 83, 69, 84, 70, 85, 71, 86, 72, 87, 73, 88,
-  74, 89, 75, 90, 76, 91, 77, 92, 78, 93, 79, 94,
-  80,  80,  81,  96,  82,  97,  83,  98,  84,  99,  85, 100,
-  86, 101,  87, 102,  88, 103,  89, 104,  90, 105,  91, 106,
-  92, 107,  93, 108,  94, 109,  95, 110,  96,  96,  97, 112,
-  98, 113,  99, 114, 100, 115, 101, 116, 102, 117, 103, 118,
-  104, 119, 105, 120, 106, 121, 107, 122, 108, 123, 109, 124,
-  110, 125, 111, 126, 112, 112, 113, 128, 114, 129, 115, 130,
-  116, 131, 117, 132, 118, 133, 119, 134, 120, 135, 121, 136,
-  122, 137, 123, 138, 124, 139, 125, 140, 126, 141, 127, 142,
-  128, 128, 129, 144, 130, 145, 131, 146, 132, 147, 133, 148,
-  134, 149, 135, 150, 136, 151, 137, 152, 138, 153, 139, 154,
-  140, 155, 141, 156, 142, 157, 143, 158, 144, 144, 145, 160,
-  146, 161, 147, 162, 148, 163, 149, 164, 150, 165, 151, 166,
-  152, 167, 153, 168, 154, 169, 155, 170, 156, 171, 157, 172,
-  158, 173, 159, 174, 160, 160, 161, 176, 162, 177, 163, 178,
-  164, 179, 165, 180, 166, 181, 167, 182, 168, 183, 169, 184,
-  170, 185, 171, 186, 172, 187, 173, 188, 174, 189, 175, 190,
-  176, 176, 177, 192, 178, 193, 179, 194, 180, 195, 181, 196,
-  182, 197, 183, 198, 184, 199, 185, 200, 186, 201, 187, 202,
-  188, 203, 189, 204, 190, 205, 191, 206, 192, 192, 193, 208,
-  194, 209, 195, 210, 196, 211, 197, 212, 198, 213, 199, 214,
-  200, 215, 201, 216, 202, 217, 203, 218, 204, 219, 205, 220,
-  206, 221, 207, 222, 208, 208, 209, 224, 210, 225, 211, 226,
-  212, 227, 213, 228, 214, 229, 215, 230, 216, 231, 217, 232,
-  218, 233, 219, 234, 220, 235, 221, 236, 222, 237, 223, 238,
-  224, 224, 225, 240, 226, 241, 227, 242, 228, 243, 229, 244,
-  230, 245, 231, 246, 232, 247, 233, 248, 234, 249, 235, 250,
-  236, 251, 237, 252, 238, 253, 239, 254, 240, 240, 241, 256,
-  242, 257, 243, 258, 244, 259, 245, 260, 246, 261, 247, 262,
-  248, 263, 249, 264, 250, 265, 251, 266, 252, 267, 253, 268,
-  254, 269, 255, 270, 256, 256, 257, 272, 258, 273, 259, 274,
-  260, 275, 261, 276, 262, 277, 263, 278, 264, 279, 265, 280,
-  266, 281, 267, 282, 268, 283, 269, 284, 270, 285, 271, 286,
-  272, 272, 273, 288, 274, 289, 275, 290, 276, 291, 277, 292,
-  278, 293, 279, 294, 280, 295, 281, 296, 282, 297, 283, 298,
-  284, 299, 285, 300, 286, 301, 287, 302, 288, 288, 289, 304,
-  290, 305, 291, 306, 292, 307, 293, 308, 294, 309, 295, 310,
-  296, 311, 297, 312, 298, 313, 299, 314, 300, 315, 301, 316,
-  302, 317, 303, 318, 304, 304, 305, 320, 306, 321, 307, 322,
-  308, 323, 309, 324, 310, 325, 311, 326, 312, 327, 313, 328,
-  314, 329, 315, 330, 316, 331, 317, 332, 318, 333, 319, 334,
-  320, 320, 321, 336, 322, 337, 323, 338, 324, 339, 325, 340,
-  326, 341, 327, 342, 328, 343, 329, 344, 330, 345, 331, 346,
-  332, 347, 333, 348, 334, 349, 335, 350, 336, 336, 337, 352,
-  338, 353, 339, 354, 340, 355, 341, 356, 342, 357, 343, 358,
-  344, 359, 345, 360, 346, 361, 347, 362, 348, 363, 349, 364,
-  350, 365, 351, 366, 352, 352, 353, 368, 354, 369, 355, 370,
-  356, 371, 357, 372, 358, 373, 359, 374, 360, 375, 361, 376,
-  362, 377, 363, 378, 364, 379, 365, 380, 366, 381, 367, 382,
-  368, 368, 369, 384, 370, 385, 371, 386, 372, 387, 373, 388,
-  374, 389, 375, 390, 376, 391, 377, 392, 378, 393, 379, 394,
-  380, 395, 381, 396, 382, 397, 383, 398, 384, 384, 385, 400,
-  386, 401, 387, 402, 388, 403, 389, 404, 390, 405, 391, 406,
-  392, 407, 393, 408, 394, 409, 395, 410, 396, 411, 397, 412,
-  398, 413, 399, 414, 400, 400, 401, 416, 402, 417, 403, 418,
-  404, 419, 405, 420, 406, 421, 407, 422, 408, 423, 409, 424,
-  410, 425, 411, 426, 412, 427, 413, 428, 414, 429, 415, 430,
-  416, 416, 417, 432, 418, 433, 419, 434, 420, 435, 421, 436,
-  422, 437, 423, 438, 424, 439, 425, 440, 426, 441, 427, 442,
-  428, 443, 429, 444, 430, 445, 431, 446, 432, 432, 433, 448,
-  434, 449, 435, 450, 436, 451, 437, 452, 438, 453, 439, 454,
-  440, 455, 441, 456, 442, 457, 443, 458, 444, 459, 445, 460,
-  446, 461, 447, 462, 448, 448, 449, 464, 450, 465, 451, 466,
-  452, 467, 453, 468, 454, 469, 455, 470, 456, 471, 457, 472,
-  458, 473, 459, 474, 460, 475, 461, 476, 462, 477, 463, 478,
-  464, 464, 465, 480, 466, 481, 467, 482, 468, 483, 469, 484,
-  470, 485, 471, 486, 472, 487, 473, 488, 474, 489, 475, 490,
-  476, 491, 477, 492, 478, 493, 479, 494, 480, 480, 481, 496,
-  482, 497, 483, 498, 484, 499, 485, 500, 486, 501, 487, 502,
-  488, 503, 489, 504, 490, 505, 491, 506, 492, 507, 493, 508,
-  494, 509, 495, 510,
-  0, 0
+  0,   0,   0,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,
+  6,   7,   7,   8,   8,   9,   9,   10,  10,  11,  11,  12,  12,  13,  13,
+  14,  14,  0,   0,   1,   16,  2,   17,  3,   18,  4,   19,  5,   20,  6,
+  21,  7,   22,  8,   23,  9,   24,  10,  25,  11,  26,  12,  27,  13,  28,
+  14,  29,  15,  30,  16,  16,  17,  32,  18,  33,  19,  34,  20,  35,  21,
+  36,  22,  37,  23,  38,  24,  39,  25,  40,  26,  41,  27,  42,  28,  43,
+  29,  44,  30,  45,  31,  46,  32,  32,  33,  48,  34,  49,  35,  50,  36,
+  51,  37,  52,  38,  53,  39,  54,  40,  55,  41,  56,  42,  57,  43,  58,
+  44,  59,  45,  60,  46,  61,  47,  62,  48,  48,  49,  64,  50,  65,  51,
+  66,  52,  67,  53,  68,  54,  69,  55,  70,  56,  71,  57,  72,  58,  73,
+  59,  74,  60,  75,  61,  76,  62,  77,  63,  78,  64,  64,  65,  80,  66,
+  81,  67,  82,  68,  83,  69,  84,  70,  85,  71,  86,  72,  87,  73,  88,
+  74,  89,  75,  90,  76,  91,  77,  92,  78,  93,  79,  94,  80,  80,  81,
+  96,  82,  97,  83,  98,  84,  99,  85,  100, 86,  101, 87,  102, 88,  103,
+  89,  104, 90,  105, 91,  106, 92,  107, 93,  108, 94,  109, 95,  110, 96,
+  96,  97,  112, 98,  113, 99,  114, 100, 115, 101, 116, 102, 117, 103, 118,
+  104, 119, 105, 120, 106, 121, 107, 122, 108, 123, 109, 124, 110, 125, 111,
+  126, 112, 112, 113, 128, 114, 129, 115, 130, 116, 131, 117, 132, 118, 133,
+  119, 134, 120, 135, 121, 136, 122, 137, 123, 138, 124, 139, 125, 140, 126,
+  141, 127, 142, 128, 128, 129, 144, 130, 145, 131, 146, 132, 147, 133, 148,
+  134, 149, 135, 150, 136, 151, 137, 152, 138, 153, 139, 154, 140, 155, 141,
+  156, 142, 157, 143, 158, 144, 144, 145, 160, 146, 161, 147, 162, 148, 163,
+  149, 164, 150, 165, 151, 166, 152, 167, 153, 168, 154, 169, 155, 170, 156,
+  171, 157, 172, 158, 173, 159, 174, 160, 160, 161, 176, 162, 177, 163, 178,
+  164, 179, 165, 180, 166, 181, 167, 182, 168, 183, 169, 184, 170, 185, 171,
+  186, 172, 187, 173, 188, 174, 189, 175, 190, 176, 176, 177, 192, 178, 193,
+  179, 194, 180, 195, 181, 196, 182, 197, 183, 198, 184, 199, 185, 200, 186,
+  201, 187, 202, 188, 203, 189, 204, 190, 205, 191, 206, 192, 192, 193, 208,
+  194, 209, 195, 210, 196, 211, 197, 212, 198, 213, 199, 214, 200, 215, 201,
+  216, 202, 217, 203, 218, 204, 219, 205, 220, 206, 221, 207, 222, 208, 208,
+  209, 224, 210, 225, 211, 226, 212, 227, 213, 228, 214, 229, 215, 230, 216,
+  231, 217, 232, 218, 233, 219, 234, 220, 235, 221, 236, 222, 237, 223, 238,
+  224, 224, 225, 240, 226, 241, 227, 242, 228, 243, 229, 244, 230, 245, 231,
+  246, 232, 247, 233, 248, 234, 249, 235, 250, 236, 251, 237, 252, 238, 253,
+  239, 254, 240, 240, 241, 256, 242, 257, 243, 258, 244, 259, 245, 260, 246,
+  261, 247, 262, 248, 263, 249, 264, 250, 265, 251, 266, 252, 267, 253, 268,
+  254, 269, 255, 270, 256, 256, 257, 272, 258, 273, 259, 274, 260, 275, 261,
+  276, 262, 277, 263, 278, 264, 279, 265, 280, 266, 281, 267, 282, 268, 283,
+  269, 284, 270, 285, 271, 286, 272, 272, 273, 288, 274, 289, 275, 290, 276,
+  291, 277, 292, 278, 293, 279, 294, 280, 295, 281, 296, 282, 297, 283, 298,
+  284, 299, 285, 300, 286, 301, 287, 302, 288, 288, 289, 304, 290, 305, 291,
+  306, 292, 307, 293, 308, 294, 309, 295, 310, 296, 311, 297, 312, 298, 313,
+  299, 314, 300, 315, 301, 316, 302, 317, 303, 318, 304, 304, 305, 320, 306,
+  321, 307, 322, 308, 323, 309, 324, 310, 325, 311, 326, 312, 327, 313, 328,
+  314, 329, 315, 330, 316, 331, 317, 332, 318, 333, 319, 334, 320, 320, 321,
+  336, 322, 337, 323, 338, 324, 339, 325, 340, 326, 341, 327, 342, 328, 343,
+  329, 344, 330, 345, 331, 346, 332, 347, 333, 348, 334, 349, 335, 350, 336,
+  336, 337, 352, 338, 353, 339, 354, 340, 355, 341, 356, 342, 357, 343, 358,
+  344, 359, 345, 360, 346, 361, 347, 362, 348, 363, 349, 364, 350, 365, 351,
+  366, 352, 352, 353, 368, 354, 369, 355, 370, 356, 371, 357, 372, 358, 373,
+  359, 374, 360, 375, 361, 376, 362, 377, 363, 378, 364, 379, 365, 380, 366,
+  381, 367, 382, 368, 368, 369, 384, 370, 385, 371, 386, 372, 387, 373, 388,
+  374, 389, 375, 390, 376, 391, 377, 392, 378, 393, 379, 394, 380, 395, 381,
+  396, 382, 397, 383, 398, 384, 384, 385, 400, 386, 401, 387, 402, 388, 403,
+  389, 404, 390, 405, 391, 406, 392, 407, 393, 408, 394, 409, 395, 410, 396,
+  411, 397, 412, 398, 413, 399, 414, 400, 400, 401, 416, 402, 417, 403, 418,
+  404, 419, 405, 420, 406, 421, 407, 422, 408, 423, 409, 424, 410, 425, 411,
+  426, 412, 427, 413, 428, 414, 429, 415, 430, 416, 416, 417, 432, 418, 433,
+  419, 434, 420, 435, 421, 436, 422, 437, 423, 438, 424, 439, 425, 440, 426,
+  441, 427, 442, 428, 443, 429, 444, 430, 445, 431, 446, 432, 432, 433, 448,
+  434, 449, 435, 450, 436, 451, 437, 452, 438, 453, 439, 454, 440, 455, 441,
+  456, 442, 457, 443, 458, 444, 459, 445, 460, 446, 461, 447, 462, 448, 448,
+  449, 464, 450, 465, 451, 466, 452, 467, 453, 468, 454, 469, 455, 470, 456,
+  471, 457, 472, 458, 473, 459, 474, 460, 475, 461, 476, 462, 477, 463, 478,
+  464, 464, 465, 480, 466, 481, 467, 482, 468, 483, 469, 484, 470, 485, 471,
+  486, 472, 487, 473, 488, 474, 489, 475, 490, 476, 491, 477, 492, 478, 493,
+  479, 494, 480, 480, 481, 496, 482, 497, 483, 498, 484, 499, 485, 500, 486,
+  501, 487, 502, 488, 503, 489, 504, 490, 505, 491, 506, 492, 507, 493, 508,
+  494, 509, 495, 510, 0,   0
 };
 
 DECLARE_ALIGNED(16, static const int16_t,
                 mrow_scan_32x16_neighbors[513 * MAX_NEIGHBORS]) = {
-  0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4,
-  5,  5,  6,  6,  7,  7,  8,  8,  9,  9, 10, 10,
-  11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16,
-  17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
-  23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28,
-  29, 29, 30, 30,  0,  0,  1, 32,  2, 33,  3, 34,
-  4, 35,  5, 36,  6, 37,  7, 38,  8, 39,  9, 40,
-  10, 41, 11, 42, 12, 43, 13, 44, 14, 45, 15, 46,
-  16, 47, 17, 48, 18, 49, 19, 50, 20, 51, 21, 52,
-  22, 53, 23, 54, 24, 55, 25, 56, 26, 57, 27, 58,
-  28, 59, 29, 60, 30, 61, 31, 62, 32, 32, 33, 64,
-  34, 65, 35, 66, 36, 67, 37, 68, 38, 69, 39, 70,
-  40, 71, 41, 72, 42, 73, 43, 74, 44, 75, 45, 76,
-  46, 77, 47, 78, 48, 79, 49, 80, 50, 81, 51, 82,
-  52, 83, 53, 84, 54, 85, 55, 86, 56, 87, 57, 88,
-  58, 89, 59, 90, 60, 91, 61, 92, 62, 93, 63, 94,
-  64,  64,  65,  96,  66,  97,  67,  98,  68,  99,  69, 100,
-  70, 101,  71, 102,  72, 103,  73, 104,  74, 105,  75, 106,
-  76, 107,  77, 108,  78, 109,  79, 110,  80, 111,  81, 112,
-  82, 113,  83, 114,  84, 115,  85, 116,  86, 117,  87, 118,
-  88, 119,  89, 120,  90, 121,  91, 122,  92, 123,  93, 124,
-  94, 125,  95, 126,  96,  96,  97, 128,  98, 129,  99, 130,
-  100, 131, 101, 132, 102, 133, 103, 134, 104, 135, 105, 136,
-  106, 137, 107, 138, 108, 139, 109, 140, 110, 141, 111, 142,
-  112, 143, 113, 144, 114, 145, 115, 146, 116, 147, 117, 148,
-  118, 149, 119, 150, 120, 151, 121, 152, 122, 153, 123, 154,
-  124, 155, 125, 156, 126, 157, 127, 158, 128, 128, 129, 160,
-  130, 161, 131, 162, 132, 163, 133, 164, 134, 165, 135, 166,
-  136, 167, 137, 168, 138, 169, 139, 170, 140, 171, 141, 172,
-  142, 173, 143, 174, 144, 175, 145, 176, 146, 177, 147, 178,
-  148, 179, 149, 180, 150, 181, 151, 182, 152, 183, 153, 184,
-  154, 185, 155, 186, 156, 187, 157, 188, 158, 189, 159, 190,
-  160, 160, 161, 192, 162, 193, 163, 194, 164, 195, 165, 196,
-  166, 197, 167, 198, 168, 199, 169, 200, 170, 201, 171, 202,
-  172, 203, 173, 204, 174, 205, 175, 206, 176, 207, 177, 208,
-  178, 209, 179, 210, 180, 211, 181, 212, 182, 213, 183, 214,
-  184, 215, 185, 216, 186, 217, 187, 218, 188, 219, 189, 220,
-  190, 221, 191, 222, 192, 192, 193, 224, 194, 225, 195, 226,
-  196, 227, 197, 228, 198, 229, 199, 230, 200, 231, 201, 232,
-  202, 233, 203, 234, 204, 235, 205, 236, 206, 237, 207, 238,
-  208, 239, 209, 240, 210, 241, 211, 242, 212, 243, 213, 244,
-  214, 245, 215, 246, 216, 247, 217, 248, 218, 249, 219, 250,
-  220, 251, 221, 252, 222, 253, 223, 254, 224, 224, 225, 256,
-  226, 257, 227, 258, 228, 259, 229, 260, 230, 261, 231, 262,
-  232, 263, 233, 264, 234, 265, 235, 266, 236, 267, 237, 268,
-  238, 269, 239, 270, 240, 271, 241, 272, 242, 273, 243, 274,
-  244, 275, 245, 276, 246, 277, 247, 278, 248, 279, 249, 280,
-  250, 281, 251, 282, 252, 283, 253, 284, 254, 285, 255, 286,
-  256, 256, 257, 288, 258, 289, 259, 290, 260, 291, 261, 292,
-  262, 293, 263, 294, 264, 295, 265, 296, 266, 297, 267, 298,
-  268, 299, 269, 300, 270, 301, 271, 302, 272, 303, 273, 304,
-  274, 305, 275, 306, 276, 307, 277, 308, 278, 309, 279, 310,
-  280, 311, 281, 312, 282, 313, 283, 314, 284, 315, 285, 316,
-  286, 317, 287, 318, 288, 288, 289, 320, 290, 321, 291, 322,
-  292, 323, 293, 324, 294, 325, 295, 326, 296, 327, 297, 328,
-  298, 329, 299, 330, 300, 331, 301, 332, 302, 333, 303, 334,
-  304, 335, 305, 336, 306, 337, 307, 338, 308, 339, 309, 340,
-  310, 341, 311, 342, 312, 343, 313, 344, 314, 345, 315, 346,
-  316, 347, 317, 348, 318, 349, 319, 350, 320, 320, 321, 352,
-  322, 353, 323, 354, 324, 355, 325, 356, 326, 357, 327, 358,
-  328, 359, 329, 360, 330, 361, 331, 362, 332, 363, 333, 364,
-  334, 365, 335, 366, 336, 367, 337, 368, 338, 369, 339, 370,
-  340, 371, 341, 372, 342, 373, 343, 374, 344, 375, 345, 376,
-  346, 377, 347, 378, 348, 379, 349, 380, 350, 381, 351, 382,
-  352, 352, 353, 384, 354, 385, 355, 386, 356, 387, 357, 388,
-  358, 389, 359, 390, 360, 391, 361, 392, 362, 393, 363, 394,
-  364, 395, 365, 396, 366, 397, 367, 398, 368, 399, 369, 400,
-  370, 401, 371, 402, 372, 403, 373, 404, 374, 405, 375, 406,
-  376, 407, 377, 408, 378, 409, 379, 410, 380, 411, 381, 412,
-  382, 413, 383, 414, 384, 384, 385, 416, 386, 417, 387, 418,
-  388, 419, 389, 420, 390, 421, 391, 422, 392, 423, 393, 424,
-  394, 425, 395, 426, 396, 427, 397, 428, 398, 429, 399, 430,
-  400, 431, 401, 432, 402, 433, 403, 434, 404, 435, 405, 436,
-  406, 437, 407, 438, 408, 439, 409, 440, 410, 441, 411, 442,
-  412, 443, 413, 444, 414, 445, 415, 446, 416, 416, 417, 448,
-  418, 449, 419, 450, 420, 451, 421, 452, 422, 453, 423, 454,
-  424, 455, 425, 456, 426, 457, 427, 458, 428, 459, 429, 460,
-  430, 461, 431, 462, 432, 463, 433, 464, 434, 465, 435, 466,
-  436, 467, 437, 468, 438, 469, 439, 470, 440, 471, 441, 472,
-  442, 473, 443, 474, 444, 475, 445, 476, 446, 477, 447, 478,
-  448, 448, 449, 480, 450, 481, 451, 482, 452, 483, 453, 484,
-  454, 485, 455, 486, 456, 487, 457, 488, 458, 489, 459, 490,
-  460, 491, 461, 492, 462, 493, 463, 494, 464, 495, 465, 496,
-  466, 497, 467, 498, 468, 499, 469, 500, 470, 501, 471, 502,
-  472, 503, 473, 504, 474, 505, 475, 506, 476, 507, 477, 508,
-  478, 509, 479, 510,
-  0, 0
+  0,   0,   0,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,
+  6,   7,   7,   8,   8,   9,   9,   10,  10,  11,  11,  12,  12,  13,  13,
+  14,  14,  15,  15,  16,  16,  17,  17,  18,  18,  19,  19,  20,  20,  21,
+  21,  22,  22,  23,  23,  24,  24,  25,  25,  26,  26,  27,  27,  28,  28,
+  29,  29,  30,  30,  0,   0,   1,   32,  2,   33,  3,   34,  4,   35,  5,
+  36,  6,   37,  7,   38,  8,   39,  9,   40,  10,  41,  11,  42,  12,  43,
+  13,  44,  14,  45,  15,  46,  16,  47,  17,  48,  18,  49,  19,  50,  20,
+  51,  21,  52,  22,  53,  23,  54,  24,  55,  25,  56,  26,  57,  27,  58,
+  28,  59,  29,  60,  30,  61,  31,  62,  32,  32,  33,  64,  34,  65,  35,
+  66,  36,  67,  37,  68,  38,  69,  39,  70,  40,  71,  41,  72,  42,  73,
+  43,  74,  44,  75,  45,  76,  46,  77,  47,  78,  48,  79,  49,  80,  50,
+  81,  51,  82,  52,  83,  53,  84,  54,  85,  55,  86,  56,  87,  57,  88,
+  58,  89,  59,  90,  60,  91,  61,  92,  62,  93,  63,  94,  64,  64,  65,
+  96,  66,  97,  67,  98,  68,  99,  69,  100, 70,  101, 71,  102, 72,  103,
+  73,  104, 74,  105, 75,  106, 76,  107, 77,  108, 78,  109, 79,  110, 80,
+  111, 81,  112, 82,  113, 83,  114, 84,  115, 85,  116, 86,  117, 87,  118,
+  88,  119, 89,  120, 90,  121, 91,  122, 92,  123, 93,  124, 94,  125, 95,
+  126, 96,  96,  97,  128, 98,  129, 99,  130, 100, 131, 101, 132, 102, 133,
+  103, 134, 104, 135, 105, 136, 106, 137, 107, 138, 108, 139, 109, 140, 110,
+  141, 111, 142, 112, 143, 113, 144, 114, 145, 115, 146, 116, 147, 117, 148,
+  118, 149, 119, 150, 120, 151, 121, 152, 122, 153, 123, 154, 124, 155, 125,
+  156, 126, 157, 127, 158, 128, 128, 129, 160, 130, 161, 131, 162, 132, 163,
+  133, 164, 134, 165, 135, 166, 136, 167, 137, 168, 138, 169, 139, 170, 140,
+  171, 141, 172, 142, 173, 143, 174, 144, 175, 145, 176, 146, 177, 147, 178,
+  148, 179, 149, 180, 150, 181, 151, 182, 152, 183, 153, 184, 154, 185, 155,
+  186, 156, 187, 157, 188, 158, 189, 159, 190, 160, 160, 161, 192, 162, 193,
+  163, 194, 164, 195, 165, 196, 166, 197, 167, 198, 168, 199, 169, 200, 170,
+  201, 171, 202, 172, 203, 173, 204, 174, 205, 175, 206, 176, 207, 177, 208,
+  178, 209, 179, 210, 180, 211, 181, 212, 182, 213, 183, 214, 184, 215, 185,
+  216, 186, 217, 187, 218, 188, 219, 189, 220, 190, 221, 191, 222, 192, 192,
+  193, 224, 194, 225, 195, 226, 196, 227, 197, 228, 198, 229, 199, 230, 200,
+  231, 201, 232, 202, 233, 203, 234, 204, 235, 205, 236, 206, 237, 207, 238,
+  208, 239, 209, 240, 210, 241, 211, 242, 212, 243, 213, 244, 214, 245, 215,
+  246, 216, 247, 217, 248, 218, 249, 219, 250, 220, 251, 221, 252, 222, 253,
+  223, 254, 224, 224, 225, 256, 226, 257, 227, 258, 228, 259, 229, 260, 230,
+  261, 231, 262, 232, 263, 233, 264, 234, 265, 235, 266, 236, 267, 237, 268,
+  238, 269, 239, 270, 240, 271, 241, 272, 242, 273, 243, 274, 244, 275, 245,
+  276, 246, 277, 247, 278, 248, 279, 249, 280, 250, 281, 251, 282, 252, 283,
+  253, 284, 254, 285, 255, 286, 256, 256, 257, 288, 258, 289, 259, 290, 260,
+  291, 261, 292, 262, 293, 263, 294, 264, 295, 265, 296, 266, 297, 267, 298,
+  268, 299, 269, 300, 270, 301, 271, 302, 272, 303, 273, 304, 274, 305, 275,
+  306, 276, 307, 277, 308, 278, 309, 279, 310, 280, 311, 281, 312, 282, 313,
+  283, 314, 284, 315, 285, 316, 286, 317, 287, 318, 288, 288, 289, 320, 290,
+  321, 291, 322, 292, 323, 293, 324, 294, 325, 295, 326, 296, 327, 297, 328,
+  298, 329, 299, 330, 300, 331, 301, 332, 302, 333, 303, 334, 304, 335, 305,
+  336, 306, 337, 307, 338, 308, 339, 309, 340, 310, 341, 311, 342, 312, 343,
+  313, 344, 314, 345, 315, 346, 316, 347, 317, 348, 318, 349, 319, 350, 320,
+  320, 321, 352, 322, 353, 323, 354, 324, 355, 325, 356, 326, 357, 327, 358,
+  328, 359, 329, 360, 330, 361, 331, 362, 332, 363, 333, 364, 334, 365, 335,
+  366, 336, 367, 337, 368, 338, 369, 339, 370, 340, 371, 341, 372, 342, 373,
+  343, 374, 344, 375, 345, 376, 346, 377, 347, 378, 348, 379, 349, 380, 350,
+  381, 351, 382, 352, 352, 353, 384, 354, 385, 355, 386, 356, 387, 357, 388,
+  358, 389, 359, 390, 360, 391, 361, 392, 362, 393, 363, 394, 364, 395, 365,
+  396, 366, 397, 367, 398, 368, 399, 369, 400, 370, 401, 371, 402, 372, 403,
+  373, 404, 374, 405, 375, 406, 376, 407, 377, 408, 378, 409, 379, 410, 380,
+  411, 381, 412, 382, 413, 383, 414, 384, 384, 385, 416, 386, 417, 387, 418,
+  388, 419, 389, 420, 390, 421, 391, 422, 392, 423, 393, 424, 394, 425, 395,
+  426, 396, 427, 397, 428, 398, 429, 399, 430, 400, 431, 401, 432, 402, 433,
+  403, 434, 404, 435, 405, 436, 406, 437, 407, 438, 408, 439, 409, 440, 410,
+  441, 411, 442, 412, 443, 413, 444, 414, 445, 415, 446, 416, 416, 417, 448,
+  418, 449, 419, 450, 420, 451, 421, 452, 422, 453, 423, 454, 424, 455, 425,
+  456, 426, 457, 427, 458, 428, 459, 429, 460, 430, 461, 431, 462, 432, 463,
+  433, 464, 434, 465, 435, 466, 436, 467, 437, 468, 438, 469, 439, 470, 440,
+  471, 441, 472, 442, 473, 443, 474, 444, 475, 445, 476, 446, 477, 447, 478,
+  448, 448, 449, 480, 450, 481, 451, 482, 452, 483, 453, 484, 454, 485, 455,
+  486, 456, 487, 457, 488, 458, 489, 459, 490, 460, 491, 461, 492, 462, 493,
+  463, 494, 464, 495, 465, 496, 466, 497, 467, 498, 468, 499, 469, 500, 470,
+  501, 471, 502, 472, 503, 473, 504, 474, 505, 475, 506, 476, 507, 477, 508,
+  478, 509, 479, 510, 0,   0
 };
 
 #endif  // CONFIG_EXT_TX
@@ -3116,363 +2910,296 @@ DECLARE_ALIGNED(16, static const int16_t, vp10_default_iscan_8x8[64]) = {
 
 #if CONFIG_EXT_TX
 DECLARE_ALIGNED(16, static const int16_t, vp10_default_iscan_8x16[128]) = {
-  0,  1,  3,  6, 10, 15, 21, 28,  2,  4,  7, 11,
-  16, 22, 29, 36,  5,  8, 12, 17, 23, 30, 37, 44,
-  9, 13, 18, 24, 31, 38, 45, 52, 14, 19, 25, 32,
-  39, 46, 53, 60, 20, 26, 33, 40, 47, 54, 61, 68,
-  27, 34, 41, 48, 55, 62, 69, 76, 35, 42, 49, 56,
-  63, 70, 77, 84, 43, 50, 57, 64, 71, 78, 85, 92,
-  51,  58,  65,  72,  79,  86,  93, 100,  59,  66,  73,  80,
-  87,  94, 101, 107,  67,  74,  81,  88,  95, 102, 108, 113,
-  75,  82,  89,  96, 103, 109, 114, 118,  83,  90,  97, 104,
-  110, 115, 119, 122,  91,  98, 105, 111, 116, 120, 123, 125,
-  99, 106, 112, 117, 121, 124, 126, 127,
+  0,  1,  3,   6,   10,  15,  21,  28,  2,  4,   7,   11,  16,  22,  29,  36,
+  5,  8,  12,  17,  23,  30,  37,  44,  9,  13,  18,  24,  31,  38,  45,  52,
+  14, 19, 25,  32,  39,  46,  53,  60,  20, 26,  33,  40,  47,  54,  61,  68,
+  27, 34, 41,  48,  55,  62,  69,  76,  35, 42,  49,  56,  63,  70,  77,  84,
+  43, 50, 57,  64,  71,  78,  85,  92,  51, 58,  65,  72,  79,  86,  93,  100,
+  59, 66, 73,  80,  87,  94,  101, 107, 67, 74,  81,  88,  95,  102, 108, 113,
+  75, 82, 89,  96,  103, 109, 114, 118, 83, 90,  97,  104, 110, 115, 119, 122,
+  91, 98, 105, 111, 116, 120, 123, 125, 99, 106, 112, 117, 121, 124, 126, 127,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, vp10_default_iscan_16x8[128]) = {
-  0,  1,  3,  6, 10, 15, 21, 28, 36, 44, 52, 60,
-  68, 76, 84, 92,  2,  4,  7, 11, 16, 22, 29, 37,
-  45,  53,  61,  69,  77,  85,  93, 100,   5,   8,  12,  17,
-  23,  30,  38,  46,  54,  62,  70,  78,  86,  94, 101, 107,
-  9, 13, 18, 24, 31, 39, 47, 55, 63, 71, 79, 87,
-  95, 102, 108, 113,  14,  19,  25,  32,  40,  48,  56,  64,
-  72,  80,  88,  96, 103, 109, 114, 118,  20,  26,  33,  41,
-  49,  57,  65,  73,  81,  89,  97, 104, 110, 115, 119, 122,
-  27,  34,  42,  50,  58,  66,  74,  82,  90,  98, 105, 111,
-  116, 120, 123, 125,  35,  43,  51,  59,  67,  75,  83,  91,
-  99, 106, 112, 117, 121, 124, 126, 127,
+  0,  1,  3,  6,  10, 15, 21, 28, 36, 44,  52,  60,  68,  76,  84,  92,
+  2,  4,  7,  11, 16, 22, 29, 37, 45, 53,  61,  69,  77,  85,  93,  100,
+  5,  8,  12, 17, 23, 30, 38, 46, 54, 62,  70,  78,  86,  94,  101, 107,
+  9,  13, 18, 24, 31, 39, 47, 55, 63, 71,  79,  87,  95,  102, 108, 113,
+  14, 19, 25, 32, 40, 48, 56, 64, 72, 80,  88,  96,  103, 109, 114, 118,
+  20, 26, 33, 41, 49, 57, 65, 73, 81, 89,  97,  104, 110, 115, 119, 122,
+  27, 34, 42, 50, 58, 66, 74, 82, 90, 98,  105, 111, 116, 120, 123, 125,
+  35, 43, 51, 59, 67, 75, 83, 91, 99, 106, 112, 117, 121, 124, 126, 127,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, vp10_mcol_iscan_8x16[128]) = {
-  0,  16,  32,  48,  64,  80,  96, 112,   1,  17,  33,  49,
-  65,  81,  97, 113,   2,  18,  34,  50,  66,  82,  98, 114,
-  3,  19,  35,  51,  67,  83,  99, 115,   4,  20,  36,  52,
-  68,  84, 100, 116,   5,  21,  37,  53,  69,  85, 101, 117,
-  6,  22,  38,  54,  70,  86, 102, 118,   7,  23,  39,  55,
-  71,  87, 103, 119,   8,  24,  40,  56,  72,  88, 104, 120,
-  9,  25,  41,  57,  73,  89, 105, 121,  10,  26,  42,  58,
-  74,  90, 106, 122,  11,  27,  43,  59,  75,  91, 107, 123,
-  12,  28,  44,  60,  76,  92, 108, 124,  13,  29,  45,  61,
-  77,  93, 109, 125,  14,  30,  46,  62,  78,  94, 110, 126,
-  15,  31,  47,  63,  79,  95, 111, 127,
+  0,  16, 32, 48, 64, 80, 96,  112, 1,  17, 33, 49, 65, 81, 97,  113,
+  2,  18, 34, 50, 66, 82, 98,  114, 3,  19, 35, 51, 67, 83, 99,  115,
+  4,  20, 36, 52, 68, 84, 100, 116, 5,  21, 37, 53, 69, 85, 101, 117,
+  6,  22, 38, 54, 70, 86, 102, 118, 7,  23, 39, 55, 71, 87, 103, 119,
+  8,  24, 40, 56, 72, 88, 104, 120, 9,  25, 41, 57, 73, 89, 105, 121,
+  10, 26, 42, 58, 74, 90, 106, 122, 11, 27, 43, 59, 75, 91, 107, 123,
+  12, 28, 44, 60, 76, 92, 108, 124, 13, 29, 45, 61, 77, 93, 109, 125,
+  14, 30, 46, 62, 78, 94, 110, 126, 15, 31, 47, 63, 79, 95, 111, 127,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, vp10_mcol_iscan_16x8[128]) = {
-  0,  8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88,
-  96, 104, 112, 120,   1,   9,  17,  25,  33,  41,  49,  57,
-  65,  73,  81,  89,  97, 105, 113, 121,   2,  10,  18,  26,
-  34,  42,  50,  58,  66,  74,  82,  90,  98, 106, 114, 122,
-  3, 11, 19, 27, 35, 43, 51, 59, 67, 75, 83, 91,
-  99, 107, 115, 123,   4,  12,  20,  28,  36,  44,  52,  60,
-  68,  76,  84,  92, 100, 108, 116, 124,   5,  13,  21,  29,
-  37,  45,  53,  61,  69,  77,  85,  93, 101, 109, 117, 125,
-  6, 14, 22, 30, 38, 46, 54, 62, 70, 78, 86, 94,
-  102, 110, 118, 126,   7,  15,  23,  31,  39,  47,  55,  63,
-  71,  79,  87,  95, 103, 111, 119, 127,
+  0, 8,  16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96,  104, 112, 120,
+  1, 9,  17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97,  105, 113, 121,
+  2, 10, 18, 26, 34, 42, 50, 58, 66, 74, 82, 90, 98,  106, 114, 122,
+  3, 11, 19, 27, 35, 43, 51, 59, 67, 75, 83, 91, 99,  107, 115, 123,
+  4, 12, 20, 28, 36, 44, 52, 60, 68, 76, 84, 92, 100, 108, 116, 124,
+  5, 13, 21, 29, 37, 45, 53, 61, 69, 77, 85, 93, 101, 109, 117, 125,
+  6, 14, 22, 30, 38, 46, 54, 62, 70, 78, 86, 94, 102, 110, 118, 126,
+  7, 15, 23, 31, 39, 47, 55, 63, 71, 79, 87, 95, 103, 111, 119, 127,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, vp10_mrow_iscan_8x16[128]) = {
-  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
-  12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
-  24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
-  36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
-  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
-  60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
-  72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
-  84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
-  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107,
-  108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+  0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
+  15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
+  30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
+  45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
+  60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
+  75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
+  90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
+  105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
   120, 121, 122, 123, 124, 125, 126, 127,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, vp10_mrow_iscan_16x8[128]) = {
-  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
-  12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
-  24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
-  36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
-  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
-  60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
-  72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
-  84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
-  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107,
-  108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+  0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
+  15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
+  30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
+  45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
+  60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
+  75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
+  90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
+  105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
   120, 121, 122, 123, 124, 125, 126, 127,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, vp10_default_iscan_16x32[512]) = {
-  0,  1,  3,  6, 10, 15, 21, 28, 36, 45, 55, 66,
-  78,  91, 105, 120,   2,   4,   7,  11,  16,  22,  29,  37,
-  46,  56,  67,  79,  92, 106, 121, 136,   5,   8,  12,  17,
-  23,  30,  38,  47,  57,  68,  80,  93, 107, 122, 137, 152,
-  9,  13,  18,  24,  31,  39,  48,  58,  69,  81,  94, 108,
-  123, 138, 153, 168,  14,  19,  25,  32,  40,  49,  59,  70,
-  82,  95, 109, 124, 139, 154, 169, 184,  20,  26,  33,  41,
-  50,  60,  71,  83,  96, 110, 125, 140, 155, 170, 185, 200,
-  27,  34,  42,  51,  61,  72,  84,  97, 111, 126, 141, 156,
-  171, 186, 201, 216,  35,  43,  52,  62,  73,  85,  98, 112,
-  127, 142, 157, 172, 187, 202, 217, 232,  44,  53,  63,  74,
-  86,  99, 113, 128, 143, 158, 173, 188, 203, 218, 233, 248,
-  54,  64,  75,  87, 100, 114, 129, 144, 159, 174, 189, 204,
-  219, 234, 249, 264,  65,  76,  88, 101, 115, 130, 145, 160,
-  175, 190, 205, 220, 235, 250, 265, 280,  77,  89, 102, 116,
-  131, 146, 161, 176, 191, 206, 221, 236, 251, 266, 281, 296,
-  90, 103, 117, 132, 147, 162, 177, 192, 207, 222, 237, 252,
-  267, 282, 297, 312, 104, 118, 133, 148, 163, 178, 193, 208,
-  223, 238, 253, 268, 283, 298, 313, 328, 119, 134, 149, 164,
-  179, 194, 209, 224, 239, 254, 269, 284, 299, 314, 329, 344,
-  135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 285, 300,
-  315, 330, 345, 360, 151, 166, 181, 196, 211, 226, 241, 256,
-  271, 286, 301, 316, 331, 346, 361, 376, 167, 182, 197, 212,
-  227, 242, 257, 272, 287, 302, 317, 332, 347, 362, 377, 392,
-  183, 198, 213, 228, 243, 258, 273, 288, 303, 318, 333, 348,
-  363, 378, 393, 407, 199, 214, 229, 244, 259, 274, 289, 304,
-  319, 334, 349, 364, 379, 394, 408, 421, 215, 230, 245, 260,
-  275, 290, 305, 320, 335, 350, 365, 380, 395, 409, 422, 434,
-  231, 246, 261, 276, 291, 306, 321, 336, 351, 366, 381, 396,
-  410, 423, 435, 446, 247, 262, 277, 292, 307, 322, 337, 352,
-  367, 382, 397, 411, 424, 436, 447, 457, 263, 278, 293, 308,
-  323, 338, 353, 368, 383, 398, 412, 425, 437, 448, 458, 467,
-  279, 294, 309, 324, 339, 354, 369, 384, 399, 413, 426, 438,
-  449, 459, 468, 476, 295, 310, 325, 340, 355, 370, 385, 400,
-  414, 427, 439, 450, 460, 469, 477, 484, 311, 326, 341, 356,
-  371, 386, 401, 415, 428, 440, 451, 461, 470, 478, 485, 491,
-  327, 342, 357, 372, 387, 402, 416, 429, 441, 452, 462, 471,
-  479, 486, 492, 497, 343, 358, 373, 388, 403, 417, 430, 442,
-  453, 463, 472, 480, 487, 493, 498, 502, 359, 374, 389, 404,
-  418, 431, 443, 454, 464, 473, 481, 488, 494, 499, 503, 506,
-  375, 390, 405, 419, 432, 444, 455, 465, 474, 482, 489, 495,
-  500, 504, 507, 509, 391, 406, 420, 433, 445, 456, 466, 475,
-  483, 490, 496, 501, 505, 508, 510, 511,
+  0,   1,   3,   6,   10,  15,  21,  28,  36,  45,  55,  66,  78,  91,  105,
+  120, 2,   4,   7,   11,  16,  22,  29,  37,  46,  56,  67,  79,  92,  106,
+  121, 136, 5,   8,   12,  17,  23,  30,  38,  47,  57,  68,  80,  93,  107,
+  122, 137, 152, 9,   13,  18,  24,  31,  39,  48,  58,  69,  81,  94,  108,
+  123, 138, 153, 168, 14,  19,  25,  32,  40,  49,  59,  70,  82,  95,  109,
+  124, 139, 154, 169, 184, 20,  26,  33,  41,  50,  60,  71,  83,  96,  110,
+  125, 140, 155, 170, 185, 200, 27,  34,  42,  51,  61,  72,  84,  97,  111,
+  126, 141, 156, 171, 186, 201, 216, 35,  43,  52,  62,  73,  85,  98,  112,
+  127, 142, 157, 172, 187, 202, 217, 232, 44,  53,  63,  74,  86,  99,  113,
+  128, 143, 158, 173, 188, 203, 218, 233, 248, 54,  64,  75,  87,  100, 114,
+  129, 144, 159, 174, 189, 204, 219, 234, 249, 264, 65,  76,  88,  101, 115,
+  130, 145, 160, 175, 190, 205, 220, 235, 250, 265, 280, 77,  89,  102, 116,
+  131, 146, 161, 176, 191, 206, 221, 236, 251, 266, 281, 296, 90,  103, 117,
+  132, 147, 162, 177, 192, 207, 222, 237, 252, 267, 282, 297, 312, 104, 118,
+  133, 148, 163, 178, 193, 208, 223, 238, 253, 268, 283, 298, 313, 328, 119,
+  134, 149, 164, 179, 194, 209, 224, 239, 254, 269, 284, 299, 314, 329, 344,
+  135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 285, 300, 315, 330, 345,
+  360, 151, 166, 181, 196, 211, 226, 241, 256, 271, 286, 301, 316, 331, 346,
+  361, 376, 167, 182, 197, 212, 227, 242, 257, 272, 287, 302, 317, 332, 347,
+  362, 377, 392, 183, 198, 213, 228, 243, 258, 273, 288, 303, 318, 333, 348,
+  363, 378, 393, 407, 199, 214, 229, 244, 259, 274, 289, 304, 319, 334, 349,
+  364, 379, 394, 408, 421, 215, 230, 245, 260, 275, 290, 305, 320, 335, 350,
+  365, 380, 395, 409, 422, 434, 231, 246, 261, 276, 291, 306, 321, 336, 351,
+  366, 381, 396, 410, 423, 435, 446, 247, 262, 277, 292, 307, 322, 337, 352,
+  367, 382, 397, 411, 424, 436, 447, 457, 263, 278, 293, 308, 323, 338, 353,
+  368, 383, 398, 412, 425, 437, 448, 458, 467, 279, 294, 309, 324, 339, 354,
+  369, 384, 399, 413, 426, 438, 449, 459, 468, 476, 295, 310, 325, 340, 355,
+  370, 385, 400, 414, 427, 439, 450, 460, 469, 477, 484, 311, 326, 341, 356,
+  371, 386, 401, 415, 428, 440, 451, 461, 470, 478, 485, 491, 327, 342, 357,
+  372, 387, 402, 416, 429, 441, 452, 462, 471, 479, 486, 492, 497, 343, 358,
+  373, 388, 403, 417, 430, 442, 453, 463, 472, 480, 487, 493, 498, 502, 359,
+  374, 389, 404, 418, 431, 443, 454, 464, 473, 481, 488, 494, 499, 503, 506,
+  375, 390, 405, 419, 432, 444, 455, 465, 474, 482, 489, 495, 500, 504, 507,
+  509, 391, 406, 420, 433, 445, 456, 466, 475, 483, 490, 496, 501, 505, 508,
+  510, 511,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, vp10_default_iscan_32x16[512]) = {
-  0,  1,  3,  6, 10, 15, 21, 28, 36, 45, 55, 66,
-  78,  91, 105, 120, 136, 152, 168, 184, 200, 216, 232, 248,
-  264, 280, 296, 312, 328, 344, 360, 376,   2,   4,   7,  11,
-  16,  22,  29,  37,  46,  56,  67,  79,  92, 106, 121, 137,
-  153, 169, 185, 201, 217, 233, 249, 265, 281, 297, 313, 329,
-  345, 361, 377, 392,   5,   8,  12,  17,  23,  30,  38,  47,
-  57,  68,  80,  93, 107, 122, 138, 154, 170, 186, 202, 218,
-  234, 250, 266, 282, 298, 314, 330, 346, 362, 378, 393, 407,
-  9,  13,  18,  24,  31,  39,  48,  58,  69,  81,  94, 108,
-  123, 139, 155, 171, 187, 203, 219, 235, 251, 267, 283, 299,
-  315, 331, 347, 363, 379, 394, 408, 421,  14,  19,  25,  32,
-  40,  49,  59,  70,  82,  95, 109, 124, 140, 156, 172, 188,
-  204, 220, 236, 252, 268, 284, 300, 316, 332, 348, 364, 380,
-  395, 409, 422, 434,  20,  26,  33,  41,  50,  60,  71,  83,
-  96, 110, 125, 141, 157, 173, 189, 205, 221, 237, 253, 269,
-  285, 301, 317, 333, 349, 365, 381, 396, 410, 423, 435, 446,
-  27,  34,  42,  51,  61,  72,  84,  97, 111, 126, 142, 158,
-  174, 190, 206, 222, 238, 254, 270, 286, 302, 318, 334, 350,
-  366, 382, 397, 411, 424, 436, 447, 457,  35,  43,  52,  62,
-  73,  85,  98, 112, 127, 143, 159, 175, 191, 207, 223, 239,
-  255, 271, 287, 303, 319, 335, 351, 367, 383, 398, 412, 425,
-  437, 448, 458, 467,  44,  53,  63,  74,  86,  99, 113, 128,
-  144, 160, 176, 192, 208, 224, 240, 256, 272, 288, 304, 320,
-  336, 352, 368, 384, 399, 413, 426, 438, 449, 459, 468, 476,
-  54,  64,  75,  87, 100, 114, 129, 145, 161, 177, 193, 209,
-  225, 241, 257, 273, 289, 305, 321, 337, 353, 369, 385, 400,
-  414, 427, 439, 450, 460, 469, 477, 484,  65,  76,  88, 101,
-  115, 130, 146, 162, 178, 194, 210, 226, 242, 258, 274, 290,
-  306, 322, 338, 354, 370, 386, 401, 415, 428, 440, 451, 461,
-  470, 478, 485, 491,  77,  89, 102, 116, 131, 147, 163, 179,
-  195, 211, 227, 243, 259, 275, 291, 307, 323, 339, 355, 371,
-  387, 402, 416, 429, 441, 452, 462, 471, 479, 486, 492, 497,
-  90, 103, 117, 132, 148, 164, 180, 196, 212, 228, 244, 260,
-  276, 292, 308, 324, 340, 356, 372, 388, 403, 417, 430, 442,
-  453, 463, 472, 480, 487, 493, 498, 502, 104, 118, 133, 149,
-  165, 181, 197, 213, 229, 245, 261, 277, 293, 309, 325, 341,
-  357, 373, 389, 404, 418, 431, 443, 454, 464, 473, 481, 488,
-  494, 499, 503, 506, 119, 134, 150, 166, 182, 198, 214, 230,
-  246, 262, 278, 294, 310, 326, 342, 358, 374, 390, 405, 419,
-  432, 444, 455, 465, 474, 482, 489, 495, 500, 504, 507, 509,
-  135, 151, 167, 183, 199, 215, 231, 247, 263, 279, 295, 311,
-  327, 343, 359, 375, 391, 406, 420, 433, 445, 456, 466, 475,
-  483, 490, 496, 501, 505, 508, 510, 511,
+  0,   1,   3,   6,   10,  15,  21,  28,  36,  45,  55,  66,  78,  91,  105,
+  120, 136, 152, 168, 184, 200, 216, 232, 248, 264, 280, 296, 312, 328, 344,
+  360, 376, 2,   4,   7,   11,  16,  22,  29,  37,  46,  56,  67,  79,  92,
+  106, 121, 137, 153, 169, 185, 201, 217, 233, 249, 265, 281, 297, 313, 329,
+  345, 361, 377, 392, 5,   8,   12,  17,  23,  30,  38,  47,  57,  68,  80,
+  93,  107, 122, 138, 154, 170, 186, 202, 218, 234, 250, 266, 282, 298, 314,
+  330, 346, 362, 378, 393, 407, 9,   13,  18,  24,  31,  39,  48,  58,  69,
+  81,  94,  108, 123, 139, 155, 171, 187, 203, 219, 235, 251, 267, 283, 299,
+  315, 331, 347, 363, 379, 394, 408, 421, 14,  19,  25,  32,  40,  49,  59,
+  70,  82,  95,  109, 124, 140, 156, 172, 188, 204, 220, 236, 252, 268, 284,
+  300, 316, 332, 348, 364, 380, 395, 409, 422, 434, 20,  26,  33,  41,  50,
+  60,  71,  83,  96,  110, 125, 141, 157, 173, 189, 205, 221, 237, 253, 269,
+  285, 301, 317, 333, 349, 365, 381, 396, 410, 423, 435, 446, 27,  34,  42,
+  51,  61,  72,  84,  97,  111, 126, 142, 158, 174, 190, 206, 222, 238, 254,
+  270, 286, 302, 318, 334, 350, 366, 382, 397, 411, 424, 436, 447, 457, 35,
+  43,  52,  62,  73,  85,  98,  112, 127, 143, 159, 175, 191, 207, 223, 239,
+  255, 271, 287, 303, 319, 335, 351, 367, 383, 398, 412, 425, 437, 448, 458,
+  467, 44,  53,  63,  74,  86,  99,  113, 128, 144, 160, 176, 192, 208, 224,
+  240, 256, 272, 288, 304, 320, 336, 352, 368, 384, 399, 413, 426, 438, 449,
+  459, 468, 476, 54,  64,  75,  87,  100, 114, 129, 145, 161, 177, 193, 209,
+  225, 241, 257, 273, 289, 305, 321, 337, 353, 369, 385, 400, 414, 427, 439,
+  450, 460, 469, 477, 484, 65,  76,  88,  101, 115, 130, 146, 162, 178, 194,
+  210, 226, 242, 258, 274, 290, 306, 322, 338, 354, 370, 386, 401, 415, 428,
+  440, 451, 461, 470, 478, 485, 491, 77,  89,  102, 116, 131, 147, 163, 179,
+  195, 211, 227, 243, 259, 275, 291, 307, 323, 339, 355, 371, 387, 402, 416,
+  429, 441, 452, 462, 471, 479, 486, 492, 497, 90,  103, 117, 132, 148, 164,
+  180, 196, 212, 228, 244, 260, 276, 292, 308, 324, 340, 356, 372, 388, 403,
+  417, 430, 442, 453, 463, 472, 480, 487, 493, 498, 502, 104, 118, 133, 149,
+  165, 181, 197, 213, 229, 245, 261, 277, 293, 309, 325, 341, 357, 373, 389,
+  404, 418, 431, 443, 454, 464, 473, 481, 488, 494, 499, 503, 506, 119, 134,
+  150, 166, 182, 198, 214, 230, 246, 262, 278, 294, 310, 326, 342, 358, 374,
+  390, 405, 419, 432, 444, 455, 465, 474, 482, 489, 495, 500, 504, 507, 509,
+  135, 151, 167, 183, 199, 215, 231, 247, 263, 279, 295, 311, 327, 343, 359,
+  375, 391, 406, 420, 433, 445, 456, 466, 475, 483, 490, 496, 501, 505, 508,
+  510, 511,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, vp10_mcol_iscan_16x32[512]) = {
-  0,  32,  64,  96, 128, 160, 192, 224, 256, 288, 320, 352,
-  384, 416, 448, 480,   1,  33,  65,  97, 129, 161, 193, 225,
-  257, 289, 321, 353, 385, 417, 449, 481,   2,  34,  66,  98,
-  130, 162, 194, 226, 258, 290, 322, 354, 386, 418, 450, 482,
-  3,  35,  67,  99, 131, 163, 195, 227, 259, 291, 323, 355,
-  387, 419, 451, 483,   4,  36,  68, 100, 132, 164, 196, 228,
-  260, 292, 324, 356, 388, 420, 452, 484,   5,  37,  69, 101,
-  133, 165, 197, 229, 261, 293, 325, 357, 389, 421, 453, 485,
-  6,  38,  70, 102, 134, 166, 198, 230, 262, 294, 326, 358,
-  390, 422, 454, 486,   7,  39,  71, 103, 135, 167, 199, 231,
-  263, 295, 327, 359, 391, 423, 455, 487,   8,  40,  72, 104,
-  136, 168, 200, 232, 264, 296, 328, 360, 392, 424, 456, 488,
-  9,  41,  73, 105, 137, 169, 201, 233, 265, 297, 329, 361,
-  393, 425, 457, 489,  10,  42,  74, 106, 138, 170, 202, 234,
-  266, 298, 330, 362, 394, 426, 458, 490,  11,  43,  75, 107,
-  139, 171, 203, 235, 267, 299, 331, 363, 395, 427, 459, 491,
-  12,  44,  76, 108, 140, 172, 204, 236, 268, 300, 332, 364,
-  396, 428, 460, 492,  13,  45,  77, 109, 141, 173, 205, 237,
-  269, 301, 333, 365, 397, 429, 461, 493,  14,  46,  78, 110,
-  142, 174, 206, 238, 270, 302, 334, 366, 398, 430, 462, 494,
-  15,  47,  79, 111, 143, 175, 207, 239, 271, 303, 335, 367,
-  399, 431, 463, 495,  16,  48,  80, 112, 144, 176, 208, 240,
-  272, 304, 336, 368, 400, 432, 464, 496,  17,  49,  81, 113,
-  145, 177, 209, 241, 273, 305, 337, 369, 401, 433, 465, 497,
-  18,  50,  82, 114, 146, 178, 210, 242, 274, 306, 338, 370,
-  402, 434, 466, 498,  19,  51,  83, 115, 147, 179, 211, 243,
-  275, 307, 339, 371, 403, 435, 467, 499,  20,  52,  84, 116,
-  148, 180, 212, 244, 276, 308, 340, 372, 404, 436, 468, 500,
-  21,  53,  85, 117, 149, 181, 213, 245, 277, 309, 341, 373,
-  405, 437, 469, 501,  22,  54,  86, 118, 150, 182, 214, 246,
-  278, 310, 342, 374, 406, 438, 470, 502,  23,  55,  87, 119,
-  151, 183, 215, 247, 279, 311, 343, 375, 407, 439, 471, 503,
-  24,  56,  88, 120, 152, 184, 216, 248, 280, 312, 344, 376,
-  408, 440, 472, 504,  25,  57,  89, 121, 153, 185, 217, 249,
-  281, 313, 345, 377, 409, 441, 473, 505,  26,  58,  90, 122,
-  154, 186, 218, 250, 282, 314, 346, 378, 410, 442, 474, 506,
-  27,  59,  91, 123, 155, 187, 219, 251, 283, 315, 347, 379,
-  411, 443, 475, 507,  28,  60,  92, 124, 156, 188, 220, 252,
-  284, 316, 348, 380, 412, 444, 476, 508,  29,  61,  93, 125,
-  157, 189, 221, 253, 285, 317, 349, 381, 413, 445, 477, 509,
-  30,  62,  94, 126, 158, 190, 222, 254, 286, 318, 350, 382,
-  414, 446, 478, 510,  31,  63,  95, 127, 159, 191, 223, 255,
-  287, 319, 351, 383, 415, 447, 479, 511,
+  0,  32, 64, 96,  128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480,
+  1,  33, 65, 97,  129, 161, 193, 225, 257, 289, 321, 353, 385, 417, 449, 481,
+  2,  34, 66, 98,  130, 162, 194, 226, 258, 290, 322, 354, 386, 418, 450, 482,
+  3,  35, 67, 99,  131, 163, 195, 227, 259, 291, 323, 355, 387, 419, 451, 483,
+  4,  36, 68, 100, 132, 164, 196, 228, 260, 292, 324, 356, 388, 420, 452, 484,
+  5,  37, 69, 101, 133, 165, 197, 229, 261, 293, 325, 357, 389, 421, 453, 485,
+  6,  38, 70, 102, 134, 166, 198, 230, 262, 294, 326, 358, 390, 422, 454, 486,
+  7,  39, 71, 103, 135, 167, 199, 231, 263, 295, 327, 359, 391, 423, 455, 487,
+  8,  40, 72, 104, 136, 168, 200, 232, 264, 296, 328, 360, 392, 424, 456, 488,
+  9,  41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 361, 393, 425, 457, 489,
+  10, 42, 74, 106, 138, 170, 202, 234, 266, 298, 330, 362, 394, 426, 458, 490,
+  11, 43, 75, 107, 139, 171, 203, 235, 267, 299, 331, 363, 395, 427, 459, 491,
+  12, 44, 76, 108, 140, 172, 204, 236, 268, 300, 332, 364, 396, 428, 460, 492,
+  13, 45, 77, 109, 141, 173, 205, 237, 269, 301, 333, 365, 397, 429, 461, 493,
+  14, 46, 78, 110, 142, 174, 206, 238, 270, 302, 334, 366, 398, 430, 462, 494,
+  15, 47, 79, 111, 143, 175, 207, 239, 271, 303, 335, 367, 399, 431, 463, 495,
+  16, 48, 80, 112, 144, 176, 208, 240, 272, 304, 336, 368, 400, 432, 464, 496,
+  17, 49, 81, 113, 145, 177, 209, 241, 273, 305, 337, 369, 401, 433, 465, 497,
+  18, 50, 82, 114, 146, 178, 210, 242, 274, 306, 338, 370, 402, 434, 466, 498,
+  19, 51, 83, 115, 147, 179, 211, 243, 275, 307, 339, 371, 403, 435, 467, 499,
+  20, 52, 84, 116, 148, 180, 212, 244, 276, 308, 340, 372, 404, 436, 468, 500,
+  21, 53, 85, 117, 149, 181, 213, 245, 277, 309, 341, 373, 405, 437, 469, 501,
+  22, 54, 86, 118, 150, 182, 214, 246, 278, 310, 342, 374, 406, 438, 470, 502,
+  23, 55, 87, 119, 151, 183, 215, 247, 279, 311, 343, 375, 407, 439, 471, 503,
+  24, 56, 88, 120, 152, 184, 216, 248, 280, 312, 344, 376, 408, 440, 472, 504,
+  25, 57, 89, 121, 153, 185, 217, 249, 281, 313, 345, 377, 409, 441, 473, 505,
+  26, 58, 90, 122, 154, 186, 218, 250, 282, 314, 346, 378, 410, 442, 474, 506,
+  27, 59, 91, 123, 155, 187, 219, 251, 283, 315, 347, 379, 411, 443, 475, 507,
+  28, 60, 92, 124, 156, 188, 220, 252, 284, 316, 348, 380, 412, 444, 476, 508,
+  29, 61, 93, 125, 157, 189, 221, 253, 285, 317, 349, 381, 413, 445, 477, 509,
+  30, 62, 94, 126, 158, 190, 222, 254, 286, 318, 350, 382, 414, 446, 478, 510,
+  31, 63, 95, 127, 159, 191, 223, 255, 287, 319, 351, 383, 415, 447, 479, 511,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, vp10_mcol_iscan_32x16[512]) = {
-  0,  16,  32,  48,  64,  80,  96, 112, 128, 144, 160, 176,
-  192, 208, 224, 240, 256, 272, 288, 304, 320, 336, 352, 368,
-  384, 400, 416, 432, 448, 464, 480, 496,   1,  17,  33,  49,
-  65,  81,  97, 113, 129, 145, 161, 177, 193, 209, 225, 241,
-  257, 273, 289, 305, 321, 337, 353, 369, 385, 401, 417, 433,
-  449, 465, 481, 497,   2,  18,  34,  50,  66,  82,  98, 114,
-  130, 146, 162, 178, 194, 210, 226, 242, 258, 274, 290, 306,
-  322, 338, 354, 370, 386, 402, 418, 434, 450, 466, 482, 498,
-  3,  19,  35,  51,  67,  83,  99, 115, 131, 147, 163, 179,
-  195, 211, 227, 243, 259, 275, 291, 307, 323, 339, 355, 371,
-  387, 403, 419, 435, 451, 467, 483, 499,   4,  20,  36,  52,
-  68,  84, 100, 116, 132, 148, 164, 180, 196, 212, 228, 244,
-  260, 276, 292, 308, 324, 340, 356, 372, 388, 404, 420, 436,
-  452, 468, 484, 500,   5,  21,  37,  53,  69,  85, 101, 117,
-  133, 149, 165, 181, 197, 213, 229, 245, 261, 277, 293, 309,
-  325, 341, 357, 373, 389, 405, 421, 437, 453, 469, 485, 501,
-  6,  22,  38,  54,  70,  86, 102, 118, 134, 150, 166, 182,
-  198, 214, 230, 246, 262, 278, 294, 310, 326, 342, 358, 374,
-  390, 406, 422, 438, 454, 470, 486, 502,   7,  23,  39,  55,
-  71,  87, 103, 119, 135, 151, 167, 183, 199, 215, 231, 247,
-  263, 279, 295, 311, 327, 343, 359, 375, 391, 407, 423, 439,
-  455, 471, 487, 503,   8,  24,  40,  56,  72,  88, 104, 120,
-  136, 152, 168, 184, 200, 216, 232, 248, 264, 280, 296, 312,
-  328, 344, 360, 376, 392, 408, 424, 440, 456, 472, 488, 504,
-  9,  25,  41,  57,  73,  89, 105, 121, 137, 153, 169, 185,
-  201, 217, 233, 249, 265, 281, 297, 313, 329, 345, 361, 377,
-  393, 409, 425, 441, 457, 473, 489, 505,  10,  26,  42,  58,
-  74,  90, 106, 122, 138, 154, 170, 186, 202, 218, 234, 250,
-  266, 282, 298, 314, 330, 346, 362, 378, 394, 410, 426, 442,
-  458, 474, 490, 506,  11,  27,  43,  59,  75,  91, 107, 123,
-  139, 155, 171, 187, 203, 219, 235, 251, 267, 283, 299, 315,
-  331, 347, 363, 379, 395, 411, 427, 443, 459, 475, 491, 507,
-  12,  28,  44,  60,  76,  92, 108, 124, 140, 156, 172, 188,
-  204, 220, 236, 252, 268, 284, 300, 316, 332, 348, 364, 380,
-  396, 412, 428, 444, 460, 476, 492, 508,  13,  29,  45,  61,
-  77,  93, 109, 125, 141, 157, 173, 189, 205, 221, 237, 253,
-  269, 285, 301, 317, 333, 349, 365, 381, 397, 413, 429, 445,
-  461, 477, 493, 509,  14,  30,  46,  62,  78,  94, 110, 126,
-  142, 158, 174, 190, 206, 222, 238, 254, 270, 286, 302, 318,
-  334, 350, 366, 382, 398, 414, 430, 446, 462, 478, 494, 510,
-  15,  31,  47,  63,  79,  95, 111, 127, 143, 159, 175, 191,
-  207, 223, 239, 255, 271, 287, 303, 319, 335, 351, 367, 383,
-  399, 415, 431, 447, 463, 479, 495, 511,
+  0,   16,  32,  48,  64,  80,  96,  112, 128, 144, 160, 176, 192, 208, 224,
+  240, 256, 272, 288, 304, 320, 336, 352, 368, 384, 400, 416, 432, 448, 464,
+  480, 496, 1,   17,  33,  49,  65,  81,  97,  113, 129, 145, 161, 177, 193,
+  209, 225, 241, 257, 273, 289, 305, 321, 337, 353, 369, 385, 401, 417, 433,
+  449, 465, 481, 497, 2,   18,  34,  50,  66,  82,  98,  114, 130, 146, 162,
+  178, 194, 210, 226, 242, 258, 274, 290, 306, 322, 338, 354, 370, 386, 402,
+  418, 434, 450, 466, 482, 498, 3,   19,  35,  51,  67,  83,  99,  115, 131,
+  147, 163, 179, 195, 211, 227, 243, 259, 275, 291, 307, 323, 339, 355, 371,
+  387, 403, 419, 435, 451, 467, 483, 499, 4,   20,  36,  52,  68,  84,  100,
+  116, 132, 148, 164, 180, 196, 212, 228, 244, 260, 276, 292, 308, 324, 340,
+  356, 372, 388, 404, 420, 436, 452, 468, 484, 500, 5,   21,  37,  53,  69,
+  85,  101, 117, 133, 149, 165, 181, 197, 213, 229, 245, 261, 277, 293, 309,
+  325, 341, 357, 373, 389, 405, 421, 437, 453, 469, 485, 501, 6,   22,  38,
+  54,  70,  86,  102, 118, 134, 150, 166, 182, 198, 214, 230, 246, 262, 278,
+  294, 310, 326, 342, 358, 374, 390, 406, 422, 438, 454, 470, 486, 502, 7,
+  23,  39,  55,  71,  87,  103, 119, 135, 151, 167, 183, 199, 215, 231, 247,
+  263, 279, 295, 311, 327, 343, 359, 375, 391, 407, 423, 439, 455, 471, 487,
+  503, 8,   24,  40,  56,  72,  88,  104, 120, 136, 152, 168, 184, 200, 216,
+  232, 248, 264, 280, 296, 312, 328, 344, 360, 376, 392, 408, 424, 440, 456,
+  472, 488, 504, 9,   25,  41,  57,  73,  89,  105, 121, 137, 153, 169, 185,
+  201, 217, 233, 249, 265, 281, 297, 313, 329, 345, 361, 377, 393, 409, 425,
+  441, 457, 473, 489, 505, 10,  26,  42,  58,  74,  90,  106, 122, 138, 154,
+  170, 186, 202, 218, 234, 250, 266, 282, 298, 314, 330, 346, 362, 378, 394,
+  410, 426, 442, 458, 474, 490, 506, 11,  27,  43,  59,  75,  91,  107, 123,
+  139, 155, 171, 187, 203, 219, 235, 251, 267, 283, 299, 315, 331, 347, 363,
+  379, 395, 411, 427, 443, 459, 475, 491, 507, 12,  28,  44,  60,  76,  92,
+  108, 124, 140, 156, 172, 188, 204, 220, 236, 252, 268, 284, 300, 316, 332,
+  348, 364, 380, 396, 412, 428, 444, 460, 476, 492, 508, 13,  29,  45,  61,
+  77,  93,  109, 125, 141, 157, 173, 189, 205, 221, 237, 253, 269, 285, 301,
+  317, 333, 349, 365, 381, 397, 413, 429, 445, 461, 477, 493, 509, 14,  30,
+  46,  62,  78,  94,  110, 126, 142, 158, 174, 190, 206, 222, 238, 254, 270,
+  286, 302, 318, 334, 350, 366, 382, 398, 414, 430, 446, 462, 478, 494, 510,
+  15,  31,  47,  63,  79,  95,  111, 127, 143, 159, 175, 191, 207, 223, 239,
+  255, 271, 287, 303, 319, 335, 351, 367, 383, 399, 415, 431, 447, 463, 479,
+  495, 511,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, vp10_mrow_iscan_16x32[512]) = {
-  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
-  12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
-  24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
-  36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
-  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
-  60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
-  72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
-  84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
-  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107,
-  108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
-  120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
-  132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
-  144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
-  156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
-  168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
-  180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
-  192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
-  204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
-  216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
-  228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
-  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
-  252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
-  264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
-  276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
-  288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
-  300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
-  312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
-  324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
-  336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
-  348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
-  360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
-  372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
-  384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
-  396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
-  408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
-  420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
-  432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
-  444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
-  456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
-  468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
-  480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
-  492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
-  504, 505, 506, 507, 508, 509, 510, 511,
+  0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
+  15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
+  30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
+  45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
+  60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
+  75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
+  90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
+  105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+  120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+  135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+  150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+  165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+  180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+  195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+  210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+  225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+  255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+  270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+  285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+  300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+  315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+  330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+  345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
+  360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+  375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
+  390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+  405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+  420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+  435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
+  450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
+  465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
+  480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+  495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+  510, 511,
 };
 
 DECLARE_ALIGNED(16, static const int16_t, vp10_mrow_iscan_32x16[512]) = {
-  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
-  12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
-  24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
-  36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
-  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
-  60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
-  72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
-  84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
-  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107,
-  108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
-  120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
-  132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
-  144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
-  156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
-  168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
-  180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
-  192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
-  204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
-  216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
-  228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
-  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
-  252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
-  264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
-  276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
-  288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
-  300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
-  312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
-  324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
-  336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
-  348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
-  360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
-  372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
-  384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
-  396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
-  408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
-  420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
-  432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
-  444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
-  456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
-  468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
-  480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
-  492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
-  504, 505, 506, 507, 508, 509, 510, 511,
+  0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
+  15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
+  30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
+  45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
+  60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
+  75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
+  90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
+  105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+  120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+  135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+  150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+  165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+  180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+  195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+  210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+  225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+  255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+  270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+  285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+  300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+  315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+  330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+  345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
+  360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+  375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
+  390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+  405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+  420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+  435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
+  450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
+  465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
+  480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+  495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+  510, 511,
 };
 
 #endif  // CONFIG_EXT_TX
@@ -4169,212 +3896,241 @@ const scan_order vp10_intra_scan_orders[TX_SIZES][TX_TYPES] = {
 };
 
 const scan_order vp10_inter_scan_orders[TX_SIZES_ALL][TX_TYPES] = {
-  {  // TX_4X4
-    {default_scan_4x4, vp10_default_iscan_4x4, default_scan_4x4_neighbors},
-    {default_scan_4x4, vp10_default_iscan_4x4, default_scan_4x4_neighbors},
-    {default_scan_4x4, vp10_default_iscan_4x4, default_scan_4x4_neighbors},
-    {default_scan_4x4, vp10_default_iscan_4x4, default_scan_4x4_neighbors},
-    {default_scan_4x4, vp10_default_iscan_4x4, default_scan_4x4_neighbors},
-    {default_scan_4x4, vp10_default_iscan_4x4, default_scan_4x4_neighbors},
-    {default_scan_4x4, vp10_default_iscan_4x4, default_scan_4x4_neighbors},
-    {default_scan_4x4, vp10_default_iscan_4x4, default_scan_4x4_neighbors},
-    {default_scan_4x4, vp10_default_iscan_4x4, default_scan_4x4_neighbors},
-    {mrow_scan_4x4,    vp10_mrow_iscan_4x4,    mrow_scan_4x4_neighbors},
-    {mrow_scan_4x4,    vp10_mrow_iscan_4x4,    mrow_scan_4x4_neighbors},
-    {mcol_scan_4x4,    vp10_mcol_iscan_4x4,    mcol_scan_4x4_neighbors},
-    {mrow_scan_4x4,    vp10_mrow_iscan_4x4,    mrow_scan_4x4_neighbors},
-    {mcol_scan_4x4,    vp10_mcol_iscan_4x4,    mcol_scan_4x4_neighbors},
-    {mrow_scan_4x4,    vp10_mrow_iscan_4x4,    mrow_scan_4x4_neighbors},
-    {mcol_scan_4x4,    vp10_mcol_iscan_4x4,    mcol_scan_4x4_neighbors},
-  }, {  // TX_8X8
-    {default_scan_8x8, vp10_default_iscan_8x8, default_scan_8x8_neighbors},
-    {default_scan_8x8, vp10_default_iscan_8x8, default_scan_8x8_neighbors},
-    {default_scan_8x8, vp10_default_iscan_8x8, default_scan_8x8_neighbors},
-    {default_scan_8x8, vp10_default_iscan_8x8, default_scan_8x8_neighbors},
-    {default_scan_8x8, vp10_default_iscan_8x8, default_scan_8x8_neighbors},
-    {default_scan_8x8, vp10_default_iscan_8x8, default_scan_8x8_neighbors},
-    {default_scan_8x8, vp10_default_iscan_8x8, default_scan_8x8_neighbors},
-    {default_scan_8x8, vp10_default_iscan_8x8, default_scan_8x8_neighbors},
-    {default_scan_8x8, vp10_default_iscan_8x8, default_scan_8x8_neighbors},
-    {mrow_scan_8x8,    vp10_mrow_iscan_8x8,    mrow_scan_8x8_neighbors},
-    {mrow_scan_8x8,    vp10_mrow_iscan_8x8,    mrow_scan_8x8_neighbors},
-    {mcol_scan_8x8,    vp10_mcol_iscan_8x8,    mcol_scan_8x8_neighbors},
-    {mrow_scan_8x8,    vp10_mrow_iscan_8x8,    mrow_scan_8x8_neighbors},
-    {mcol_scan_8x8,    vp10_mcol_iscan_8x8,    mcol_scan_8x8_neighbors},
-    {mrow_scan_8x8,    vp10_mrow_iscan_8x8,    mrow_scan_8x8_neighbors},
-    {mcol_scan_8x8,    vp10_mcol_iscan_8x8,    mcol_scan_8x8_neighbors},
-  }, {  // TX_16X16
-    {default_scan_16x16, vp10_default_iscan_16x16,
-     default_scan_16x16_neighbors},
-    {default_scan_16x16, vp10_default_iscan_16x16,
-     default_scan_16x16_neighbors},
-    {default_scan_16x16, vp10_default_iscan_16x16,
-     default_scan_16x16_neighbors},
-    {default_scan_16x16, vp10_default_iscan_16x16,
-     default_scan_16x16_neighbors},
-    {default_scan_16x16, vp10_default_iscan_16x16,
-     default_scan_16x16_neighbors},
-    {default_scan_16x16, vp10_default_iscan_16x16,
-     default_scan_16x16_neighbors},
-    {default_scan_16x16, vp10_default_iscan_16x16,
-     default_scan_16x16_neighbors},
-    {default_scan_16x16, vp10_default_iscan_16x16,
-     default_scan_16x16_neighbors},
-    {default_scan_16x16, vp10_default_iscan_16x16,
-     default_scan_16x16_neighbors},
-    {mrow_scan_16x16,  vp10_mrow_iscan_16x16,  mrow_scan_16x16_neighbors},
-    {mrow_scan_16x16,  vp10_mrow_iscan_16x16,  mrow_scan_16x16_neighbors},
-    {mcol_scan_16x16,  vp10_mcol_iscan_16x16,  mcol_scan_16x16_neighbors},
-    {mrow_scan_16x16,  vp10_mrow_iscan_16x16,  mrow_scan_16x16_neighbors},
-    {mcol_scan_16x16,  vp10_mcol_iscan_16x16,  mcol_scan_16x16_neighbors},
-    {mrow_scan_16x16,  vp10_mrow_iscan_16x16,  mrow_scan_16x16_neighbors},
-    {mcol_scan_16x16,  vp10_mcol_iscan_16x16,  mcol_scan_16x16_neighbors},
-  }, {  // TX_32X32
-    {default_scan_32x32, vp10_default_iscan_32x32,
-     default_scan_32x32_neighbors},
-    {h2_scan_32x32, vp10_h2_iscan_32x32,
-     h2_scan_32x32_neighbors},
-    {v2_scan_32x32, vp10_v2_iscan_32x32,
-     v2_scan_32x32_neighbors},
-    {qtr_scan_32x32, vp10_qtr_iscan_32x32,
-     qtr_scan_32x32_neighbors},
-    {h2_scan_32x32, vp10_h2_iscan_32x32,
-     h2_scan_32x32_neighbors},
-    {v2_scan_32x32, vp10_v2_iscan_32x32,
-     v2_scan_32x32_neighbors},
-    {qtr_scan_32x32, vp10_qtr_iscan_32x32,
-     qtr_scan_32x32_neighbors},
-    {qtr_scan_32x32, vp10_qtr_iscan_32x32,
-     qtr_scan_32x32_neighbors},
-    {qtr_scan_32x32, vp10_qtr_iscan_32x32,
-     qtr_scan_32x32_neighbors},
-    {mrow_scan_32x32,  vp10_mrow_iscan_32x32,  mrow_scan_32x32_neighbors},
-    {mrow_scan_32x32,  vp10_mrow_iscan_32x32,  mrow_scan_32x32_neighbors},
-    {mcol_scan_32x32,  vp10_mcol_iscan_32x32,  mcol_scan_32x32_neighbors},
-    {mrow_scan_32x32,  vp10_mrow_iscan_32x32,  mrow_scan_32x32_neighbors},
-    {mcol_scan_32x32,  vp10_mcol_iscan_32x32,  mcol_scan_32x32_neighbors},
-    {mrow_scan_32x32,  vp10_mrow_iscan_32x32,  mrow_scan_32x32_neighbors},
-    {mcol_scan_32x32,  vp10_mcol_iscan_32x32,  mcol_scan_32x32_neighbors},
-  }, {  // TX_4X8
-    {default_scan_4x8, vp10_default_iscan_4x8, default_scan_4x8_neighbors},
-    {default_scan_4x8, vp10_default_iscan_4x8, default_scan_4x8_neighbors},
-    {default_scan_4x8, vp10_default_iscan_4x8, default_scan_4x8_neighbors},
-    {default_scan_4x8, vp10_default_iscan_4x8, default_scan_4x8_neighbors},
-    {default_scan_4x8, vp10_default_iscan_4x8, default_scan_4x8_neighbors},
-    {default_scan_4x8, vp10_default_iscan_4x8, default_scan_4x8_neighbors},
-    {default_scan_4x8, vp10_default_iscan_4x8, default_scan_4x8_neighbors},
-    {default_scan_4x8, vp10_default_iscan_4x8, default_scan_4x8_neighbors},
-    {default_scan_4x8, vp10_default_iscan_4x8, default_scan_4x8_neighbors},
-    {mrow_scan_4x8,    vp10_mrow_iscan_4x8,    mrow_scan_4x8_neighbors},
-    {mrow_scan_4x8,    vp10_mrow_iscan_4x8,    mrow_scan_4x8_neighbors},
-    {mcol_scan_4x8,    vp10_mcol_iscan_4x8,    mcol_scan_4x8_neighbors},
-    {mrow_scan_4x8,    vp10_mrow_iscan_4x8,    mrow_scan_4x8_neighbors},
-    {mcol_scan_4x8,    vp10_mcol_iscan_4x8,    mcol_scan_4x8_neighbors},
-    {mrow_scan_4x8,    vp10_mrow_iscan_4x8,    mrow_scan_4x8_neighbors},
-    {mcol_scan_4x8,    vp10_mcol_iscan_4x8,    mcol_scan_4x8_neighbors},
-  }, {  // TX_8X4
-    {default_scan_8x4, vp10_default_iscan_8x4, default_scan_8x4_neighbors},
-    {default_scan_8x4, vp10_default_iscan_8x4, default_scan_8x4_neighbors},
-    {default_scan_8x4, vp10_default_iscan_8x4, default_scan_8x4_neighbors},
-    {default_scan_8x4, vp10_default_iscan_8x4, default_scan_8x4_neighbors},
-    {default_scan_8x4, vp10_default_iscan_8x4, default_scan_8x4_neighbors},
-    {default_scan_8x4, vp10_default_iscan_8x4, default_scan_8x4_neighbors},
-    {default_scan_8x4, vp10_default_iscan_8x4, default_scan_8x4_neighbors},
-    {default_scan_8x4, vp10_default_iscan_8x4, default_scan_8x4_neighbors},
-    {default_scan_8x4, vp10_default_iscan_8x4, default_scan_8x4_neighbors},
-    {mrow_scan_8x4,    vp10_mrow_iscan_8x4,    mrow_scan_8x4_neighbors},
-    {mrow_scan_8x4,    vp10_mrow_iscan_8x4,    mrow_scan_8x4_neighbors},
-    {mcol_scan_8x4,    vp10_mcol_iscan_8x4,    mcol_scan_8x4_neighbors},
-    {mrow_scan_8x4,    vp10_mrow_iscan_8x4,    mrow_scan_8x4_neighbors},
-    {mcol_scan_8x4,    vp10_mcol_iscan_8x4,    mcol_scan_8x4_neighbors},
-    {mrow_scan_8x4,    vp10_mrow_iscan_8x4,    mrow_scan_8x4_neighbors},
-    {mcol_scan_8x4,    vp10_mcol_iscan_8x4,    mcol_scan_8x4_neighbors},
-  }, {  // TX_8X16
-    {default_scan_8x16, vp10_default_iscan_8x16, default_scan_8x16_neighbors},
-    {default_scan_8x16, vp10_default_iscan_8x16, default_scan_8x16_neighbors},
-    {default_scan_8x16, vp10_default_iscan_8x16, default_scan_8x16_neighbors},
-    {default_scan_8x16, vp10_default_iscan_8x16, default_scan_8x16_neighbors},
-    {default_scan_8x16, vp10_default_iscan_8x16, default_scan_8x16_neighbors},
-    {default_scan_8x16, vp10_default_iscan_8x16, default_scan_8x16_neighbors},
-    {default_scan_8x16, vp10_default_iscan_8x16, default_scan_8x16_neighbors},
-    {default_scan_8x16, vp10_default_iscan_8x16, default_scan_8x16_neighbors},
-    {default_scan_8x16, vp10_default_iscan_8x16, default_scan_8x16_neighbors},
-    {mrow_scan_8x16,    vp10_mrow_iscan_8x16,    mrow_scan_8x16_neighbors},
-    {mrow_scan_8x16,    vp10_mrow_iscan_8x16,    mrow_scan_8x16_neighbors},
-    {mcol_scan_8x16,    vp10_mcol_iscan_8x16,    mcol_scan_8x16_neighbors},
-    {mrow_scan_8x16,    vp10_mrow_iscan_8x16,    mrow_scan_8x16_neighbors},
-    {mcol_scan_8x16,    vp10_mcol_iscan_8x16,    mcol_scan_8x16_neighbors},
-    {mrow_scan_8x16,    vp10_mrow_iscan_8x16,    mrow_scan_8x16_neighbors},
-    {mcol_scan_8x16,    vp10_mcol_iscan_8x16,    mcol_scan_8x16_neighbors},
-  }, {  // TX_16X8
-    {default_scan_16x8, vp10_default_iscan_16x8, default_scan_16x8_neighbors},
-    {default_scan_16x8, vp10_default_iscan_16x8, default_scan_16x8_neighbors},
-    {default_scan_16x8, vp10_default_iscan_16x8, default_scan_16x8_neighbors},
-    {default_scan_16x8, vp10_default_iscan_16x8, default_scan_16x8_neighbors},
-    {default_scan_16x8, vp10_default_iscan_16x8, default_scan_16x8_neighbors},
-    {default_scan_16x8, vp10_default_iscan_16x8, default_scan_16x8_neighbors},
-    {default_scan_16x8, vp10_default_iscan_16x8, default_scan_16x8_neighbors},
-    {default_scan_16x8, vp10_default_iscan_16x8, default_scan_16x8_neighbors},
-    {default_scan_16x8, vp10_default_iscan_16x8, default_scan_16x8_neighbors},
-    {mrow_scan_16x8,    vp10_mrow_iscan_16x8,    mrow_scan_16x8_neighbors},
-    {mrow_scan_16x8,    vp10_mrow_iscan_16x8,    mrow_scan_16x8_neighbors},
-    {mcol_scan_16x8,    vp10_mcol_iscan_16x8,    mcol_scan_16x8_neighbors},
-    {mrow_scan_16x8,    vp10_mrow_iscan_16x8,    mrow_scan_16x8_neighbors},
-    {mcol_scan_16x8,    vp10_mcol_iscan_16x8,    mcol_scan_16x8_neighbors},
-    {mrow_scan_16x8,    vp10_mrow_iscan_16x8,    mrow_scan_16x8_neighbors},
-    {mcol_scan_16x8,    vp10_mcol_iscan_16x8,    mcol_scan_16x8_neighbors},
-  }, {  // TX_16X32
-    {default_scan_16x32, vp10_default_iscan_16x32,
-      default_scan_16x32_neighbors},
-    {default_scan_16x32, vp10_default_iscan_16x32,
-      default_scan_16x32_neighbors},
-    {default_scan_16x32, vp10_default_iscan_16x32,
-      default_scan_16x32_neighbors},
-    {default_scan_16x32, vp10_default_iscan_16x32,
-      default_scan_16x32_neighbors},
-    {default_scan_16x32, vp10_default_iscan_16x32,
-      default_scan_16x32_neighbors},
-    {default_scan_16x32, vp10_default_iscan_16x32,
-      default_scan_16x32_neighbors},
-    {default_scan_16x32, vp10_default_iscan_16x32,
-      default_scan_16x32_neighbors},
-    {default_scan_16x32, vp10_default_iscan_16x32,
-      default_scan_16x32_neighbors},
-    {default_scan_16x32, vp10_default_iscan_16x32,
-      default_scan_16x32_neighbors},
-    {mrow_scan_16x32,   vp10_mrow_iscan_16x32,   mrow_scan_16x32_neighbors},
-    {mrow_scan_16x32,   vp10_mrow_iscan_16x32,   mrow_scan_16x32_neighbors},
-    {mcol_scan_16x32,   vp10_mcol_iscan_16x32,   mcol_scan_16x32_neighbors},
-    {mrow_scan_16x32,   vp10_mrow_iscan_16x32,   mrow_scan_16x32_neighbors},
-    {mcol_scan_16x32,   vp10_mcol_iscan_16x32,   mcol_scan_16x32_neighbors},
-    {mrow_scan_16x32,   vp10_mrow_iscan_16x32,   mrow_scan_16x32_neighbors},
-    {mcol_scan_16x32,   vp10_mcol_iscan_16x32,   mcol_scan_16x32_neighbors},
-  }, {  // TX_32X16
-    {default_scan_32x16, vp10_default_iscan_32x16,
-      default_scan_32x16_neighbors},
-    {default_scan_32x16, vp10_default_iscan_32x16,
-      default_scan_32x16_neighbors},
-    {default_scan_32x16, vp10_default_iscan_32x16,
-      default_scan_32x16_neighbors},
-    {default_scan_32x16, vp10_default_iscan_32x16,
-      default_scan_32x16_neighbors},
-    {default_scan_32x16, vp10_default_iscan_32x16,
-      default_scan_32x16_neighbors},
-    {default_scan_32x16, vp10_default_iscan_32x16,
-      default_scan_32x16_neighbors},
-    {default_scan_32x16, vp10_default_iscan_32x16,
-      default_scan_32x16_neighbors},
-    {default_scan_32x16, vp10_default_iscan_32x16,
-      default_scan_32x16_neighbors},
-    {default_scan_32x16, vp10_default_iscan_32x16,
-      default_scan_32x16_neighbors},
-    {mrow_scan_32x16,   vp10_mrow_iscan_32x16,   mrow_scan_32x16_neighbors},
-    {mrow_scan_32x16,   vp10_mrow_iscan_32x16,   mrow_scan_32x16_neighbors},
-    {mcol_scan_32x16,   vp10_mcol_iscan_32x16,   mcol_scan_32x16_neighbors},
-    {mrow_scan_32x16,   vp10_mrow_iscan_32x16,   mrow_scan_32x16_neighbors},
-    {mcol_scan_32x16,   vp10_mcol_iscan_32x16,   mcol_scan_32x16_neighbors},
-    {mrow_scan_32x16,   vp10_mrow_iscan_32x16,   mrow_scan_32x16_neighbors},
-    {mcol_scan_32x16,   vp10_mcol_iscan_32x16,   mcol_scan_32x16_neighbors},
+  {
+      // TX_4X4
+      { default_scan_4x4, vp10_default_iscan_4x4, default_scan_4x4_neighbors },
+      { default_scan_4x4, vp10_default_iscan_4x4, default_scan_4x4_neighbors },
+      { default_scan_4x4, vp10_default_iscan_4x4, default_scan_4x4_neighbors },
+      { default_scan_4x4, vp10_default_iscan_4x4, default_scan_4x4_neighbors },
+      { default_scan_4x4, vp10_default_iscan_4x4, default_scan_4x4_neighbors },
+      { default_scan_4x4, vp10_default_iscan_4x4, default_scan_4x4_neighbors },
+      { default_scan_4x4, vp10_default_iscan_4x4, default_scan_4x4_neighbors },
+      { default_scan_4x4, vp10_default_iscan_4x4, default_scan_4x4_neighbors },
+      { default_scan_4x4, vp10_default_iscan_4x4, default_scan_4x4_neighbors },
+      { mrow_scan_4x4, vp10_mrow_iscan_4x4, mrow_scan_4x4_neighbors },
+      { mrow_scan_4x4, vp10_mrow_iscan_4x4, mrow_scan_4x4_neighbors },
+      { mcol_scan_4x4, vp10_mcol_iscan_4x4, mcol_scan_4x4_neighbors },
+      { mrow_scan_4x4, vp10_mrow_iscan_4x4, mrow_scan_4x4_neighbors },
+      { mcol_scan_4x4, vp10_mcol_iscan_4x4, mcol_scan_4x4_neighbors },
+      { mrow_scan_4x4, vp10_mrow_iscan_4x4, mrow_scan_4x4_neighbors },
+      { mcol_scan_4x4, vp10_mcol_iscan_4x4, mcol_scan_4x4_neighbors },
+  },
+  {
+      // TX_8X8
+      { default_scan_8x8, vp10_default_iscan_8x8, default_scan_8x8_neighbors },
+      { default_scan_8x8, vp10_default_iscan_8x8, default_scan_8x8_neighbors },
+      { default_scan_8x8, vp10_default_iscan_8x8, default_scan_8x8_neighbors },
+      { default_scan_8x8, vp10_default_iscan_8x8, default_scan_8x8_neighbors },
+      { default_scan_8x8, vp10_default_iscan_8x8, default_scan_8x8_neighbors },
+      { default_scan_8x8, vp10_default_iscan_8x8, default_scan_8x8_neighbors },
+      { default_scan_8x8, vp10_default_iscan_8x8, default_scan_8x8_neighbors },
+      { default_scan_8x8, vp10_default_iscan_8x8, default_scan_8x8_neighbors },
+      { default_scan_8x8, vp10_default_iscan_8x8, default_scan_8x8_neighbors },
+      { mrow_scan_8x8, vp10_mrow_iscan_8x8, mrow_scan_8x8_neighbors },
+      { mrow_scan_8x8, vp10_mrow_iscan_8x8, mrow_scan_8x8_neighbors },
+      { mcol_scan_8x8, vp10_mcol_iscan_8x8, mcol_scan_8x8_neighbors },
+      { mrow_scan_8x8, vp10_mrow_iscan_8x8, mrow_scan_8x8_neighbors },
+      { mcol_scan_8x8, vp10_mcol_iscan_8x8, mcol_scan_8x8_neighbors },
+      { mrow_scan_8x8, vp10_mrow_iscan_8x8, mrow_scan_8x8_neighbors },
+      { mcol_scan_8x8, vp10_mcol_iscan_8x8, mcol_scan_8x8_neighbors },
+  },
+  {
+      // TX_16X16
+      { default_scan_16x16, vp10_default_iscan_16x16,
+        default_scan_16x16_neighbors },
+      { default_scan_16x16, vp10_default_iscan_16x16,
+        default_scan_16x16_neighbors },
+      { default_scan_16x16, vp10_default_iscan_16x16,
+        default_scan_16x16_neighbors },
+      { default_scan_16x16, vp10_default_iscan_16x16,
+        default_scan_16x16_neighbors },
+      { default_scan_16x16, vp10_default_iscan_16x16,
+        default_scan_16x16_neighbors },
+      { default_scan_16x16, vp10_default_iscan_16x16,
+        default_scan_16x16_neighbors },
+      { default_scan_16x16, vp10_default_iscan_16x16,
+        default_scan_16x16_neighbors },
+      { default_scan_16x16, vp10_default_iscan_16x16,
+        default_scan_16x16_neighbors },
+      { default_scan_16x16, vp10_default_iscan_16x16,
+        default_scan_16x16_neighbors },
+      { mrow_scan_16x16, vp10_mrow_iscan_16x16, mrow_scan_16x16_neighbors },
+      { mrow_scan_16x16, vp10_mrow_iscan_16x16, mrow_scan_16x16_neighbors },
+      { mcol_scan_16x16, vp10_mcol_iscan_16x16, mcol_scan_16x16_neighbors },
+      { mrow_scan_16x16, vp10_mrow_iscan_16x16, mrow_scan_16x16_neighbors },
+      { mcol_scan_16x16, vp10_mcol_iscan_16x16, mcol_scan_16x16_neighbors },
+      { mrow_scan_16x16, vp10_mrow_iscan_16x16, mrow_scan_16x16_neighbors },
+      { mcol_scan_16x16, vp10_mcol_iscan_16x16, mcol_scan_16x16_neighbors },
+  },
+  {
+      // TX_32X32
+      { default_scan_32x32, vp10_default_iscan_32x32,
+        default_scan_32x32_neighbors },
+      { h2_scan_32x32, vp10_h2_iscan_32x32, h2_scan_32x32_neighbors },
+      { v2_scan_32x32, vp10_v2_iscan_32x32, v2_scan_32x32_neighbors },
+      { qtr_scan_32x32, vp10_qtr_iscan_32x32, qtr_scan_32x32_neighbors },
+      { h2_scan_32x32, vp10_h2_iscan_32x32, h2_scan_32x32_neighbors },
+      { v2_scan_32x32, vp10_v2_iscan_32x32, v2_scan_32x32_neighbors },
+      { qtr_scan_32x32, vp10_qtr_iscan_32x32, qtr_scan_32x32_neighbors },
+      { qtr_scan_32x32, vp10_qtr_iscan_32x32, qtr_scan_32x32_neighbors },
+      { qtr_scan_32x32, vp10_qtr_iscan_32x32, qtr_scan_32x32_neighbors },
+      { mrow_scan_32x32, vp10_mrow_iscan_32x32, mrow_scan_32x32_neighbors },
+      { mrow_scan_32x32, vp10_mrow_iscan_32x32, mrow_scan_32x32_neighbors },
+      { mcol_scan_32x32, vp10_mcol_iscan_32x32, mcol_scan_32x32_neighbors },
+      { mrow_scan_32x32, vp10_mrow_iscan_32x32, mrow_scan_32x32_neighbors },
+      { mcol_scan_32x32, vp10_mcol_iscan_32x32, mcol_scan_32x32_neighbors },
+      { mrow_scan_32x32, vp10_mrow_iscan_32x32, mrow_scan_32x32_neighbors },
+      { mcol_scan_32x32, vp10_mcol_iscan_32x32, mcol_scan_32x32_neighbors },
+  },
+  {
+      // TX_4X8
+      { default_scan_4x8, vp10_default_iscan_4x8, default_scan_4x8_neighbors },
+      { default_scan_4x8, vp10_default_iscan_4x8, default_scan_4x8_neighbors },
+      { default_scan_4x8, vp10_default_iscan_4x8, default_scan_4x8_neighbors },
+      { default_scan_4x8, vp10_default_iscan_4x8, default_scan_4x8_neighbors },
+      { default_scan_4x8, vp10_default_iscan_4x8, default_scan_4x8_neighbors },
+      { default_scan_4x8, vp10_default_iscan_4x8, default_scan_4x8_neighbors },
+      { default_scan_4x8, vp10_default_iscan_4x8, default_scan_4x8_neighbors },
+      { default_scan_4x8, vp10_default_iscan_4x8, default_scan_4x8_neighbors },
+      { default_scan_4x8, vp10_default_iscan_4x8, default_scan_4x8_neighbors },
+      { mrow_scan_4x8, vp10_mrow_iscan_4x8, mrow_scan_4x8_neighbors },
+      { mrow_scan_4x8, vp10_mrow_iscan_4x8, mrow_scan_4x8_neighbors },
+      { mcol_scan_4x8, vp10_mcol_iscan_4x8, mcol_scan_4x8_neighbors },
+      { mrow_scan_4x8, vp10_mrow_iscan_4x8, mrow_scan_4x8_neighbors },
+      { mcol_scan_4x8, vp10_mcol_iscan_4x8, mcol_scan_4x8_neighbors },
+      { mrow_scan_4x8, vp10_mrow_iscan_4x8, mrow_scan_4x8_neighbors },
+      { mcol_scan_4x8, vp10_mcol_iscan_4x8, mcol_scan_4x8_neighbors },
+  },
+  {
+      // TX_8X4
+      { default_scan_8x4, vp10_default_iscan_8x4, default_scan_8x4_neighbors },
+      { default_scan_8x4, vp10_default_iscan_8x4, default_scan_8x4_neighbors },
+      { default_scan_8x4, vp10_default_iscan_8x4, default_scan_8x4_neighbors },
+      { default_scan_8x4, vp10_default_iscan_8x4, default_scan_8x4_neighbors },
+      { default_scan_8x4, vp10_default_iscan_8x4, default_scan_8x4_neighbors },
+      { default_scan_8x4, vp10_default_iscan_8x4, default_scan_8x4_neighbors },
+      { default_scan_8x4, vp10_default_iscan_8x4, default_scan_8x4_neighbors },
+      { default_scan_8x4, vp10_default_iscan_8x4, default_scan_8x4_neighbors },
+      { default_scan_8x4, vp10_default_iscan_8x4, default_scan_8x4_neighbors },
+      { mrow_scan_8x4, vp10_mrow_iscan_8x4, mrow_scan_8x4_neighbors },
+      { mrow_scan_8x4, vp10_mrow_iscan_8x4, mrow_scan_8x4_neighbors },
+      { mcol_scan_8x4, vp10_mcol_iscan_8x4, mcol_scan_8x4_neighbors },
+      { mrow_scan_8x4, vp10_mrow_iscan_8x4, mrow_scan_8x4_neighbors },
+      { mcol_scan_8x4, vp10_mcol_iscan_8x4, mcol_scan_8x4_neighbors },
+      { mrow_scan_8x4, vp10_mrow_iscan_8x4, mrow_scan_8x4_neighbors },
+      { mcol_scan_8x4, vp10_mcol_iscan_8x4, mcol_scan_8x4_neighbors },
+  },
+  {
+      // TX_8X16
+      { default_scan_8x16, vp10_default_iscan_8x16,
+        default_scan_8x16_neighbors },
+      { default_scan_8x16, vp10_default_iscan_8x16,
+        default_scan_8x16_neighbors },
+      { default_scan_8x16, vp10_default_iscan_8x16,
+        default_scan_8x16_neighbors },
+      { default_scan_8x16, vp10_default_iscan_8x16,
+        default_scan_8x16_neighbors },
+      { default_scan_8x16, vp10_default_iscan_8x16,
+        default_scan_8x16_neighbors },
+      { default_scan_8x16, vp10_default_iscan_8x16,
+        default_scan_8x16_neighbors },
+      { default_scan_8x16, vp10_default_iscan_8x16,
+        default_scan_8x16_neighbors },
+      { default_scan_8x16, vp10_default_iscan_8x16,
+        default_scan_8x16_neighbors },
+      { default_scan_8x16, vp10_default_iscan_8x16,
+        default_scan_8x16_neighbors },
+      { mrow_scan_8x16, vp10_mrow_iscan_8x16, mrow_scan_8x16_neighbors },
+      { mrow_scan_8x16, vp10_mrow_iscan_8x16, mrow_scan_8x16_neighbors },
+      { mcol_scan_8x16, vp10_mcol_iscan_8x16, mcol_scan_8x16_neighbors },
+      { mrow_scan_8x16, vp10_mrow_iscan_8x16, mrow_scan_8x16_neighbors },
+      { mcol_scan_8x16, vp10_mcol_iscan_8x16, mcol_scan_8x16_neighbors },
+      { mrow_scan_8x16, vp10_mrow_iscan_8x16, mrow_scan_8x16_neighbors },
+      { mcol_scan_8x16, vp10_mcol_iscan_8x16, mcol_scan_8x16_neighbors },
+  },
+  {
+      // TX_16X8
+      { default_scan_16x8, vp10_default_iscan_16x8,
+        default_scan_16x8_neighbors },
+      { default_scan_16x8, vp10_default_iscan_16x8,
+        default_scan_16x8_neighbors },
+      { default_scan_16x8, vp10_default_iscan_16x8,
+        default_scan_16x8_neighbors },
+      { default_scan_16x8, vp10_default_iscan_16x8,
+        default_scan_16x8_neighbors },
+      { default_scan_16x8, vp10_default_iscan_16x8,
+        default_scan_16x8_neighbors },
+      { default_scan_16x8, vp10_default_iscan_16x8,
+        default_scan_16x8_neighbors },
+      { default_scan_16x8, vp10_default_iscan_16x8,
+        default_scan_16x8_neighbors },
+      { default_scan_16x8, vp10_default_iscan_16x8,
+        default_scan_16x8_neighbors },
+      { default_scan_16x8, vp10_default_iscan_16x8,
+        default_scan_16x8_neighbors },
+      { mrow_scan_16x8, vp10_mrow_iscan_16x8, mrow_scan_16x8_neighbors },
+      { mrow_scan_16x8, vp10_mrow_iscan_16x8, mrow_scan_16x8_neighbors },
+      { mcol_scan_16x8, vp10_mcol_iscan_16x8, mcol_scan_16x8_neighbors },
+      { mrow_scan_16x8, vp10_mrow_iscan_16x8, mrow_scan_16x8_neighbors },
+      { mcol_scan_16x8, vp10_mcol_iscan_16x8, mcol_scan_16x8_neighbors },
+      { mrow_scan_16x8, vp10_mrow_iscan_16x8, mrow_scan_16x8_neighbors },
+      { mcol_scan_16x8, vp10_mcol_iscan_16x8, mcol_scan_16x8_neighbors },
+  },
+  {
+      // TX_16X32
+      { default_scan_16x32, vp10_default_iscan_16x32,
+        default_scan_16x32_neighbors },
+      { default_scan_16x32, vp10_default_iscan_16x32,
+        default_scan_16x32_neighbors },
+      { default_scan_16x32, vp10_default_iscan_16x32,
+        default_scan_16x32_neighbors },
+      { default_scan_16x32, vp10_default_iscan_16x32,
+        default_scan_16x32_neighbors },
+      { default_scan_16x32, vp10_default_iscan_16x32,
+        default_scan_16x32_neighbors },
+      { default_scan_16x32, vp10_default_iscan_16x32,
+        default_scan_16x32_neighbors },
+      { default_scan_16x32, vp10_default_iscan_16x32,
+        default_scan_16x32_neighbors },
+      { default_scan_16x32, vp10_default_iscan_16x32,
+        default_scan_16x32_neighbors },
+      { default_scan_16x32, vp10_default_iscan_16x32,
+        default_scan_16x32_neighbors },
+      { mrow_scan_16x32, vp10_mrow_iscan_16x32, mrow_scan_16x32_neighbors },
+      { mrow_scan_16x32, vp10_mrow_iscan_16x32, mrow_scan_16x32_neighbors },
+      { mcol_scan_16x32, vp10_mcol_iscan_16x32, mcol_scan_16x32_neighbors },
+      { mrow_scan_16x32, vp10_mrow_iscan_16x32, mrow_scan_16x32_neighbors },
+      { mcol_scan_16x32, vp10_mcol_iscan_16x32, mcol_scan_16x32_neighbors },
+      { mrow_scan_16x32, vp10_mrow_iscan_16x32, mrow_scan_16x32_neighbors },
+      { mcol_scan_16x32, vp10_mcol_iscan_16x32, mcol_scan_16x32_neighbors },
+  },
+  {
+      // TX_32X16
+      { default_scan_32x16, vp10_default_iscan_32x16,
+        default_scan_32x16_neighbors },
+      { default_scan_32x16, vp10_default_iscan_32x16,
+        default_scan_32x16_neighbors },
+      { default_scan_32x16, vp10_default_iscan_32x16,
+        default_scan_32x16_neighbors },
+      { default_scan_32x16, vp10_default_iscan_32x16,
+        default_scan_32x16_neighbors },
+      { default_scan_32x16, vp10_default_iscan_32x16,
+        default_scan_32x16_neighbors },
+      { default_scan_32x16, vp10_default_iscan_32x16,
+        default_scan_32x16_neighbors },
+      { default_scan_32x16, vp10_default_iscan_32x16,
+        default_scan_32x16_neighbors },
+      { default_scan_32x16, vp10_default_iscan_32x16,
+        default_scan_32x16_neighbors },
+      { default_scan_32x16, vp10_default_iscan_32x16,
+        default_scan_32x16_neighbors },
+      { mrow_scan_32x16, vp10_mrow_iscan_32x16, mrow_scan_32x16_neighbors },
+      { mrow_scan_32x16, vp10_mrow_iscan_32x16, mrow_scan_32x16_neighbors },
+      { mcol_scan_32x16, vp10_mcol_iscan_32x16, mcol_scan_32x16_neighbors },
+      { mrow_scan_32x16, vp10_mrow_iscan_32x16, mrow_scan_32x16_neighbors },
+      { mcol_scan_32x16, vp10_mcol_iscan_32x16, mcol_scan_32x16_neighbors },
+      { mrow_scan_32x16, vp10_mrow_iscan_32x16, mrow_scan_32x16_neighbors },
+      { mcol_scan_32x16, vp10_mcol_iscan_32x16, mcol_scan_32x16_neighbors },
   }
 };
 
index 4c2054a624fda3378530fc9496ded34c118ab04a..70f93964cfff81f4cd9cb920fa20c9c76fe505ef 100644 (file)
@@ -1783,10 +1783,11 @@ static void decode_partition(VP10Decoder *const pbi, MACROBLOCKD *const xd,
 #if DERING_REFINEMENT
   if (bsize == BLOCK_64X64) {
     if (cm->dering_level != 0 && !sb_all_skip(cm, mi_row, mi_col)) {
-      cm->mi_grid_visible[mi_row*cm->mi_stride + mi_col]->mbmi.dering_gain =
+      cm->mi_grid_visible[mi_row * cm->mi_stride + mi_col]->mbmi.dering_gain =
           vpx_read_literal(r, DERING_REFINEMENT_BITS);
     } else {
-      cm->mi_grid_visible[mi_row*cm->mi_stride + mi_col]->mbmi.dering_gain = 0;
+      cm->mi_grid_visible[mi_row * cm->mi_stride + mi_col]->mbmi.dering_gain =
+          0;
     }
   }
 #endif  // DERGING_REFINEMENT
@@ -1967,7 +1968,7 @@ static void setup_clpf(VP10_COMMON *cm, struct vpx_read_bit_buffer *rb) {
 
 #if CONFIG_DERING
 static void setup_dering(VP10_COMMON *cm, struct vpx_read_bit_buffer *rb) {
-  cm->dering_level = vpx_rb_read_literal(rb,  DERING_LEVEL_BITS);
+  cm->dering_level = vpx_rb_read_literal(rb, DERING_LEVEL_BITS);
 }
 #endif  // CONFIG_DERING
 
@@ -3390,7 +3391,7 @@ static void read_global_motion_params(Global_Motion_Params *params,
            GM_ALPHA_DECODE_FACTOR);
       params->motion_params.wmmat[5] =
           vp10_read_primitive_symmetric(r, GM_ABS_ALPHA_BITS) *
-          GM_ALPHA_DECODE_FACTOR +
+              GM_ALPHA_DECODE_FACTOR +
           (1 << WARPEDMODEL_PREC_BITS);
     // fallthrough intended
     case GLOBAL_ROTZOOM:
index 81d8991f66e6144acbb7fad91246d67d7cf3da5f..ce2708efc4886ec94f6585b689429f8c87fa9170 100644 (file)
@@ -1883,7 +1883,8 @@ static void write_modes_sb(VP10_COMP *const cpi, const TileInfo *const tile,
   if (bsize == BLOCK_64X64 && cm->dering_level != 0 &&
       !sb_all_skip(cm, mi_row, mi_col)) {
     vpx_write_literal(
-        w, cm->mi_grid_visible[mi_row*cm->mi_stride + mi_col]->mbmi.dering_gain,
+        w,
+        cm->mi_grid_visible[mi_row * cm->mi_stride + mi_col]->mbmi.dering_gain,
         DERING_REFINEMENT_BITS);
   }
 #endif
index 6df8aa7c85a0efb5e88e719e85d2223f654f11dc..2f52ed93c3e29616737564ed06eeef74148b93bd 100644 (file)
@@ -1253,18 +1253,18 @@ static const transform_2d FHT_8x4[] = {
 };
 
 static const transform_2d FHT_8x16[] = {
-  { fdct16,  fdct8  },  // DCT_DCT
-  { fadst16, fdct8  },  // ADST_DCT
-  { fdct16,  fadst8 },  // DCT_ADST
+  { fdct16, fdct8 },    // DCT_DCT
+  { fadst16, fdct8 },   // ADST_DCT
+  { fdct16, fadst8 },   // DCT_ADST
   { fadst16, fadst8 },  // ADST_ADST
-  { fadst16, fdct8  },  // FLIPADST_DCT
-  { fdct16,  fadst8 },  // DCT_FLIPADST
+  { fadst16, fdct8 },   // FLIPADST_DCT
+  { fdct16, fadst8 },   // DCT_FLIPADST
   { fadst16, fadst8 },  // FLIPADST_FLIPADST
   { fadst16, fadst8 },  // ADST_FLIPADST
   { fadst16, fadst8 },  // FLIPADST_ADST
   { fidtx16, fidtx8 },  // IDTX
-  { fdct16,  fidtx8 },  // V_DCT
-  { fidtx16, fdct8  },  // H_DCT
+  { fdct16, fidtx8 },   // V_DCT
+  { fidtx16, fdct8 },   // H_DCT
   { fadst16, fidtx8 },  // V_ADST
   { fidtx16, fadst8 },  // H_ADST
   { fadst16, fidtx8 },  // V_FLIPADST
@@ -1272,18 +1272,18 @@ static const transform_2d FHT_8x16[] = {
 };
 
 static const transform_2d FHT_16x8[] = {
-  { fdct8,  fdct16  },  // DCT_DCT
-  { fadst8, fdct16  },  // ADST_DCT
-  { fdct8,  fadst16 },  // DCT_ADST
+  { fdct8, fdct16 },    // DCT_DCT
+  { fadst8, fdct16 },   // ADST_DCT
+  { fdct8, fadst16 },   // DCT_ADST
   { fadst8, fadst16 },  // ADST_ADST
-  { fadst8, fdct16  },  // FLIPADST_DCT
-  { fdct8,  fadst16 },  // DCT_FLIPADST
+  { fadst8, fdct16 },   // FLIPADST_DCT
+  { fdct8, fadst16 },   // DCT_FLIPADST
   { fadst8, fadst16 },  // FLIPADST_FLIPADST
   { fadst8, fadst16 },  // ADST_FLIPADST
   { fadst8, fadst16 },  // FLIPADST_ADST
   { fidtx8, fidtx16 },  // IDTX
-  { fdct8,  fidtx16 },  // V_DCT
-  { fidtx8, fdct16  },  // H_DCT
+  { fdct8, fidtx16 },   // V_DCT
+  { fidtx8, fdct16 },   // H_DCT
   { fadst8, fidtx16 },  // V_ADST
   { fidtx8, fadst16 },  // H_ADST
   { fadst8, fidtx16 },  // V_FLIPADST
@@ -1291,40 +1291,40 @@ static const transform_2d FHT_16x8[] = {
 };
 
 static const transform_2d FHT_16x32[] = {
-  { fdct32,       fdct16  },    // DCT_DCT
-  { fhalfright32, fdct16  },    // ADST_DCT
-  { fdct32,       fadst16 },    // DCT_ADST
-  { fhalfright32, fadst16 },    // ADST_ADST
-  { fhalfright32, fdct16  },    // FLIPADST_DCT
-  { fdct32,       fadst16 },    // DCT_FLIPADST
-  { fhalfright32, fadst16 },    // FLIPADST_FLIPADST
-  { fhalfright32, fadst16 },    // ADST_FLIPADST
-  { fhalfright32, fadst16 },    // FLIPADST_ADST
-  { fidtx32,      fidtx16 },    // IDTX
-  { fdct32,       fidtx16 },    // V_DCT
-  { fidtx32,      fdct16  },    // H_DCT
-  { fhalfright32, fidtx16 },    // V_ADST
-  { fidtx32,      fadst16 },    // H_ADST
-  { fhalfright32, fidtx16 },    // V_FLIPADST
-  { fidtx32,      fadst16 },    // H_FLIPADST
+  { fdct32, fdct16 },         // DCT_DCT
+  { fhalfright32, fdct16 },   // ADST_DCT
+  { fdct32, fadst16 },        // DCT_ADST
+  { fhalfright32, fadst16 },  // ADST_ADST
+  { fhalfright32, fdct16 },   // FLIPADST_DCT
+  { fdct32, fadst16 },        // DCT_FLIPADST
+  { fhalfright32, fadst16 },  // FLIPADST_FLIPADST
+  { fhalfright32, fadst16 },  // ADST_FLIPADST
+  { fhalfright32, fadst16 },  // FLIPADST_ADST
+  { fidtx32, fidtx16 },       // IDTX
+  { fdct32, fidtx16 },        // V_DCT
+  { fidtx32, fdct16 },        // H_DCT
+  { fhalfright32, fidtx16 },  // V_ADST
+  { fidtx32, fadst16 },       // H_ADST
+  { fhalfright32, fidtx16 },  // V_FLIPADST
+  { fidtx32, fadst16 },       // H_FLIPADST
 };
 
 static const transform_2d FHT_32x16[] = {
-  { fdct16,  fdct32       },  // DCT_DCT
-  { fadst16, fdct32       },  // ADST_DCT
-  { fdct16,  fhalfright32 },  // DCT_ADST
+  { fdct16, fdct32 },         // DCT_DCT
+  { fadst16, fdct32 },        // ADST_DCT
+  { fdct16, fhalfright32 },   // DCT_ADST
   { fadst16, fhalfright32 },  // ADST_ADST
-  { fadst16, fdct32       },  // FLIPADST_DCT
-  { fdct16,  fhalfright32 },  // DCT_FLIPADST
+  { fadst16, fdct32 },        // FLIPADST_DCT
+  { fdct16, fhalfright32 },   // DCT_FLIPADST
   { fadst16, fhalfright32 },  // FLIPADST_FLIPADST
   { fadst16, fhalfright32 },  // ADST_FLIPADST
   { fadst16, fhalfright32 },  // FLIPADST_ADST
-  { fidtx16, fidtx32      },  // IDTX
-  { fdct16,  fidtx32      },  // V_DCT
-  { fidtx16, fdct32       },  // H_DCT
-  { fadst16, fidtx32      },  // V_ADST
+  { fidtx16, fidtx32 },       // IDTX
+  { fdct16, fidtx32 },        // V_DCT
+  { fidtx16, fdct32 },        // H_DCT
+  { fadst16, fidtx32 },       // V_ADST
   { fidtx16, fhalfright32 },  // H_ADST
-  { fadst16, fidtx32      },  // V_FLIPADST
+  { fadst16, fidtx32 },       // V_FLIPADST
   { fidtx16, fhalfright32 },  // H_FLIPADST
 };
 #endif  // CONFIG_EXT_TX
@@ -1376,11 +1376,10 @@ void vp10_fht4x8_c(const int16_t *input, tran_low_t *output, int stride,
   // Columns
   for (i = 0; i < n; ++i) {
     for (j = 0; j < n2; ++j)
-      temp_in[j] = (tran_low_t)fdct_round_shift(
-          input[j * stride + i] * 8 * Sqrt2);
+      temp_in[j] =
+          (tran_low_t)fdct_round_shift(input[j * stride + i] * 8 * Sqrt2);
     ht.cols(temp_in, temp_out);
-    for (j = 0; j < n2; ++j)
-      out[j * n + i] = temp_out[j];
+    for (j = 0; j < n2; ++j) out[j * n + i] = temp_out[j];
   }
 
   // Rows
@@ -1406,11 +1405,10 @@ void vp10_fht8x4_c(const int16_t *input, tran_low_t *output, int stride,
   // Columns
   for (i = 0; i < n2; ++i) {
     for (j = 0; j < n; ++j)
-      temp_in[j] = (tran_low_t)fdct_round_shift(
-          input[j * stride + i] * 8 * Sqrt2);
+      temp_in[j] =
+          (tran_low_t)fdct_round_shift(input[j * stride + i] * 8 * Sqrt2);
     ht.cols(temp_in, temp_out);
-    for (j = 0; j < n; ++j)
-      out[j * n2 + i] = temp_out[j];
+    for (j = 0; j < n; ++j) out[j * n2 + i] = temp_out[j];
   }
 
   // Rows
@@ -1422,8 +1420,8 @@ void vp10_fht8x4_c(const int16_t *input, tran_low_t *output, int stride,
   // Note: overall scale factor of transform is 8 times unitary
 }
 
-void vp10_fht8x16_c(const int16_t *input, tran_low_t *output,
-                    int stride, int tx_type) {
+void vp10_fht8x16_c(const int16_t *input, tran_low_t *output, int stride,
+                    int tx_type) {
   const int n = 8;
   const int n2 = 16;
   tran_low_t out[16 * 8];
@@ -1436,26 +1434,23 @@ void vp10_fht8x16_c(const int16_t *input, tran_low_t *output,
   // Columns
   for (i = 0; i < n; ++i) {
     for (j = 0; j < n2; ++j)
-      temp_in[j] = (tran_low_t)fdct_round_shift(
-          input[j * stride + i] * 4 * Sqrt2);
+      temp_in[j] =
+          (tran_low_t)fdct_round_shift(input[j * stride + i] * 4 * Sqrt2);
     ht.cols(temp_in, temp_out);
-    for (j = 0; j < n2; ++j)
-      out[j * n + i] = temp_out[j];
+    for (j = 0; j < n2; ++j) out[j * n + i] = temp_out[j];
   }
 
   // Rows
   for (i = 0; i < n2; ++i) {
-    for (j = 0; j < n; ++j)
-      temp_in[j] = out[j + i * n];
+    for (j = 0; j < n; ++j) temp_in[j] = out[j + i * n];
     ht.rows(temp_in, temp_out);
-    for (j = 0; j < n; ++j)
-      output[j + i * n] = (temp_out[j] + 1) >> 1;
+    for (j = 0; j < n; ++j) output[j + i * n] = (temp_out[j] + 1) >> 1;
   }
   // Note: overall scale factor of transform is 8 times unitary
 }
 
-void vp10_fht16x8_c(const int16_t *input, tran_low_t *output,
-                   int stride, int tx_type) {
+void vp10_fht16x8_c(const int16_t *input, tran_low_t *output, int stride,
+                    int tx_type) {
   const int n = 8;
   const int n2 = 16;
   tran_low_t out[16 * 8];
@@ -1468,26 +1463,23 @@ void vp10_fht16x8_c(const int16_t *input, tran_low_t *output,
   // Columns
   for (i = 0; i < n2; ++i) {
     for (j = 0; j < n; ++j)
-      temp_in[j] = (tran_low_t)fdct_round_shift(
-          input[j * stride + i] * 4 * Sqrt2);
+      temp_in[j] =
+          (tran_low_t)fdct_round_shift(input[j * stride + i] * 4 * Sqrt2);
     ht.cols(temp_in, temp_out);
-    for (j = 0; j < n; ++j)
-      out[j * n2 + i] = temp_out[j];
+    for (j = 0; j < n; ++j) out[j * n2 + i] = temp_out[j];
   }
 
   // Rows
   for (i = 0; i < n; ++i) {
-    for (j = 0; j < n2; ++j)
-      temp_in[j] = out[j + i * n2];
+    for (j = 0; j < n2; ++j) temp_in[j] = out[j + i * n2];
     ht.rows(temp_in, temp_out);
-    for (j = 0; j < n2; ++j)
-      output[j + i * n2] = (temp_out[j] + 1) >> 1;
+    for (j = 0; j < n2; ++j) output[j + i * n2] = (temp_out[j] + 1) >> 1;
   }
   // Note: overall scale factor of transform is 8 times unitary
 }
 
-void vp10_fht16x32_c(const int16_t *input, tran_low_t *output,
-                     int stride, int tx_type) {
+void vp10_fht16x32_c(const int16_t *input, tran_low_t *output, int stride,
+                     int tx_type) {
   const int n = 16;
   const int n2 = 32;
   tran_low_t out[32 * 16];
@@ -1500,17 +1492,14 @@ void vp10_fht16x32_c(const int16_t *input, tran_low_t *output,
   // Columns
   for (i = 0; i < n; ++i) {
     for (j = 0; j < n2; ++j)
-      temp_in[j] = (tran_low_t)fdct_round_shift(
-          input[j * stride + i] * Sqrt2);
+      temp_in[j] = (tran_low_t)fdct_round_shift(input[j * stride + i] * Sqrt2);
     ht.cols(temp_in, temp_out);
-    for (j = 0; j < n2; ++j)
-      out[j * n + i] = temp_out[j];
+    for (j = 0; j < n2; ++j) out[j * n + i] = temp_out[j];
   }
 
   // Rows
   for (i = 0; i < n2; ++i) {
-    for (j = 0; j < n; ++j)
-      temp_in[j] = out[j + i * n];
+    for (j = 0; j < n; ++j) temp_in[j] = out[j + i * n];
     ht.rows(temp_in, temp_out);
     for (j = 0; j < n; ++j)
       output[j + i * n] =
@@ -1519,8 +1508,8 @@ void vp10_fht16x32_c(const int16_t *input, tran_low_t *output,
   // Note: overall scale factor of transform is 4 times unitary
 }
 
-void vp10_fht32x16_c(const int16_t *input, tran_low_t *output,
-                   int stride, int tx_type) {
+void vp10_fht32x16_c(const int16_t *input, tran_low_t *output, int stride,
+                     int tx_type) {
   const int n = 16;
   const int n2 = 32;
   tran_low_t out[32 * 16];
@@ -1533,17 +1522,14 @@ void vp10_fht32x16_c(const int16_t *input, tran_low_t *output,
   // Columns
   for (i = 0; i < n2; ++i) {
     for (j = 0; j < n; ++j)
-      temp_in[j] = (tran_low_t)fdct_round_shift(
-          input[j * stride + i] * Sqrt2);
+      temp_in[j] = (tran_low_t)fdct_round_shift(input[j * stride + i] * Sqrt2);
     ht.cols(temp_in, temp_out);
-    for (j = 0; j < n; ++j)
-      out[j * n2 + i] = temp_out[j];
+    for (j = 0; j < n; ++j) out[j * n2 + i] = temp_out[j];
   }
 
   // Rows
   for (i = 0; i < n; ++i) {
-    for (j = 0; j < n2; ++j)
-      temp_in[j] = out[j + i * n2];
+    for (j = 0; j < n2; ++j) temp_in[j] = out[j + i * n2];
     ht.rows(temp_in, temp_out);
     for (j = 0; j < n2; ++j)
       output[j + i * n2] =
@@ -1807,23 +1793,23 @@ void vp10_highbd_fht4x4_c(const int16_t *input, tran_low_t *output, int stride,
 }
 
 #if CONFIG_EXT_TX
-void vp10_highbd_fht4x8_c(const int16_t *input, tran_low_t *output,
-                          int stride, int tx_type) {
+void vp10_highbd_fht4x8_c(const int16_t *input, tran_low_t *output, int stride,
+                          int tx_type) {
   vp10_fht4x8_c(input, output, stride, tx_type);
 }
 
-void vp10_highbd_fht8x4_c(const int16_t *input, tran_low_t *output,
-                          int stride, int tx_type) {
+void vp10_highbd_fht8x4_c(const int16_t *input, tran_low_t *output, int stride,
+                          int tx_type) {
   vp10_fht8x4_c(input, output, stride, tx_type);
 }
 
-void vp10_highbd_fht8x16_c(const int16_t *input, tran_low_t *output,
-                           int stride, int tx_type) {
+void vp10_highbd_fht8x16_c(const int16_t *input, tran_low_t *output, int stride,
+                           int tx_type) {
   vp10_fht8x16_c(input, output, stride, tx_type);
 }
 
-void vp10_highbd_fht16x8_c(const int16_t *input, tran_low_t *output,
-                           int stride, int tx_type) {
+void vp10_highbd_fht16x8_c(const int16_t *input, tran_low_t *output, int stride,
+                           int tx_type) {
   vp10_fht16x8_c(input, output, stride, tx_type);
 }
 
index 823c8610aaa0848b5051eaa2d871d412c22f6576..6bf980dc052b70354bc2da81727a91664a941636 100644 (file)
@@ -3349,8 +3349,8 @@ static void loopfilter_frame(VP10_COMP *cpi, VP10_COMMON *cm) {
   if (is_lossless_requested(&cpi->oxcf)) {
     cm->dering_level = 0;
   } else {
-    cm->dering_level = vp10_dering_search(cm->frame_to_show, cpi->Source, cm,
-                                          xd);
+    cm->dering_level =
+        vp10_dering_search(cm->frame_to_show, cpi->Source, cm, xd);
     vp10_dering_frame(cm->frame_to_show, cm, xd, cm->dering_level);
   }
 #endif  // CONFIG_DERING
index 72100cc1a17461951dad33192e7e5e8a99cca000..3c70a5a267b236c0259a7b62e3d225fd354b7d69 100644 (file)
@@ -58,42 +58,42 @@ static void fwd_txfm_4x4(const int16_t *src_diff, tran_low_t *coeff,
 static void fwd_txfm_4x8(const int16_t *src_diff, tran_low_t *coeff,
                          int diff_stride, TX_TYPE tx_type,
                          FWD_TXFM_OPT fwd_txfm_opt) {
-  (void) fwd_txfm_opt;
+  (void)fwd_txfm_opt;
   vp10_fht4x8(src_diff, coeff, diff_stride, tx_type);
 }
 
 static void fwd_txfm_8x4(const int16_t *src_diff, tran_low_t *coeff,
                          int diff_stride, TX_TYPE tx_type,
                          FWD_TXFM_OPT fwd_txfm_opt) {
-  (void) fwd_txfm_opt;
+  (void)fwd_txfm_opt;
   vp10_fht8x4(src_diff, coeff, diff_stride, tx_type);
 }
 
 static void fwd_txfm_8x16(const int16_t *src_diff, tran_low_t *coeff,
                           int diff_stride, TX_TYPE tx_type,
                           FWD_TXFM_OPT fwd_txfm_opt) {
-  (void) fwd_txfm_opt;
+  (void)fwd_txfm_opt;
   vp10_fht8x16(src_diff, coeff, diff_stride, tx_type);
 }
 
 static void fwd_txfm_16x8(const int16_t *src_diff, tran_low_t *coeff,
                           int diff_stride, TX_TYPE tx_type,
                           FWD_TXFM_OPT fwd_txfm_opt) {
-  (void) fwd_txfm_opt;
+  (void)fwd_txfm_opt;
   vp10_fht16x8(src_diff, coeff, diff_stride, tx_type);
 }
 
 static void fwd_txfm_16x32(const int16_t *src_diff, tran_low_t *coeff,
                            int diff_stride, TX_TYPE tx_type,
                            FWD_TXFM_OPT fwd_txfm_opt) {
-  (void) fwd_txfm_opt;
+  (void)fwd_txfm_opt;
   vp10_fht16x32(src_diff, coeff, diff_stride, tx_type);
 }
 
 static void fwd_txfm_32x16(const int16_t *src_diff, tran_low_t *coeff,
                            int diff_stride, TX_TYPE tx_type,
                            FWD_TXFM_OPT fwd_txfm_opt) {
-  (void) fwd_txfm_opt;
+  (void)fwd_txfm_opt;
   vp10_fht32x16(src_diff, coeff, diff_stride, tx_type);
 }
 #endif  // CONFIG_EXT_TX
@@ -244,48 +244,48 @@ static void highbd_fwd_txfm_4x4(const int16_t *src_diff, tran_low_t *coeff,
 static void highbd_fwd_txfm_4x8(const int16_t *src_diff, tran_low_t *coeff,
                                 int diff_stride, TX_TYPE tx_type,
                                 FWD_TXFM_OPT fwd_txfm_opt, const int bd) {
-  (void) fwd_txfm_opt;
-  (void) bd;
+  (void)fwd_txfm_opt;
+  (void)bd;
   vp10_highbd_fht4x8(src_diff, coeff, diff_stride, tx_type);
 }
 
 static void highbd_fwd_txfm_8x4(const int16_t *src_diff, tran_low_t *coeff,
                                 int diff_stride, TX_TYPE tx_type,
                                 FWD_TXFM_OPT fwd_txfm_opt, const int bd) {
-  (void) fwd_txfm_opt;
-  (void) bd;
+  (void)fwd_txfm_opt;
+  (void)bd;
   vp10_highbd_fht8x4(src_diff, coeff, diff_stride, tx_type);
 }
 
 static void highbd_fwd_txfm_8x16(const int16_t *src_diff, tran_low_t *coeff,
                                  int diff_stride, TX_TYPE tx_type,
                                  FWD_TXFM_OPT fwd_txfm_opt, const int bd) {
-  (void) fwd_txfm_opt;
-  (void) bd;
+  (void)fwd_txfm_opt;
+  (void)bd;
   vp10_highbd_fht8x16(src_diff, coeff, diff_stride, tx_type);
 }
 
 static void highbd_fwd_txfm_16x8(const int16_t *src_diff, tran_low_t *coeff,
                                  int diff_stride, TX_TYPE tx_type,
                                  FWD_TXFM_OPT fwd_txfm_opt, const int bd) {
-  (void) fwd_txfm_opt;
-  (void) bd;
+  (void)fwd_txfm_opt;
+  (void)bd;
   vp10_highbd_fht16x8(src_diff, coeff, diff_stride, tx_type);
 }
 
 static void highbd_fwd_txfm_16x32(const int16_t *src_diff, tran_low_t *coeff,
                                   int diff_stride, TX_TYPE tx_type,
                                   FWD_TXFM_OPT fwd_txfm_opt, const int bd) {
-  (void) fwd_txfm_opt;
-  (void) bd;
+  (void)fwd_txfm_opt;
+  (void)bd;
   vp10_highbd_fht16x32(src_diff, coeff, diff_stride, tx_type);
 }
 
 static void highbd_fwd_txfm_32x16(const int16_t *src_diff, tran_low_t *coeff,
                                   int diff_stride, TX_TYPE tx_type,
                                   FWD_TXFM_OPT fwd_txfm_opt, const int bd) {
-  (void) fwd_txfm_opt;
-  (void) bd;
+  (void)fwd_txfm_opt;
+  (void)bd;
   vp10_highbd_fht32x16(src_diff, coeff, diff_stride, tx_type);
 }
 #endif  // CONFIG_EXT_TX
@@ -473,29 +473,26 @@ void highbd_fwd_txfm(const int16_t *src_diff, tran_low_t *coeff,
                           bd);
       break;
     case TX_8X16:
-      highbd_fwd_txfm_8x16(src_diff, coeff, diff_stride, tx_type,
-                           fwd_txfm_opt, bd);
+      highbd_fwd_txfm_8x16(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt,
+                           bd);
       break;
     case TX_16X8:
-      highbd_fwd_txfm_16x8(src_diff, coeff, diff_stride, tx_type,
-                           fwd_txfm_opt, bd);
+      highbd_fwd_txfm_16x8(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt,
+                           bd);
       break;
     case TX_16X32:
-      highbd_fwd_txfm_16x32(src_diff, coeff, diff_stride, tx_type,
-                            fwd_txfm_opt, bd);
+      highbd_fwd_txfm_16x32(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt,
+                            bd);
       break;
     case TX_32X16:
-      highbd_fwd_txfm_32x16(src_diff, coeff, diff_stride, tx_type,
-                            fwd_txfm_opt, bd);
+      highbd_fwd_txfm_32x16(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt,
+                            bd);
       break;
 #endif  // CONFIG_EXT_TX
     case TX_4X4:
-      highbd_fwd_txfm_4x4(src_diff, coeff, diff_stride, tx_type,
-                          lossless, bd);
-      break;
-    default:
-      assert(0);
+      highbd_fwd_txfm_4x4(src_diff, coeff, diff_stride, tx_type, lossless, bd);
       break;
+    default: assert(0); break;
   }
 }
 #endif  // CONFIG_VP9_HIGHBITDEPTH
index 5a185ee70c22ffaa4fd3b4c837ae0aa3866cf997..45acaa1dc0cbd9c3b5cc4d76c5c474e5bc202544 100644 (file)
 #include "vpx/vpx_integer.h"
 
 static double compute_dist(int16_t *x, int xstride, int16_t *y, int ystride,
-    int nhb, int nvb, int coeff_shift) {
+                           int nhb, int nvb, int coeff_shift) {
   int i, j;
   double sum;
   sum = 0;
   for (i = 0; i < nvb << 3; i++) {
     for (j = 0; j < nhb << 3; j++) {
       double tmp;
-      tmp = x[i*xstride + j] - y[i*ystride + j];
-      sum += tmp*tmp;
+      tmp = x[i * xstride + j] - y[i * ystride + j];
+      sum += tmp * tmp;
     }
   }
-  return sum/(double)(1 << 2*coeff_shift);
+  return sum / (double)(1 << 2 * coeff_shift);
 }
 
 int vp10_dering_search(YV12_BUFFER_CONFIG *frame, const YV12_BUFFER_CONFIG *ref,
-                       VP10_COMMON *cm,
-                       MACROBLOCKD *xd) {
+                       VP10_COMMON *cm, MACROBLOCKD *xd) {
   int r, c;
   int sbr, sbc;
   int nhsb, nvsb;
   od_dering_in *src;
   int16_t *ref_coeff;
   unsigned char *bskip;
-  int dir[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS] = {{0}};
+  int dir[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS] = { { 0 } };
   int stride;
   int bsize[3];
   int dec[3];
   int pli;
-  int (*mse)[MAX_DERING_LEVEL];
-  int best_count[MAX_DERING_LEVEL] = {0};
-  double tot_mse[MAX_DERING_LEVEL] = {0};
+  int(*mse)[MAX_DERING_LEVEL];
+  int best_count[MAX_DERING_LEVEL] = { 0 };
+  double tot_mse[MAX_DERING_LEVEL] = { 0 };
   int level;
   int best_level;
   int global_level;
   double best_tot_mse = 1e15;
   int coeff_shift = VPXMAX(cm->bit_depth - 8, 0);
-  src = vpx_malloc(sizeof(*src)*cm->mi_rows*cm->mi_cols*64);
-  ref_coeff = vpx_malloc(sizeof(*ref_coeff)*cm->mi_rows*cm->mi_cols*64);
-  bskip = vpx_malloc(sizeof(*bskip)*cm->mi_rows*cm->mi_cols);
+  src = vpx_malloc(sizeof(*src) * cm->mi_rows * cm->mi_cols * 64);
+  ref_coeff = vpx_malloc(sizeof(*ref_coeff) * cm->mi_rows * cm->mi_cols * 64);
+  bskip = vpx_malloc(sizeof(*bskip) * cm->mi_rows * cm->mi_cols);
   vp10_setup_dst_planes(xd->plane, frame, 0, 0);
   for (pli = 0; pli < 3; pli++) {
     dec[pli] = xd->plane[pli].subsampling_x;
     bsize[pli] = 8 >> dec[pli];
   }
-  stride = bsize[0]*cm->mi_cols;
-  for (r = 0; r < bsize[0]*cm->mi_rows; ++r) {
-    for (c = 0; c < bsize[0]*cm->mi_cols; ++c) {
+  stride = bsize[0] * cm->mi_cols;
+  for (r = 0; r < bsize[0] * cm->mi_rows; ++r) {
+    for (c = 0; c < bsize[0] * cm->mi_cols; ++c) {
 #if CONFIG_VPX_HIGHBITDEPTH
       if (cm->use_highbitdepth) {
-        src[r * stride + c] =
-            CONVERT_TO_SHORTPTR(xd->plane[0].dst.buf)
-            [r*xd->plane[0].dst.stride + c];
+        src[r * stride + c] = CONVERT_TO_SHORTPTR(
+            xd->plane[0].dst.buf)[r * xd->plane[0].dst.stride + c];
         ref_coeff[r * stride + c] =
             CONVERT_TO_SHORTPTR(ref->y_buffer)[r * ref->y_stride + c];
       } else {
 #endif
         src[r * stride + c] =
-            xd->plane[0].dst.buf[r*xd->plane[0].dst.stride + c];
+            xd->plane[0].dst.buf[r * xd->plane[0].dst.stride + c];
         ref_coeff[r * stride + c] = ref->y_buffer[r * ref->y_stride + c];
 #if CONFIG_VPX_HIGHBITDEPTH
       }
@@ -89,37 +87,35 @@ int vp10_dering_search(YV12_BUFFER_CONFIG *frame, const YV12_BUFFER_CONFIG *ref,
       bskip[r * cm->mi_cols + c] = mbmi->skip;
     }
   }
-  nvsb = (cm->mi_rows + MAX_MIB_SIZE - 1)/MAX_MIB_SIZE;
-  nhsb = (cm->mi_cols + MAX_MIB_SIZE - 1)/MAX_MIB_SIZE;
-  mse = vpx_malloc(nvsb*nhsb*sizeof(*mse));
+  nvsb = (cm->mi_rows + MAX_MIB_SIZE - 1) / MAX_MIB_SIZE;
+  nhsb = (cm->mi_cols + MAX_MIB_SIZE - 1) / MAX_MIB_SIZE;
+  mse = vpx_malloc(nvsb * nhsb * sizeof(*mse));
   for (sbr = 0; sbr < nvsb; sbr++) {
     for (sbc = 0; sbc < nhsb; sbc++) {
       int best_mse = 1000000000;
       int nvb, nhb;
-      int16_t dst[MAX_MIB_SIZE*MAX_MIB_SIZE*8*8];
+      int16_t dst[MAX_MIB_SIZE * MAX_MIB_SIZE * 8 * 8];
       best_level = 0;
-      nhb = VPXMIN(MAX_MIB_SIZE, cm->mi_cols - MAX_MIB_SIZE*sbc);
-      nvb = VPXMIN(MAX_MIB_SIZE, cm->mi_rows - MAX_MIB_SIZE*sbr);
+      nhb = VPXMIN(MAX_MIB_SIZE, cm->mi_cols - MAX_MIB_SIZE * sbc);
+      nvb = VPXMIN(MAX_MIB_SIZE, cm->mi_rows - MAX_MIB_SIZE * sbr);
       for (level = 0; level < 64; level++) {
         int threshold;
         threshold = level << coeff_shift;
         od_dering(
-            &OD_DERING_VTBL_C,
-            dst,
-            MAX_MIB_SIZE*bsize[0],
-            &src[sbr*stride*bsize[0]*MAX_MIB_SIZE +
-            sbc*bsize[0]*MAX_MIB_SIZE],
-            cm->mi_cols*bsize[0], nhb, nvb, sbc, sbr, nhsb, nvsb, 0, dir, 0,
-            &bskip[MAX_MIB_SIZE*sbr*cm->mi_cols + MAX_MIB_SIZE*sbc],
+            &OD_DERING_VTBL_C, dst, MAX_MIB_SIZE * bsize[0],
+            &src[sbr * stride * bsize[0] * MAX_MIB_SIZE +
+                 sbc * bsize[0] * MAX_MIB_SIZE],
+            cm->mi_cols * bsize[0], nhb, nvb, sbc, sbr, nhsb, nvsb, 0, dir, 0,
+            &bskip[MAX_MIB_SIZE * sbr * cm->mi_cols + MAX_MIB_SIZE * sbc],
             cm->mi_cols, threshold, OD_DERING_NO_CHECK_OVERLAP, coeff_shift);
-        mse[nhsb*sbr+sbc][level] = (int)compute_dist(
-            dst, MAX_MIB_SIZE*bsize[0],
-            &ref_coeff[sbr*stride*bsize[0]*MAX_MIB_SIZE +
-            sbc*bsize[0]*MAX_MIB_SIZE],
+        mse[nhsb * sbr + sbc][level] = (int)compute_dist(
+            dst, MAX_MIB_SIZE * bsize[0],
+            &ref_coeff[sbr * stride * bsize[0] * MAX_MIB_SIZE +
+                       sbc * bsize[0] * MAX_MIB_SIZE],
             stride, nhb, nvb, coeff_shift);
-        tot_mse[level] += mse[nhsb*sbr+sbc][level];
-        if (mse[nhsb*sbr+sbc][level] < best_mse) {
-          best_mse = mse[nhsb*sbr+sbc][level];
+        tot_mse[level] += mse[nhsb * sbr + sbc][level];
+        if (mse[nhsb * sbr + sbc][level] < best_mse) {
+          best_mse = mse[nhsb * sbr + sbc][level];
           best_level = level;
         }
       }
@@ -134,11 +130,11 @@ int vp10_dering_search(YV12_BUFFER_CONFIG *frame, const YV12_BUFFER_CONFIG *ref,
     for (sbr = 0; sbr < nvsb; sbr++) {
       for (sbc = 0; sbc < nhsb; sbc++) {
         int gi;
-        int best_mse = mse[nhsb*sbr+sbc][0];
+        int best_mse = mse[nhsb * sbr + sbc][0];
         for (gi = 1; gi < 4; gi++) {
           level = compute_level_from_index(global_level, gi);
-          if (mse[nhsb*sbr+sbc][level] < best_mse) {
-            best_mse = mse[nhsb*sbr+sbc][level];
+          if (mse[nhsb * sbr + sbc][level] < best_mse) {
+            best_mse = mse[nhsb * sbr + sbc][level];
           }
         }
         tot_mse += best_mse;
@@ -153,24 +149,25 @@ int vp10_dering_search(YV12_BUFFER_CONFIG *frame, const YV12_BUFFER_CONFIG *ref,
     for (sbc = 0; sbc < nhsb; sbc++) {
       int gi;
       int best_gi;
-      int best_mse = mse[nhsb*sbr+sbc][0];
+      int best_mse = mse[nhsb * sbr + sbc][0];
       best_gi = 0;
       for (gi = 1; gi < DERING_REFINEMENT_LEVELS; gi++) {
         level = compute_level_from_index(best_level, gi);
-        if (mse[nhsb*sbr+sbc][level] < best_mse) {
+        if (mse[nhsb * sbr + sbc][level] < best_mse) {
           best_gi = gi;
-          best_mse = mse[nhsb*sbr+sbc][level];
+          best_mse = mse[nhsb * sbr + sbc][level];
         }
       }
-      cm->mi_grid_visible[MAX_MIB_SIZE*sbr*cm->mi_stride + MAX_MIB_SIZE*sbc]->
-          mbmi.dering_gain = best_gi;
+      cm->mi_grid_visible[MAX_MIB_SIZE * sbr * cm->mi_stride +
+                          MAX_MIB_SIZE * sbc]
+          ->mbmi.dering_gain = best_gi;
     }
   }
 #else
-  best_level = 0;
-  for (level = 0; level < MAX_DERING_LEVEL; level++) {
-    if (tot_mse[level] < tot_mse[best_level]) best_level = level;
-  }
+    best_level = 0;
+    for (level = 0; level < MAX_DERING_LEVEL; level++) {
+      if (tot_mse[level] < tot_mse[best_level]) best_level = level;
+    }
 #endif
   vpx_free(src);
   vpx_free(ref_coeff);
index 54089480551c60b339a3476670d54939901d035b..ca4575cc018a097e3b4b97f86ac6d2b3804e9df4 100644 (file)
@@ -625,9 +625,7 @@ static void get_entropy_contexts_plane(
         t_left[i] = !!*(const uint32_t *)&left[i];
       break;
 #endif  // CONFIG_EXT_TX
-    default:
-      assert(0 && "Invalid transform size.");
-      break;
+    default: assert(0 && "Invalid transform size."); break;
   }
 }