Add a new experiment SMOOTH_HV.

This experiment extends ALT_INTRA by adding two new modes:
smooth horizontal and smooth vertical.

Improvement on *intra frames* in BDRate (PSNR):
===============================================

AWCY (high latency): -0.46%
(Also, -1.0% or more on PSNR Cb,Cr and APSNR Cb,Cr).

AWCY (low latency): -0.43%
(Also, -0.88% to -0.94% on PSNR Cb,Cr and APSNR Cb,Cr).

Google sets:
lowres: -0.454
midres: -0.484
hdres:  -0.525

Improvement on *video overall* in BDRate (PSNR):
================================================

AWCY (high latency): -0.15%

Google sets:
lowres: -0.085
midres: -0.079

Change-Id: I9f4e7c1b8ded1fe244c72838f336103ccc715d50
diff --git a/aom_dsp/aom_dsp_rtcd_defs.pl b/aom_dsp/aom_dsp_rtcd_defs.pl
index b4ef0d9..4929de7 100755
--- a/aom_dsp/aom_dsp_rtcd_defs.pl
+++ b/aom_dsp/aom_dsp_rtcd_defs.pl
@@ -49,6 +49,9 @@
 @pred_names = qw/dc dc_top dc_left dc_128 v h d207e d63e d45e d117 d135 d153/;
 if (aom_config("CONFIG_ALT_INTRA") eq "yes") {
   push @pred_names, qw/paeth smooth/;
+  if (aom_config("CONFIG_SMOOTH_HV") eq "yes") {
+    push @pred_names, qw/smooth_v smooth_h/;
+  }
 } else {
   push @pred_names, 'tm';
 }
diff --git a/aom_dsp/intrapred.c b/aom_dsp/intrapred.c
index 1f0870b..08a73fc 100644
--- a/aom_dsp/intrapred.c
+++ b/aom_dsp/intrapred.c
@@ -277,6 +277,70 @@
   }
 }
 
+#if CONFIG_SMOOTH_HV
+static INLINE void smooth_v_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
+                                      const uint8_t *above,
+                                      const uint8_t *left) {
+  const uint8_t below_pred = left[bs - 1];  // estimated by bottom-left pixel
+  const int arr_index = get_msb(bs) - 1;
+  assert(arr_index >= 0);
+  assert(arr_index < NUM_BLOCK_DIMS);
+  const uint8_t *const sm_weights = sm_weight_arrays[arr_index];
+  // scale = 2^sm_weight_log2_scale
+  const int log2_scale = sm_weight_log2_scale;
+  const uint16_t scale = (1 << sm_weight_log2_scale);
+  sm_weights_sanity_checks(sm_weights, scale, log2_scale + sizeof(*dst));
+
+  int r;
+  for (r = 0; r < bs; r++) {
+    int c;
+    for (c = 0; c < bs; ++c) {
+      const uint8_t pixels[] = { above[c], below_pred };
+      const uint8_t weights[] = { sm_weights[r], scale - sm_weights[r] };
+      uint32_t this_pred = 0;
+      assert(scale >= sm_weights[r]);
+      int i;
+      for (i = 0; i < 2; ++i) {
+        this_pred += weights[i] * pixels[i];
+      }
+      dst[c] = clip_pixel(divide_round(this_pred, log2_scale));
+    }
+    dst += stride;
+  }
+}
+
+static INLINE void smooth_h_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
+                                      const uint8_t *above,
+                                      const uint8_t *left) {
+  const uint8_t right_pred = above[bs - 1];  // estimated by top-right pixel
+  const int arr_index = get_msb(bs) - 1;
+  assert(arr_index >= 0);
+  assert(arr_index < NUM_BLOCK_DIMS);
+  const uint8_t *const sm_weights = sm_weight_arrays[arr_index];
+  // scale = 2^sm_weight_log2_scale
+  const int log2_scale = sm_weight_log2_scale;
+  const uint16_t scale = (1 << sm_weight_log2_scale);
+  sm_weights_sanity_checks(sm_weights, scale, log2_scale + sizeof(*dst));
+
+  int r;
+  for (r = 0; r < bs; r++) {
+    int c;
+    for (c = 0; c < bs; ++c) {
+      const uint8_t pixels[] = { left[r], right_pred };
+      const uint8_t weights[] = { sm_weights[c], scale - sm_weights[c] };
+      uint32_t this_pred = 0;
+      assert(scale >= sm_weights[c]);
+      int i;
+      for (i = 0; i < 2; ++i) {
+        this_pred += weights[i] * pixels[i];
+      }
+      dst[c] = clip_pixel(divide_round(this_pred, log2_scale));
+    }
+    dst += stride;
+  }
+}
+#endif  // CONFIG_SMOOTH_HV
+
 #else
 
 static INLINE void tm_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
@@ -770,6 +834,68 @@
   }
 }
 
+static INLINE void highbd_smooth_v_predictor(uint16_t *dst, ptrdiff_t stride,
+                                             int bs, const uint16_t *above,
+                                             const uint16_t *left, int bd) {
+  const uint16_t below_pred = left[bs - 1];  // estimated by bottom-left pixel
+  const int arr_index = get_msb(bs) - 1;
+  assert(arr_index >= 0);
+  assert(arr_index < NUM_BLOCK_DIMS);
+  const uint8_t *const sm_weights = sm_weight_arrays[arr_index];
+  // scale = 2^sm_weight_log2_scale
+  const int log2_scale = sm_weight_log2_scale;
+  const uint16_t scale = (1 << sm_weight_log2_scale);
+  sm_weights_sanity_checks(sm_weights, scale, log2_scale + sizeof(*dst));
+
+  int r;
+  for (r = 0; r < bs; r++) {
+    int c;
+    for (c = 0; c < bs; ++c) {
+      const uint16_t pixels[] = { above[c], below_pred };
+      const uint8_t weights[] = { sm_weights[r], scale - sm_weights[r] };
+      uint32_t this_pred = 0;
+      assert(scale >= sm_weights[r]);
+      int i;
+      for (i = 0; i < 2; ++i) {
+        this_pred += weights[i] * pixels[i];
+      }
+      dst[c] = clip_pixel_highbd(divide_round(this_pred, log2_scale), bd);
+    }
+    dst += stride;
+  }
+}
+
+static INLINE void highbd_smooth_h_predictor(uint16_t *dst, ptrdiff_t stride,
+                                             int bs, const uint16_t *above,
+                                             const uint16_t *left, int bd) {
+  const uint16_t right_pred = above[bs - 1];  // estimated by top-right pixel
+  const int arr_index = get_msb(bs) - 1;
+  assert(arr_index >= 0);
+  assert(arr_index < NUM_BLOCK_DIMS);
+  const uint8_t *const sm_weights = sm_weight_arrays[arr_index];
+  // scale = 2^sm_weight_log2_scale
+  const int log2_scale = sm_weight_log2_scale;
+  const uint16_t scale = (1 << sm_weight_log2_scale);
+  sm_weights_sanity_checks(sm_weights, scale, log2_scale + sizeof(*dst));
+
+  int r;
+  for (r = 0; r < bs; r++) {
+    int c;
+    for (c = 0; c < bs; ++c) {
+      const uint16_t pixels[] = { left[r], right_pred };
+      const uint8_t weights[] = { sm_weights[c], scale - sm_weights[c] };
+      uint32_t this_pred = 0;
+      assert(scale >= sm_weights[c]);
+      int i;
+      for (i = 0; i < 2; ++i) {
+        this_pred += weights[i] * pixels[i];
+      }
+      dst[c] = clip_pixel_highbd(divide_round(this_pred, log2_scale), bd);
+    }
+    dst += stride;
+  }
+}
+
 #else
 static INLINE void highbd_tm_predictor(uint16_t *dst, ptrdiff_t stride, int bs,
                                        const uint16_t *above,
@@ -958,8 +1084,12 @@
 intra_pred_allsizes(v)
 intra_pred_allsizes(h)
 #if CONFIG_ALT_INTRA
-intra_pred_allsizes(paeth)
 intra_pred_allsizes(smooth)
+#if CONFIG_SMOOTH_HV
+intra_pred_allsizes(smooth_v)
+intra_pred_allsizes(smooth_h)
+#endif  // CONFIG_SMOOTH_HV
+intra_pred_allsizes(paeth)
 #else
 intra_pred_allsizes(tm)
 #endif  // CONFIG_ALT_INTRA
diff --git a/av1/common/av1_loopfilter.c b/av1/common/av1_loopfilter.c
index 5308717..da914cf 100644
--- a/av1/common/av1_loopfilter.c
+++ b/av1/common/av1_loopfilter.c
@@ -267,7 +267,10 @@
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // INTRA_MODES
 #if CONFIG_ALT_INTRA
   0,
-#endif
+#if CONFIG_SMOOTH_HV
+  0, 0,
+#endif         // CONFIG_SMOOTH_HV
+#endif         // CONFIG_ALT_INTRA
   1, 1, 0, 1,  // INTER_MODES (ZEROMV == 0)
 #if CONFIG_EXT_INTER
   1, 1, 1, 1, 1, 1, 1, 1, 0, 1  // INTER_COMPOUND_MODES (ZERO_ZEROMV == 0)
diff --git a/av1/common/blockd.h b/av1/common/blockd.h
index 72a488c..886fb9f 100644
--- a/av1/common/blockd.h
+++ b/av1/common/blockd.h
@@ -703,6 +703,10 @@
   ADST_DCT,   // D63
 #if CONFIG_ALT_INTRA
   ADST_ADST,  // SMOOTH
+#if CONFIG_SMOOTH_HV
+  ADST_DCT,   // SMOOTH_V
+  DCT_ADST,   // SMOOTH_H
+#endif        // CONFIG_SMOOTH_HV
 #endif        // CONFIG_ALT_INTRA
   ADST_ADST,  // TM
 };
diff --git a/av1/common/entropymode.c b/av1/common/entropymode.c
index 980fa23..743b489 100644
--- a/av1/common/entropymode.c
+++ b/av1/common/entropymode.c
@@ -294,6 +294,258 @@
 #endif  // CONFIG_LV_MAP
 
 #if CONFIG_ALT_INTRA
+#if CONFIG_SMOOTH_HV
+const aom_prob av1_kf_y_mode_prob[INTRA_MODES][INTRA_MODES][INTRA_MODES - 1] = {
+  {
+      // above = dc
+      { 111, 28, 44, 99, 166, 154, 28, 28, 27, 45, 134, 109 },    // left = dc
+      { 82, 31, 102, 75, 117, 135, 33, 34, 21, 31, 134, 149 },    // left = v
+      { 40, 29, 14, 161, 235, 180, 14, 12, 34, 52, 128, 69 },     // left = h
+      { 98, 19, 36, 74, 137, 153, 49, 35, 25, 61, 137, 106 },     // left = d45
+      { 59, 11, 25, 128, 47, 162, 29, 20, 53, 38, 143, 117 },     // left = d135
+      { 86, 20, 51, 160, 39, 101, 69, 101, 112, 154, 158, 145 },  // left = d117
+      { 49, 10, 17, 112, 98, 206, 16, 11, 104, 44, 138, 88 },     // left = d153
+      { 64, 14, 22, 80, 170, 168, 19, 15, 26, 101, 137, 90 },     // left = d207
+      { 84, 21, 31, 62, 110, 135, 40, 57, 22, 45, 143, 130 },     // left = d63
+      { 58, 16, 31, 60, 154, 225, 17, 23, 19, 30, 138, 113 },  // left = smooth
+      { 51, 19, 46, 64, 148, 209, 18, 28, 17, 25, 137,
+        149 },                                                // left = smooth_v
+      { 68, 15, 26, 61, 175, 233, 17, 17, 19, 29, 135, 76 },  // left = smooth_h
+      { 49, 61, 41, 113, 203, 158, 26, 26, 29, 55, 123, 99 },  // left = tm
+  },
+  {
+      // above = v
+      { 31, 26, 135, 81, 100, 82, 13, 40, 14, 18, 131, 182 },    // left = dc
+      { 24, 27, 175, 53, 93, 85, 17, 40, 5, 14, 119, 195 },      // left = v
+      { 20, 34, 71, 97, 209, 133, 15, 24, 14, 28, 138, 129 },    // left = h
+      { 54, 19, 88, 55, 102, 103, 39, 45, 8, 44, 134, 167 },     // left = d45
+      { 23, 16, 93, 101, 33, 119, 23, 41, 26, 22, 136, 168 },    // left = d135
+      { 34, 17, 130, 149, 30, 72, 43, 129, 66, 100, 143, 192 },  // left = d117
+      { 23, 17, 83, 85, 63, 158, 16, 30, 64, 28, 145, 146 },     // left = d153
+      { 33, 17, 85, 60, 136, 115, 21, 32, 15, 59, 134, 155 },    // left = d207
+      { 40, 20, 103, 53, 66, 84, 26, 72, 9, 29, 134, 177 },      // left = d63
+      { 22, 18, 112, 41, 138, 192, 12, 30, 9, 16, 131, 178 },  // left = smooth
+      { 20, 20, 125, 39, 137, 179, 11, 28, 7, 12, 123,
+        199 },  // left = smooth_v
+      { 26, 19, 111, 46, 160, 201, 13, 29, 8, 17, 132,
+        156 },  // left = smooth_h
+      { 20, 35, 138, 62, 162, 107, 21, 36, 9, 24, 125, 181 },  // left = tm
+  },
+  {
+      // above = h
+      { 89, 27, 21, 136, 218, 175, 20, 19, 35, 56, 134, 96 },    // left = dc
+      { 63, 37, 67, 117, 190, 160, 22, 29, 20, 45, 137, 137 },   // left = v
+      { 34, 23, 7, 177, 245, 207, 13, 9, 30, 73, 125, 63 },      // left = h
+      { 84, 29, 20, 83, 184, 182, 38, 25, 34, 86, 134, 106 },    // left = d45
+      { 65, 19, 19, 119, 109, 177, 27, 19, 56, 56, 141, 103 },   // left = d135
+      { 88, 25, 46, 152, 102, 130, 70, 61, 96, 157, 130, 102 },  // left = d117
+      { 51, 11, 10, 108, 168, 216, 14, 9, 93, 58, 132, 79 },     // left = d153
+      { 53, 15, 9, 103, 224, 192, 20, 13, 23, 122, 135, 80 },    // left = d207
+      { 64, 30, 19, 90, 171, 176, 24, 44, 23, 56, 144, 121 },    // left = d63
+      { 46, 20, 17, 94, 214, 234, 14, 15, 23, 38, 132, 98 },  // left = smooth
+      { 41, 27, 22, 102, 214, 229, 13, 17, 18, 35, 133,
+        137 },                                                // left = smooth_v
+      { 52, 17, 14, 95, 224, 241, 14, 11, 24, 38, 133, 62 },  // left = smooth_h
+      { 35, 43, 21, 148, 234, 188, 22, 17, 27, 47, 133, 100 },  // left = tm
+  },
+  {
+      // above = d45
+      { 80, 14, 31, 74, 129, 146, 52, 50, 29, 50, 138, 110 },   // left = dc
+      { 59, 16, 84, 52, 106, 121, 63, 60, 20, 40, 143, 150 },   // left = v
+      { 41, 19, 16, 118, 216, 168, 36, 27, 24, 62, 136, 69 },   // left = h
+      { 86, 11, 11, 37, 168, 158, 113, 53, 8, 99, 140, 121 },   // left = d45
+      { 49, 8, 24, 94, 49, 139, 48, 45, 40, 53, 134, 131 },     // left = d135
+      { 58, 11, 36, 127, 45, 97, 90, 143, 91, 180, 153, 146 },  // left = d117
+      { 39, 9, 14, 93, 97, 187, 32, 26, 66, 57, 134, 106 },     // left = d153
+      { 75, 8, 26, 68, 135, 154, 51, 30, 17, 113, 144, 83 },    // left = d207
+      { 77, 13, 18, 46, 146, 143, 81, 102, 18, 59, 142, 143 },  // left = d63
+      { 49, 13, 31, 47, 142, 218, 46, 42, 19, 46, 146, 120 },   // left = smooth
+      { 46, 15, 35, 47, 132, 206, 47, 50, 18, 37, 143,
+        147 },                                                // left = smooth_v
+      { 54, 11, 25, 54, 157, 229, 43, 34, 20, 44, 136, 99 },  // left = smooth_h
+      { 40, 26, 41, 72, 176, 145, 78, 51, 27, 59, 133, 121 },  // left = tm
+  },
+  {
+      // above = d135
+      { 57, 10, 21, 118, 61, 178, 16, 20, 65, 52, 145, 125 },   // left = dc
+      { 56, 15, 48, 107, 58, 153, 20, 32, 42, 35, 143, 162 },   // left = v
+      { 28, 19, 8, 132, 172, 184, 14, 14, 45, 55, 140, 79 },    // left = h
+      { 58, 13, 15, 73, 66, 177, 61, 24, 30, 72, 143, 122 },    // left = d45
+      { 35, 5, 13, 150, 20, 187, 19, 21, 66, 38, 144, 130 },    // left = d135
+      { 57, 9, 30, 173, 28, 133, 38, 71, 156, 140, 156, 173 },  // left = d117
+      { 30, 6, 9, 121, 54, 207, 16, 20, 110, 62, 151, 94 },     // left = d153
+      { 51, 9, 15, 88, 96, 188, 22, 18, 40, 95, 140, 98 },      // left = d207
+      { 56, 12, 21, 82, 53, 140, 30, 37, 32, 47, 145, 149 },    // left = d63
+      { 43, 12, 21, 83, 84, 222, 14, 23, 31, 35, 143, 127 },    // left = smooth
+      { 41, 12, 25, 81, 75, 210, 16, 29, 29, 29, 141, 154 },  // left = smooth_v
+      { 42, 11, 19, 81, 109, 226, 17, 20, 34, 36, 143,
+        110 },  // left = smooth_h
+      { 36, 26, 27, 107, 132, 151, 24, 28, 38, 46, 140, 127 },  // left = tm
+  },
+  {
+      // above = d117
+      { 52, 15, 58, 191, 40, 95, 38, 78, 98, 140, 152, 175 },    // left = dc
+      { 50, 16, 85, 186, 28, 84, 41, 105, 65, 119, 158, 206 },   // left = v
+      { 30, 23, 30, 179, 122, 124, 38, 47, 68, 140, 161, 102 },  // left = h
+      { 75, 15, 47, 120, 49, 127, 63, 86, 54, 204, 175, 185 },   // left = d45
+      { 36, 9, 37, 198, 15, 120, 56, 78, 104, 151, 155, 165 },   // left = d135
+      { 38, 9, 54, 198, 12, 75, 47, 92, 71, 130, 170, 201 },     // left = d117
+      { 31, 13, 33, 167, 46, 144, 32, 59, 124, 151, 162, 128 },  // left = d153
+      { 47, 15, 43, 123, 70, 129, 49, 72, 48, 175, 163, 125 },   // left = d207
+      { 61, 19, 62, 141, 35, 116, 55, 117, 51, 162, 150, 201 },  // left = d63
+      { 22, 17, 34, 105, 41, 101, 20, 34, 26, 39, 146, 157 },  // left = smooth
+      { 19, 14, 37, 116, 33, 91, 23, 38, 17, 36, 137, 178 },  // left = smooth_v
+      { 25, 17, 35, 102, 59, 118, 23, 28, 30, 43, 147,
+        148 },  // left = smooth_h
+      { 35, 24, 62, 164, 95, 103, 47, 94, 65, 115, 186, 128 },  // left = tm
+  },
+  {
+      // above = d153
+      { 75, 12, 17, 101, 150, 177, 14, 13, 101, 55, 141, 104 },  // left = dc
+      { 69, 19, 46, 91, 133, 167, 19, 22, 72, 41, 133, 143 },    // left = v
+      { 30, 12, 6, 132, 209, 214, 10, 8, 75, 78, 137, 70 },      // left = h
+      { 77, 16, 12, 85, 120, 203, 35, 17, 69, 66, 137, 96 },     // left = d45
+      { 51, 8, 11, 119, 58, 178, 20, 17, 90, 51, 145, 92 },      // left = d135
+      { 76, 8, 24, 144, 48, 128, 37, 46, 173, 153, 159, 111 },   // left = d117
+      { 40, 6, 6, 87, 112, 213, 7, 7, 152, 54, 141, 84 },        // left = d153
+      { 46, 6, 7, 78, 161, 195, 15, 11, 66, 97, 137, 83 },       // left = d207
+      { 81, 17, 17, 82, 97, 187, 26, 34, 54, 60, 154, 128 },     // left = d63
+      { 47, 10, 16, 74, 138, 233, 13, 17, 59, 42, 143, 106 },  // left = smooth
+      { 45, 12, 17, 76, 141, 227, 14, 16, 56, 43, 141,
+        135 },                                                // left = smooth_v
+      { 55, 10, 13, 69, 162, 238, 11, 11, 59, 45, 133, 73 },  // left = smooth_h
+      { 44, 23, 19, 110, 176, 165, 16, 19, 68, 59, 131, 89 },  // left = tm
+  },
+  {
+      // above = d207
+      { 86, 15, 26, 87, 166, 178, 27, 25, 27, 75, 145, 108 },   // left = dc
+      { 71, 27, 62, 70, 126, 142, 29, 34, 17, 69, 141, 144 },   // left = v
+      { 48, 21, 11, 130, 231, 196, 24, 19, 27, 82, 133, 72 },   // left = h
+      { 82, 21, 14, 54, 128, 188, 55, 38, 19, 111, 148, 119 },  // left = d45
+      { 57, 11, 17, 78, 83, 171, 43, 31, 37, 58, 143, 100 },    // left = d135
+      { 76, 16, 44, 115, 77, 130, 78, 79, 82, 178, 132, 123 },  // left = d117
+      { 50, 12, 11, 82, 133, 207, 27, 20, 67, 79, 138, 87 },    // left = d153
+      { 77, 9, 13, 44, 174, 169, 26, 13, 9, 167, 135, 90 },     // left = d207
+      { 70, 16, 18, 57, 117, 167, 43, 46, 17, 70, 150, 116 },   // left = d63
+      { 56, 13, 18, 60, 170, 236, 24, 19, 18, 59, 139, 105 },   // left = smooth
+      { 50, 17, 26, 60, 165, 234, 24, 20, 15, 53, 134,
+        136 },                                                // left = smooth_v
+      { 57, 11, 16, 62, 188, 239, 23, 15, 18, 57, 134, 79 },  // left = smooth_h
+      { 49, 31, 24, 78, 194, 184, 45, 27, 19, 81, 138, 102 },  // left = tm
+  },
+  {
+      // above = d63
+      { 53, 13, 46, 61, 109, 116, 40, 83, 19, 31, 141, 150 },   // left = dc
+      { 45, 14, 75, 40, 79, 102, 48, 118, 14, 23, 138, 174 },   // left = v
+      { 34, 14, 24, 98, 214, 128, 33, 54, 18, 51, 138, 103 },   // left = h
+      { 74, 11, 26, 37, 127, 154, 75, 89, 11, 61, 146, 125 },   // left = d45
+      { 35, 9, 26, 68, 55, 128, 53, 74, 21, 33, 138, 132 },     // left = d135
+      { 47, 9, 55, 108, 39, 105, 64, 193, 71, 127, 141, 193 },  // left = d117
+      { 35, 9, 22, 66, 79, 172, 34, 64, 57, 44, 139, 112 },     // left = d153
+      { 54, 7, 26, 48, 136, 139, 48, 60, 15, 82, 144, 116 },    // left = d207
+      { 60, 9, 30, 25, 106, 127, 64, 143, 14, 42, 140, 165 },   // left = d63
+      { 39, 11, 35, 40, 136, 212, 34, 67, 12, 28, 145, 150 },   // left = smooth
+      { 37, 12, 45, 36, 128, 190, 34, 80, 8, 23, 138, 165 },  // left = smooth_v
+      { 45, 9, 37, 46, 152, 196, 36, 58, 14, 29, 145, 127 },  // left = smooth_h
+      { 35, 17, 53, 48, 159, 101, 53, 104, 15, 36, 132, 152 },  // left = tm
+  },
+  {
+      // above = smooth
+      { 58, 12, 33, 66, 168, 219, 13, 21, 16, 27, 137, 113 },  // left = dc
+      { 42, 20, 78, 51, 139, 216, 16, 27, 11, 18, 134, 160 },  // left = v
+      { 28, 17, 16, 118, 236, 231, 13, 14, 16, 41, 132, 77 },  // left = h
+      { 58, 12, 23, 47, 138, 238, 39, 31, 16, 63, 142, 125 },  // left = d45
+      { 44, 9, 27, 76, 80, 220, 21, 27, 27, 30, 142, 122 },    // left = d135
+      { 30, 13, 38, 96, 47, 111, 26, 40, 31, 40, 146, 146 },   // left = d117
+      { 42, 9, 19, 70, 127, 234, 15, 18, 53, 39, 138, 97 },    // left = d153
+      { 44, 10, 20, 57, 186, 229, 15, 18, 15, 80, 141, 97 },   // left = d207
+      { 51, 13, 33, 46, 123, 225, 23, 46, 15, 34, 143, 132 },  // left = d63
+      { 42, 11, 29, 49, 154, 226, 13, 20, 12, 27, 139, 117 },  // left = smooth
+      { 37, 13, 40, 48, 146, 217, 13, 23, 10, 24, 136,
+        149 },                                                // left = smooth_v
+      { 45, 10, 24, 55, 176, 230, 11, 16, 14, 26, 136, 86 },  // left = smooth_h
+      { 32, 23, 43, 78, 204, 225, 18, 23, 15, 30, 134, 117 },  // left = tm
+  },
+  {
+      // above = smooth_v
+      { 62, 13, 47, 68, 165, 204, 14, 24, 14, 22, 137, 146 },   // left = dc
+      { 42, 18, 97, 43, 138, 210, 12, 28, 8, 14, 127, 184 },    // left = v
+      { 30, 19, 21, 128, 238, 231, 13, 13, 17, 38, 138, 103 },  // left = h
+      { 66, 12, 31, 50, 132, 228, 37, 34, 14, 56, 142, 135 },   // left = d45
+      { 45, 9, 33, 75, 73, 216, 20, 33, 25, 25, 146, 153 },     // left = d135
+      { 31, 13, 48, 97, 46, 82, 26, 55, 31, 25, 140, 179 },     // left = d117
+      { 47, 10, 26, 67, 109, 229, 15, 23, 52, 34, 136, 133 },   // left = d153
+      { 49, 9, 25, 58, 174, 206, 14, 20, 13, 83, 144, 121 },    // left = d207
+      { 54, 15, 42, 47, 120, 209, 22, 55, 13, 25, 139, 162 },   // left = d63
+      { 41, 11, 43, 50, 146, 216, 11, 21, 11, 23, 136, 151 },   // left = smooth
+      { 37, 12, 58, 48, 148, 202, 11, 24, 8, 19, 134, 178 },  // left = smooth_v
+      { 47, 11, 39, 54, 169, 212, 12, 21, 14, 22, 144,
+        115 },  // left = smooth_h
+      { 36, 25, 57, 80, 215, 211, 16, 28, 11, 25, 130, 154 },  // left = tm
+  },
+  {
+      // above = smooth_h
+      { 57, 12, 28, 68, 186, 224, 11, 17, 20, 31, 133, 80 },   // left = dc
+      { 42, 21, 86, 51, 159, 221, 14, 25, 10, 19, 134, 131 },  // left = v
+      { 25, 17, 13, 123, 240, 240, 12, 10, 18, 42, 126, 56 },  // left = h
+      { 55, 11, 25, 47, 146, 238, 36, 32, 18, 67, 144, 99 },   // left = d45
+      { 47, 11, 23, 75, 95, 222, 20, 24, 28, 36, 143, 103 },   // left = d135
+      { 30, 14, 34, 92, 59, 101, 27, 44, 31, 41, 142, 129 },   // left = d117
+      { 42, 11, 17, 73, 158, 234, 14, 14, 59, 46, 138, 67 },   // left = d153
+      { 45, 10, 15, 64, 194, 228, 14, 15, 17, 78, 133, 73 },   // left = d207
+      { 52, 14, 29, 45, 138, 227, 25, 43, 16, 36, 136, 119 },  // left = d63
+      { 42, 12, 23, 51, 173, 235, 12, 16, 13, 28, 134, 95 },   // left = smooth
+      { 37, 16, 34, 52, 161, 228, 12, 19, 10, 28, 137,
+        123 },                                                // left = smooth_v
+      { 45, 9, 18, 58, 200, 240, 10, 13, 13, 27, 129, 61 },   // left = smooth_h
+      { 32, 26, 44, 82, 217, 222, 19, 23, 16, 34, 134, 99 },  // left = tm
+  },
+  {
+      // above = tm
+      { 51, 42, 80, 104, 178, 121, 20, 37, 25, 42, 136, 150 },  // left = dc
+      { 35, 38, 132, 73, 152, 132, 21, 36, 10, 32, 127, 174 },  // left = v
+      { 21, 34, 26, 149, 241, 165, 17, 15, 19, 60, 132, 95 },   // left = h
+      { 64, 20, 36, 67, 169, 142, 45, 30, 16, 86, 145, 134 },   // left = d45
+      { 40, 23, 51, 96, 102, 149, 25, 33, 34, 43, 143, 125 },   // left = d135
+      { 58, 29, 93, 140, 93, 89, 51, 107, 64, 146, 145, 154 },  // left = d117
+      { 33, 23, 44, 95, 139, 209, 12, 20, 76, 56, 131, 104 },   // left = d153
+      { 40, 21, 28, 79, 210, 165, 21, 15, 16, 134, 138, 108 },  // left = d207
+      { 45, 24, 58, 62, 132, 127, 32, 58, 15, 51, 143, 152 },   // left = d63
+      { 33, 27, 53, 71, 195, 223, 14, 24, 12, 36, 136, 135 },   // left = smooth
+      { 30, 29, 62, 68, 201, 217, 14, 24, 11, 31, 132,
+        162 },  // left = smooth_v
+      { 37, 25, 50, 76, 204, 212, 12, 18, 15, 38, 134,
+        106 },  // left = smooth_h
+      { 28, 53, 64, 100, 203, 162, 26, 29, 15, 52, 127, 138 },  // left = tm
+  },
+};
+
+static const aom_prob default_if_y_probs[BLOCK_SIZE_GROUPS][INTRA_MODES - 1] = {
+  { 56, 13, 37, 112, 91, 147, 66, 55, 72, 82, 124, 121 },  // block_size < 8x8
+  { 92, 120, 47, 89, 120, 139, 18, 38, 32, 51, 146,
+    124 },  // block_size < 16x16
+  { 115, 102, 41, 69, 170, 142, 8, 23, 13, 23, 122,
+    110 },                                            // block_size < 32x32
+  { 148, 157, 47, 62, 238, 64, 7, 3, 1, 3, 74, 87 },  // block_size >= 32x32
+};
+
+static const aom_prob default_uv_probs[INTRA_MODES][INTRA_MODES - 1] = {
+  { 184, 3, 67, 135, 194, 108, 33, 43, 40, 86, 121, 118 },   // y = dc
+  { 23, 3, 204, 105, 117, 53, 14, 68, 13, 19, 112, 86 },     // y = v
+  { 34, 3, 7, 220, 249, 142, 11, 13, 59, 124, 119, 131 },    // y = h
+  { 138, 3, 45, 51, 162, 99, 110, 107, 21, 113, 119, 111 },  // y = d45
+  { 130, 2, 28, 163, 52, 163, 16, 25, 94, 46, 127, 118 },    // y = d135
+  { 109, 3, 55, 218, 20, 43, 34, 71, 74, 68, 108, 128 },     // y = d117
+  { 124, 1, 17, 124, 151, 197, 8, 9, 184, 71, 123, 101 },    // y = d153
+  { 127, 2, 16, 110, 225, 134, 28, 19, 18, 190, 124, 132 },  // y = d207
+  { 115, 3, 65, 46, 134, 81, 37, 170, 20, 57, 122, 106 },    // y = d63
+  { 131, 4, 52, 71, 177, 205, 17, 27, 20, 41, 128, 118 },    // y = smooth
+  { 131, 5, 65, 70, 182, 196, 17, 30, 17, 35, 123, 154 },    // y = smooth_v
+  { 137, 4, 43, 78, 196, 202, 16, 21, 24, 48, 123, 91 },     // y = smooth_h
+  { 137, 12, 92, 142, 217, 71, 14, 45, 29, 62, 108, 109 },   // y = tm
+};
+
+#else  // !CONFIG_SMOOTH_HV
 
 const aom_prob av1_kf_y_mode_prob[INTRA_MODES][INTRA_MODES][INTRA_MODES - 1] = {
   {
@@ -473,7 +725,9 @@
   { 185, 7, 113, 171, 203, 57, 18, 69, 49, 104 },   // y = paeth
 };
 
-#else
+#endif  // CONFIG_SMOOTH_HV
+
+#else  // !CONFIG_ALT_INTRA
 
 const aom_prob av1_kf_y_mode_prob[INTRA_MODES][INTRA_MODES][INTRA_MODES - 1] = {
   {
@@ -956,6 +1210,34 @@
 #endif
 
 #if CONFIG_ALT_INTRA
+#if CONFIG_SMOOTH_HV
+const aom_tree_index av1_intra_mode_tree[TREE_SIZE(INTRA_MODES)] = {
+  -DC_PRED,
+  2, /* 0 = DC_NODE */
+  -TM_PRED,
+  4, /* 1 = TM_NODE */
+  -V_PRED,
+  6, /* 2 = V_NODE */
+  8,
+  12, /* 3 = COM_NODE */
+  -H_PRED,
+  10, /* 4 = H_NODE */
+  -D135_PRED,
+  -D117_PRED, /* 5 = D135_NODE */
+  -D45_PRED,
+  14, /* 6 = D45_NODE */
+  -D63_PRED,
+  16, /* 7 = D63_NODE */
+  -D153_PRED,
+  18, /* 8 = D153_NODE */
+  -D207_PRED,
+  20, /* 9 = D207_NODE */
+  -SMOOTH_PRED,
+  22, /* 10 = SMOOTH_NODE */
+  -SMOOTH_V_PRED,
+  -SMOOTH_H_PRED /* 11 = SMOOTH_V_NODE */
+};
+#else
 const aom_tree_index av1_intra_mode_tree[TREE_SIZE(INTRA_MODES)] = {
   -DC_PRED,   2,            /* 0 = DC_NODE */
   -TM_PRED,   4,            /* 1 = TM_NODE */
@@ -968,6 +1250,7 @@
   -D153_PRED, 18,           /* 8 = D153_NODE */
   -D207_PRED, -SMOOTH_PRED, /* 9 = D207_NODE */
 };
+#endif  // CONFIG_SMOOTH_HV
 #else
 const aom_tree_index av1_intra_mode_tree[TREE_SIZE(INTRA_MODES)] = {
   -DC_PRED,   2,          /* 0 = DC_NODE */
@@ -1989,6 +2272,83 @@
     };
 
 #if CONFIG_ALT_INTRA
+#if CONFIG_SMOOTH_HV
+static const aom_cdf_prob
+    default_if_y_mode_cdf[BLOCK_SIZE_GROUPS][CDF_SIZE(INTRA_MODES)] = {
+      { AOM_ICDF(7168), AOM_ICDF(8468), AOM_ICDF(11980), AOM_ICDF(15213),
+        AOM_ICDF(18579), AOM_ICDF(21075), AOM_ICDF(24090), AOM_ICDF(25954),
+        AOM_ICDF(27870), AOM_ICDF(29439), AOM_ICDF(31051), AOM_ICDF(31863),
+        AOM_ICDF(32768), 0 },
+      { AOM_ICDF(11776), AOM_ICDF(21616), AOM_ICDF(23663), AOM_ICDF(25147),
+        AOM_ICDF(26060), AOM_ICDF(26828), AOM_ICDF(27246), AOM_ICDF(28066),
+        AOM_ICDF(28654), AOM_ICDF(29474), AOM_ICDF(31353), AOM_ICDF(32038),
+        AOM_ICDF(32768), 0 },
+      { AOM_ICDF(14720), AOM_ICDF(21911), AOM_ICDF(23650), AOM_ICDF(25282),
+        AOM_ICDF(25740), AOM_ICDF(26108), AOM_ICDF(26316), AOM_ICDF(26896),
+        AOM_ICDF(27194), AOM_ICDF(27695), AOM_ICDF(30113), AOM_ICDF(31254),
+        AOM_ICDF(32768), 0 },
+      { AOM_ICDF(18944), AOM_ICDF(27422), AOM_ICDF(28403), AOM_ICDF(29386),
+        AOM_ICDF(29405), AOM_ICDF(29460), AOM_ICDF(29550), AOM_ICDF(29588),
+        AOM_ICDF(29600), AOM_ICDF(29637), AOM_ICDF(30542), AOM_ICDF(31298),
+        AOM_ICDF(32768), 0 },
+    };
+
+static const aom_cdf_prob
+    default_uv_mode_cdf[INTRA_MODES][CDF_SIZE(INTRA_MODES)] = {
+      { AOM_ICDF(23552), AOM_ICDF(23660), AOM_ICDF(26044), AOM_ICDF(28731),
+        AOM_ICDF(29093), AOM_ICDF(29590), AOM_ICDF(30000), AOM_ICDF(30465),
+        AOM_ICDF(30825), AOM_ICDF(31478), AOM_ICDF(32088), AOM_ICDF(32401),
+        AOM_ICDF(32768), 0 },
+      { AOM_ICDF(2944), AOM_ICDF(3294), AOM_ICDF(26781), AOM_ICDF(27903),
+        AOM_ICDF(28179), AOM_ICDF(29237), AOM_ICDF(29430), AOM_ICDF(30317),
+        AOM_ICDF(30441), AOM_ICDF(30614), AOM_ICDF(31556), AOM_ICDF(31963),
+        AOM_ICDF(32768), 0 },
+      { AOM_ICDF(4352), AOM_ICDF(4685), AOM_ICDF(5453), AOM_ICDF(28285),
+        AOM_ICDF(28641), AOM_ICDF(28927), AOM_ICDF(29092), AOM_ICDF(29279),
+        AOM_ICDF(30083), AOM_ICDF(31384), AOM_ICDF(32027), AOM_ICDF(32406),
+        AOM_ICDF(32768), 0 },
+      { AOM_ICDF(17664), AOM_ICDF(17841), AOM_ICDF(20465), AOM_ICDF(22016),
+        AOM_ICDF(22364), AOM_ICDF(22916), AOM_ICDF(27149), AOM_ICDF(29498),
+        AOM_ICDF(29766), AOM_ICDF(31091), AOM_ICDF(31871), AOM_ICDF(32260),
+        AOM_ICDF(32768), 0 },
+      { AOM_ICDF(16640), AOM_ICDF(16766), AOM_ICDF(18516), AOM_ICDF(20359),
+        AOM_ICDF(24964), AOM_ICDF(27591), AOM_ICDF(27915), AOM_ICDF(28389),
+        AOM_ICDF(29997), AOM_ICDF(30495), AOM_ICDF(31623), AOM_ICDF(32151),
+        AOM_ICDF(32768), 0 },
+      { AOM_ICDF(13952), AOM_ICDF(14173), AOM_ICDF(18168), AOM_ICDF(19139),
+        AOM_ICDF(21064), AOM_ICDF(30601), AOM_ICDF(30889), AOM_ICDF(31410),
+        AOM_ICDF(31803), AOM_ICDF(32059), AOM_ICDF(32358), AOM_ICDF(32563),
+        AOM_ICDF(32768), 0 },
+      { AOM_ICDF(15872), AOM_ICDF(15938), AOM_ICDF(17056), AOM_ICDF(21545),
+        AOM_ICDF(23947), AOM_ICDF(24667), AOM_ICDF(24920), AOM_ICDF(25196),
+        AOM_ICDF(30638), AOM_ICDF(31229), AOM_ICDF(31968), AOM_ICDF(32284),
+        AOM_ICDF(32768), 0 },
+      { AOM_ICDF(16256), AOM_ICDF(16385), AOM_ICDF(17409), AOM_ICDF(23210),
+        AOM_ICDF(23628), AOM_ICDF(24009), AOM_ICDF(24967), AOM_ICDF(25546),
+        AOM_ICDF(26054), AOM_ICDF(31037), AOM_ICDF(31875), AOM_ICDF(32335),
+        AOM_ICDF(32768), 0 },
+      { AOM_ICDF(14720), AOM_ICDF(14932), AOM_ICDF(19461), AOM_ICDF(20713),
+        AOM_ICDF(21073), AOM_ICDF(21852), AOM_ICDF(23430), AOM_ICDF(29631),
+        AOM_ICDF(29876), AOM_ICDF(30520), AOM_ICDF(31591), AOM_ICDF(32078),
+        AOM_ICDF(32768), 0 },
+      { AOM_ICDF(16768), AOM_ICDF(17018), AOM_ICDF(20217), AOM_ICDF(22624),
+        AOM_ICDF(23484), AOM_ICDF(23698), AOM_ICDF(24300), AOM_ICDF(25193),
+        AOM_ICDF(25785), AOM_ICDF(26903), AOM_ICDF(29835), AOM_ICDF(31187),
+        AOM_ICDF(32768), 0 },
+      { AOM_ICDF(16768), AOM_ICDF(17081), AOM_ICDF(21064), AOM_ICDF(23339),
+        AOM_ICDF(24047), AOM_ICDF(24264), AOM_ICDF(24829), AOM_ICDF(25759),
+        AOM_ICDF(26224), AOM_ICDF(27119), AOM_ICDF(29833), AOM_ICDF(31599),
+        AOM_ICDF(32768), 0 },
+      { AOM_ICDF(17536), AOM_ICDF(17774), AOM_ICDF(20293), AOM_ICDF(23203),
+        AOM_ICDF(23906), AOM_ICDF(24094), AOM_ICDF(24636), AOM_ICDF(25303),
+        AOM_ICDF(26003), AOM_ICDF(27271), AOM_ICDF(29912), AOM_ICDF(30927),
+        AOM_ICDF(32768), 0 },
+      { AOM_ICDF(17536), AOM_ICDF(18250), AOM_ICDF(23467), AOM_ICDF(27840),
+        AOM_ICDF(28058), AOM_ICDF(28626), AOM_ICDF(28853), AOM_ICDF(29541),
+        AOM_ICDF(29907), AOM_ICDF(30600), AOM_ICDF(31515), AOM_ICDF(32049),
+        AOM_ICDF(32768), 0 },
+    };
+#else   // !CONFIG_SMOOTH_HV
 static const aom_cdf_prob
     default_if_y_mode_cdf[BLOCK_SIZE_GROUPS][CDF_SIZE(INTRA_MODES)] = {
       { AOM_ICDF(11264), AOM_ICDF(12608), AOM_ICDF(16309), AOM_ICDF(21086),
@@ -2041,6 +2401,7 @@
         AOM_ICDF(30598), AOM_ICDF(31129), AOM_ICDF(31244), AOM_ICDF(31655),
         AOM_ICDF(31868), AOM_ICDF(32234), AOM_ICDF(32768), 0 },
     };
+#endif  // CONFIG_SMOOTH_HV
 #else   // !CONFIG_ALT_INTRA
 static const aom_cdf_prob
     default_if_y_mode_cdf[BLOCK_SIZE_GROUPS][CDF_SIZE(INTRA_MODES)] = {
@@ -2583,6 +2944,710 @@
 const aom_cdf_prob
     av1_kf_y_mode_cdf[INTRA_MODES][INTRA_MODES][CDF_SIZE(INTRA_MODES)] = {
 #if CONFIG_ALT_INTRA
+#if CONFIG_SMOOTH_HV
+      {
+          { AOM_ICDF(14208), AOM_ICDF(16238), AOM_ICDF(19079), AOM_ICDF(22512),
+            AOM_ICDF(23632), AOM_ICDF(24373), AOM_ICDF(25291), AOM_ICDF(26109),
+            AOM_ICDF(26811), AOM_ICDF(27858), AOM_ICDF(30428), AOM_ICDF(31424),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(10496), AOM_ICDF(13193), AOM_ICDF(20992), AOM_ICDF(22569),
+            AOM_ICDF(23557), AOM_ICDF(24442), AOM_ICDF(25515), AOM_ICDF(26478),
+            AOM_ICDF(26994), AOM_ICDF(27693), AOM_ICDF(30349), AOM_ICDF(31757),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5120), AOM_ICDF(8252), AOM_ICDF(9593), AOM_ICDF(22972),
+            AOM_ICDF(23813), AOM_ICDF(24168), AOM_ICDF(24638), AOM_ICDF(25019),
+            AOM_ICDF(26048), AOM_ICDF(27413), AOM_ICDF(30090), AOM_ICDF(30812),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(12544), AOM_ICDF(14045), AOM_ICDF(16678), AOM_ICDF(19167),
+            AOM_ICDF(20459), AOM_ICDF(21329), AOM_ICDF(23518), AOM_ICDF(24783),
+            AOM_ICDF(25563), AOM_ICDF(27280), AOM_ICDF(30217), AOM_ICDF(31273),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(7552), AOM_ICDF(8636), AOM_ICDF(10993), AOM_ICDF(12992),
+            AOM_ICDF(18616), AOM_ICDF(21880), AOM_ICDF(23113), AOM_ICDF(23867),
+            AOM_ICDF(25710), AOM_ICDF(26758), AOM_ICDF(30115), AOM_ICDF(31328),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(11008), AOM_ICDF(12708), AOM_ICDF(16704), AOM_ICDF(18234),
+            AOM_ICDF(21591), AOM_ICDF(26744), AOM_ICDF(28368), AOM_ICDF(30104),
+            AOM_ICDF(31270), AOM_ICDF(32171), AOM_ICDF(32539), AOM_ICDF(32669),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6272), AOM_ICDF(7307), AOM_ICDF(8998), AOM_ICDF(12979),
+            AOM_ICDF(18143), AOM_ICDF(19397), AOM_ICDF(20233), AOM_ICDF(20772),
+            AOM_ICDF(25645), AOM_ICDF(26869), AOM_ICDF(30049), AOM_ICDF(30984),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(8192), AOM_ICDF(9536), AOM_ICDF(11533), AOM_ICDF(15940),
+            AOM_ICDF(17403), AOM_ICDF(18169), AOM_ICDF(19253), AOM_ICDF(20045),
+            AOM_ICDF(21337), AOM_ICDF(25847), AOM_ICDF(29551), AOM_ICDF(30682),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(10752), AOM_ICDF(12558), AOM_ICDF(15005), AOM_ICDF(16854),
+            AOM_ICDF(18148), AOM_ICDF(19307), AOM_ICDF(21410), AOM_ICDF(23939),
+            AOM_ICDF(24698), AOM_ICDF(26117), AOM_ICDF(29832), AOM_ICDF(31323),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(7424), AOM_ICDF(9008), AOM_ICDF(11885), AOM_ICDF(14829),
+            AOM_ICDF(16543), AOM_ICDF(16779), AOM_ICDF(17841), AOM_ICDF(19182),
+            AOM_ICDF(20190), AOM_ICDF(21664), AOM_ICDF(27650), AOM_ICDF(29909),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6528), AOM_ICDF(8476), AOM_ICDF(12841), AOM_ICDF(15721),
+            AOM_ICDF(17437), AOM_ICDF(17823), AOM_ICDF(18874), AOM_ICDF(20394),
+            AOM_ICDF(21216), AOM_ICDF(22344), AOM_ICDF(27922), AOM_ICDF(30743),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(8704), AOM_ICDF(10114), AOM_ICDF(12415), AOM_ICDF(15730),
+            AOM_ICDF(17127), AOM_ICDF(17265), AOM_ICDF(18294), AOM_ICDF(19255),
+            AOM_ICDF(20258), AOM_ICDF(21675), AOM_ICDF(27525), AOM_ICDF(29082),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6272), AOM_ICDF(12586), AOM_ICDF(15818), AOM_ICDF(21751),
+            AOM_ICDF(22707), AOM_ICDF(23300), AOM_ICDF(24262), AOM_ICDF(25126),
+            AOM_ICDF(25992), AOM_ICDF(27448), AOM_ICDF(30004), AOM_ICDF(31073),
+            AOM_ICDF(32768), 0 },
+      },
+      {
+          { AOM_ICDF(3968), AOM_ICDF(6893), AOM_ICDF(20538), AOM_ICDF(22050),
+            AOM_ICDF(22805), AOM_ICDF(24408), AOM_ICDF(24833), AOM_ICDF(26073),
+            AOM_ICDF(26439), AOM_ICDF(26884), AOM_ICDF(29895), AOM_ICDF(31938),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(3072), AOM_ICDF(6204), AOM_ICDF(24363), AOM_ICDF(24995),
+            AOM_ICDF(25363), AOM_ICDF(26103), AOM_ICDF(26546), AOM_ICDF(27518),
+            AOM_ICDF(27621), AOM_ICDF(27902), AOM_ICDF(30164), AOM_ICDF(32148),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(2560), AOM_ICDF(6572), AOM_ICDF(13837), AOM_ICDF(19693),
+            AOM_ICDF(20377), AOM_ICDF(21010), AOM_ICDF(21699), AOM_ICDF(22737),
+            AOM_ICDF(23286), AOM_ICDF(24323), AOM_ICDF(28875), AOM_ICDF(30837),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6912), AOM_ICDF(8831), AOM_ICDF(17059), AOM_ICDF(18404),
+            AOM_ICDF(19221), AOM_ICDF(20434), AOM_ICDF(22313), AOM_ICDF(24151),
+            AOM_ICDF(24420), AOM_ICDF(25855), AOM_ICDF(29474), AOM_ICDF(31623),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(2944), AOM_ICDF(4808), AOM_ICDF(14965), AOM_ICDF(15870),
+            AOM_ICDF(18714), AOM_ICDF(21989), AOM_ICDF(22957), AOM_ICDF(24528),
+            AOM_ICDF(25365), AOM_ICDF(26001), AOM_ICDF(29596), AOM_ICDF(31678),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4352), AOM_ICDF(6239), AOM_ICDF(19711), AOM_ICDF(20602),
+            AOM_ICDF(22489), AOM_ICDF(27311), AOM_ICDF(28228), AOM_ICDF(30516),
+            AOM_ICDF(31097), AOM_ICDF(31750), AOM_ICDF(32319), AOM_ICDF(32656),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(2944), AOM_ICDF(4925), AOM_ICDF(13952), AOM_ICDF(15490),
+            AOM_ICDF(18397), AOM_ICDF(20200), AOM_ICDF(20986), AOM_ICDF(22367),
+            AOM_ICDF(24967), AOM_ICDF(25820), AOM_ICDF(29755), AOM_ICDF(31473),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4224), AOM_ICDF(6120), AOM_ICDF(14968), AOM_ICDF(17184),
+            AOM_ICDF(18063), AOM_ICDF(19140), AOM_ICDF(20258), AOM_ICDF(21822),
+            AOM_ICDF(22463), AOM_ICDF(24838), AOM_ICDF(28989), AOM_ICDF(31277),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5120), AOM_ICDF(7280), AOM_ICDF(17535), AOM_ICDF(18348),
+            AOM_ICDF(19116), AOM_ICDF(20689), AOM_ICDF(21916), AOM_ICDF(24968),
+            AOM_ICDF(25242), AOM_ICDF(26095), AOM_ICDF(29588), AOM_ICDF(31787),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(2816), AOM_ICDF(4922), AOM_ICDF(17105), AOM_ICDF(18458),
+            AOM_ICDF(19325), AOM_ICDF(19614), AOM_ICDF(20231), AOM_ICDF(21700),
+            AOM_ICDF(22089), AOM_ICDF(22756), AOM_ICDF(27879), AOM_ICDF(31278),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(2560), AOM_ICDF(4920), AOM_ICDF(18518), AOM_ICDF(19680),
+            AOM_ICDF(20386), AOM_ICDF(20689), AOM_ICDF(21208), AOM_ICDF(22472),
+            AOM_ICDF(22754), AOM_ICDF(23223), AOM_ICDF(27809), AOM_ICDF(31664),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(3328), AOM_ICDF(5513), AOM_ICDF(17331), AOM_ICDF(19065),
+            AOM_ICDF(19882), AOM_ICDF(20105), AOM_ICDF(20748), AOM_ICDF(22110),
+            AOM_ICDF(22443), AOM_ICDF(23129), AOM_ICDF(28099), AOM_ICDF(30944),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(2560), AOM_ICDF(6690), AOM_ICDF(20748), AOM_ICDF(22590),
+            AOM_ICDF(23037), AOM_ICDF(23659), AOM_ICDF(24406), AOM_ICDF(25582),
+            AOM_ICDF(25835), AOM_ICDF(26485), AOM_ICDF(29553), AOM_ICDF(31826),
+            AOM_ICDF(32768), 0 },
+      },
+      {
+          { AOM_ICDF(11392), AOM_ICDF(13647), AOM_ICDF(15216), AOM_ICDF(23156),
+            AOM_ICDF(24102), AOM_ICDF(24540), AOM_ICDF(25183), AOM_ICDF(25746),
+            AOM_ICDF(26706), AOM_ICDF(28032), AOM_ICDF(30511), AOM_ICDF(31357),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(8064), AOM_ICDF(11635), AOM_ICDF(17166), AOM_ICDF(22459),
+            AOM_ICDF(23608), AOM_ICDF(24297), AOM_ICDF(25025), AOM_ICDF(25902),
+            AOM_ICDF(26438), AOM_ICDF(27551), AOM_ICDF(30343), AOM_ICDF(31641),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4352), AOM_ICDF(6905), AOM_ICDF(7612), AOM_ICDF(24258),
+            AOM_ICDF(24862), AOM_ICDF(25005), AOM_ICDF(25399), AOM_ICDF(25658),
+            AOM_ICDF(26491), AOM_ICDF(28281), AOM_ICDF(30472), AOM_ICDF(31037),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(10752), AOM_ICDF(13246), AOM_ICDF(14771), AOM_ICDF(18965),
+            AOM_ICDF(20132), AOM_ICDF(20606), AOM_ICDF(22411), AOM_ICDF(23422),
+            AOM_ICDF(24663), AOM_ICDF(27386), AOM_ICDF(30203), AOM_ICDF(31265),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(8320), AOM_ICDF(10135), AOM_ICDF(11815), AOM_ICDF(15962),
+            AOM_ICDF(19829), AOM_ICDF(21555), AOM_ICDF(22738), AOM_ICDF(23482),
+            AOM_ICDF(25513), AOM_ICDF(27100), AOM_ICDF(30222), AOM_ICDF(31246),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(11264), AOM_ICDF(13364), AOM_ICDF(16851), AOM_ICDF(20617),
+            AOM_ICDF(23504), AOM_ICDF(26302), AOM_ICDF(28070), AOM_ICDF(29189),
+            AOM_ICDF(30531), AOM_ICDF(31903), AOM_ICDF(32342), AOM_ICDF(32512),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6528), AOM_ICDF(7656), AOM_ICDF(8637), AOM_ICDF(15318),
+            AOM_ICDF(18270), AOM_ICDF(18817), AOM_ICDF(19580), AOM_ICDF(20044),
+            AOM_ICDF(24666), AOM_ICDF(26502), AOM_ICDF(29733), AOM_ICDF(30670),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6784), AOM_ICDF(8307), AOM_ICDF(9167), AOM_ICDF(17476),
+            AOM_ICDF(18366), AOM_ICDF(18663), AOM_ICDF(19765), AOM_ICDF(20425),
+            AOM_ICDF(21534), AOM_ICDF(26888), AOM_ICDF(29989), AOM_ICDF(30857),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(8192), AOM_ICDF(11072), AOM_ICDF(12682), AOM_ICDF(17399),
+            AOM_ICDF(19010), AOM_ICDF(19743), AOM_ICDF(20964), AOM_ICDF(22993),
+            AOM_ICDF(23871), AOM_ICDF(25817), AOM_ICDF(29727), AOM_ICDF(31164),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5888), AOM_ICDF(7988), AOM_ICDF(9634), AOM_ICDF(16735),
+            AOM_ICDF(18009), AOM_ICDF(18129), AOM_ICDF(18930), AOM_ICDF(19741),
+            AOM_ICDF(20911), AOM_ICDF(22671), AOM_ICDF(27877), AOM_ICDF(29749),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5248), AOM_ICDF(8151), AOM_ICDF(10267), AOM_ICDF(17761),
+            AOM_ICDF(19077), AOM_ICDF(19232), AOM_ICDF(19919), AOM_ICDF(20772),
+            AOM_ICDF(21615), AOM_ICDF(23140), AOM_ICDF(28142), AOM_ICDF(30618),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6656), AOM_ICDF(8390), AOM_ICDF(9723), AOM_ICDF(17206),
+            AOM_ICDF(18212), AOM_ICDF(18275), AOM_ICDF(19068), AOM_ICDF(19657),
+            AOM_ICDF(20886), AOM_ICDF(22650), AOM_ICDF(27907), AOM_ICDF(29084),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4480), AOM_ICDF(9232), AOM_ICDF(11163), AOM_ICDF(22580),
+            AOM_ICDF(23368), AOM_ICDF(23653), AOM_ICDF(24436), AOM_ICDF(24989),
+            AOM_ICDF(25809), AOM_ICDF(27087), AOM_ICDF(30038), AOM_ICDF(31104),
+            AOM_ICDF(32768), 0 },
+      },
+      {
+          { AOM_ICDF(10240), AOM_ICDF(11472), AOM_ICDF(14051), AOM_ICDF(16777),
+            AOM_ICDF(18308), AOM_ICDF(19461), AOM_ICDF(22164), AOM_ICDF(24235),
+            AOM_ICDF(25202), AOM_ICDF(26680), AOM_ICDF(29962), AOM_ICDF(31168),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(7552), AOM_ICDF(9128), AOM_ICDF(16885), AOM_ICDF(18221),
+            AOM_ICDF(19114), AOM_ICDF(20111), AOM_ICDF(23226), AOM_ICDF(25462),
+            AOM_ICDF(26033), AOM_ICDF(27085), AOM_ICDF(30259), AOM_ICDF(31729),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5248), AOM_ICDF(7291), AOM_ICDF(8883), AOM_ICDF(18172),
+            AOM_ICDF(19301), AOM_ICDF(19892), AOM_ICDF(21703), AOM_ICDF(22870),
+            AOM_ICDF(23798), AOM_ICDF(25970), AOM_ICDF(29581), AOM_ICDF(30440),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(11008), AOM_ICDF(11943), AOM_ICDF(12838), AOM_ICDF(14729),
+            AOM_ICDF(15340), AOM_ICDF(15719), AOM_ICDF(23245), AOM_ICDF(25217),
+            AOM_ICDF(25453), AOM_ICDF(28282), AOM_ICDF(30735), AOM_ICDF(31696),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6272), AOM_ICDF(7100), AOM_ICDF(9506), AOM_ICDF(11141),
+            AOM_ICDF(14891), AOM_ICDF(18048), AOM_ICDF(20808), AOM_ICDF(22910),
+            AOM_ICDF(24450), AOM_ICDF(26172), AOM_ICDF(29625), AOM_ICDF(31233),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(7424), AOM_ICDF(8513), AOM_ICDF(11924), AOM_ICDF(13742),
+            AOM_ICDF(16971), AOM_ICDF(22265), AOM_ICDF(25957), AOM_ICDF(29762),
+            AOM_ICDF(30831), AOM_ICDF(32193), AOM_ICDF(32537), AOM_ICDF(32669),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4992), AOM_ICDF(5969), AOM_ICDF(7435), AOM_ICDF(10922),
+            AOM_ICDF(15097), AOM_ICDF(16638), AOM_ICDF(18654), AOM_ICDF(20087),
+            AOM_ICDF(23356), AOM_ICDF(25452), AOM_ICDF(29281), AOM_ICDF(30725),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(9600), AOM_ICDF(10324), AOM_ICDF(12603), AOM_ICDF(15427),
+            AOM_ICDF(16950), AOM_ICDF(17959), AOM_ICDF(20909), AOM_ICDF(22299),
+            AOM_ICDF(22994), AOM_ICDF(27308), AOM_ICDF(30379), AOM_ICDF(31154),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(9856), AOM_ICDF(11020), AOM_ICDF(12549), AOM_ICDF(14621),
+            AOM_ICDF(15493), AOM_ICDF(16182), AOM_ICDF(21430), AOM_ICDF(25947),
+            AOM_ICDF(26427), AOM_ICDF(27888), AOM_ICDF(30595), AOM_ICDF(31809),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6272), AOM_ICDF(7618), AOM_ICDF(10664), AOM_ICDF(12915),
+            AOM_ICDF(14454), AOM_ICDF(14722), AOM_ICDF(17965), AOM_ICDF(20394),
+            AOM_ICDF(21312), AOM_ICDF(23371), AOM_ICDF(28730), AOM_ICDF(30623),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5888), AOM_ICDF(7463), AOM_ICDF(10923), AOM_ICDF(12991),
+            AOM_ICDF(14555), AOM_ICDF(14934), AOM_ICDF(18208), AOM_ICDF(21052),
+            AOM_ICDF(21876), AOM_ICDF(23450), AOM_ICDF(28655), AOM_ICDF(31017),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6912), AOM_ICDF(8023), AOM_ICDF(10440), AOM_ICDF(13329),
+            AOM_ICDF(14958), AOM_ICDF(15150), AOM_ICDF(18109), AOM_ICDF(20056),
+            AOM_ICDF(21049), AOM_ICDF(23063), AOM_ICDF(28219), AOM_ICDF(29978),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5120), AOM_ICDF(7928), AOM_ICDF(11906), AOM_ICDF(15940),
+            AOM_ICDF(16978), AOM_ICDF(17773), AOM_ICDF(22342), AOM_ICDF(24419),
+            AOM_ICDF(25300), AOM_ICDF(27021), AOM_ICDF(30007), AOM_ICDF(31312),
+            AOM_ICDF(32768), 0 },
+      },
+      {
+          { AOM_ICDF(7296), AOM_ICDF(8291), AOM_ICDF(10299), AOM_ICDF(12767),
+            AOM_ICDF(18252), AOM_ICDF(20656), AOM_ICDF(21413), AOM_ICDF(22300),
+            AOM_ICDF(24958), AOM_ICDF(26544), AOM_ICDF(30069), AOM_ICDF(31387),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(7168), AOM_ICDF(8668), AOM_ICDF(13187), AOM_ICDF(15041),
+            AOM_ICDF(18824), AOM_ICDF(21371), AOM_ICDF(22261), AOM_ICDF(23574),
+            AOM_ICDF(25082), AOM_ICDF(26133), AOM_ICDF(29839), AOM_ICDF(31693),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(3584), AOM_ICDF(5750), AOM_ICDF(6594), AOM_ICDF(15662),
+            AOM_ICDF(18845), AOM_ICDF(20090), AOM_ICDF(20783), AOM_ICDF(21438),
+            AOM_ICDF(23430), AOM_ICDF(25436), AOM_ICDF(29446), AOM_ICDF(30471),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(7424), AOM_ICDF(8711), AOM_ICDF(10121), AOM_ICDF(11786),
+            AOM_ICDF(15100), AOM_ICDF(16579), AOM_ICDF(20437), AOM_ICDF(21593),
+            AOM_ICDF(22903), AOM_ICDF(25678), AOM_ICDF(29638), AOM_ICDF(31130),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4480), AOM_ICDF(5033), AOM_ICDF(6441), AOM_ICDF(7646),
+            AOM_ICDF(18034), AOM_ICDF(21867), AOM_ICDF(22676), AOM_ICDF(23504),
+            AOM_ICDF(25892), AOM_ICDF(26913), AOM_ICDF(30206), AOM_ICDF(31507),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(7296), AOM_ICDF(8192), AOM_ICDF(11072), AOM_ICDF(12676),
+            AOM_ICDF(19460), AOM_ICDF(25734), AOM_ICDF(26778), AOM_ICDF(28439),
+            AOM_ICDF(31077), AOM_ICDF(32002), AOM_ICDF(32469), AOM_ICDF(32671),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(3840), AOM_ICDF(4518), AOM_ICDF(5511), AOM_ICDF(8229),
+            AOM_ICDF(16448), AOM_ICDF(18394), AOM_ICDF(19292), AOM_ICDF(20345),
+            AOM_ICDF(25683), AOM_ICDF(27399), AOM_ICDF(30566), AOM_ICDF(31375),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6528), AOM_ICDF(7451), AOM_ICDF(8934), AOM_ICDF(12006),
+            AOM_ICDF(15767), AOM_ICDF(17127), AOM_ICDF(18471), AOM_ICDF(19476),
+            AOM_ICDF(21553), AOM_ICDF(25715), AOM_ICDF(29572), AOM_ICDF(30795),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(7168), AOM_ICDF(8368), AOM_ICDF(10370), AOM_ICDF(11855),
+            AOM_ICDF(14966), AOM_ICDF(17544), AOM_ICDF(19328), AOM_ICDF(21271),
+            AOM_ICDF(22708), AOM_ICDF(24555), AOM_ICDF(29207), AOM_ICDF(31280),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5504), AOM_ICDF(6782), AOM_ICDF(8914), AOM_ICDF(11452),
+            AOM_ICDF(15958), AOM_ICDF(16648), AOM_ICDF(17530), AOM_ICDF(18899),
+            AOM_ICDF(20578), AOM_ICDF(22245), AOM_ICDF(28123), AOM_ICDF(30427),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5248), AOM_ICDF(6538), AOM_ICDF(9100), AOM_ICDF(11294),
+            AOM_ICDF(15638), AOM_ICDF(16589), AOM_ICDF(17600), AOM_ICDF(19318),
+            AOM_ICDF(20842), AOM_ICDF(22193), AOM_ICDF(28018), AOM_ICDF(30875),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5376), AOM_ICDF(6553), AOM_ICDF(8499), AOM_ICDF(11769),
+            AOM_ICDF(15661), AOM_ICDF(16178), AOM_ICDF(17280), AOM_ICDF(18490),
+            AOM_ICDF(20386), AOM_ICDF(22127), AOM_ICDF(28071), AOM_ICDF(30089),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4608), AOM_ICDF(7468), AOM_ICDF(10136), AOM_ICDF(15013),
+            AOM_ICDF(17716), AOM_ICDF(19595), AOM_ICDF(20830), AOM_ICDF(22136),
+            AOM_ICDF(23714), AOM_ICDF(25341), AOM_ICDF(29403), AOM_ICDF(31072),
+            AOM_ICDF(32768), 0 },
+      },
+      {
+          { AOM_ICDF(6656), AOM_ICDF(8186), AOM_ICDF(13755), AOM_ICDF(15971),
+            AOM_ICDF(20413), AOM_ICDF(27940), AOM_ICDF(28657), AOM_ICDF(29910),
+            AOM_ICDF(31004), AOM_ICDF(31969), AOM_ICDF(32443), AOM_ICDF(32665),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6400), AOM_ICDF(8048), AOM_ICDF(16256), AOM_ICDF(17568),
+            AOM_ICDF(21074), AOM_ICDF(28253), AOM_ICDF(28976), AOM_ICDF(30531),
+            AOM_ICDF(31099), AOM_ICDF(31875), AOM_ICDF(32426), AOM_ICDF(32701),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(3840), AOM_ICDF(6439), AOM_ICDF(9524), AOM_ICDF(17270),
+            AOM_ICDF(21391), AOM_ICDF(25777), AOM_ICDF(26815), AOM_ICDF(27908),
+            AOM_ICDF(29199), AOM_ICDF(31151), AOM_ICDF(32168), AOM_ICDF(32407),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(9600), AOM_ICDF(10958), AOM_ICDF(14962), AOM_ICDF(16560),
+            AOM_ICDF(19908), AOM_ICDF(23309), AOM_ICDF(25637), AOM_ICDF(28033),
+            AOM_ICDF(29032), AOM_ICDF(32009), AOM_ICDF(32528), AOM_ICDF(32701),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4608), AOM_ICDF(5598), AOM_ICDF(9525), AOM_ICDF(10578),
+            AOM_ICDF(18511), AOM_ICDF(27502), AOM_ICDF(28654), AOM_ICDF(29907),
+            AOM_ICDF(31069), AOM_ICDF(32071), AOM_ICDF(32493), AOM_ICDF(32670),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4864), AOM_ICDF(5845), AOM_ICDF(11524), AOM_ICDF(12294),
+            AOM_ICDF(16882), AOM_ICDF(27955), AOM_ICDF(28839), AOM_ICDF(30251),
+            AOM_ICDF(30949), AOM_ICDF(31873), AOM_ICDF(32467), AOM_ICDF(32703),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(3968), AOM_ICDF(5431), AOM_ICDF(8955), AOM_ICDF(11746),
+            AOM_ICDF(18914), AOM_ICDF(24489), AOM_ICDF(25524), AOM_ICDF(27194),
+            AOM_ICDF(29894), AOM_ICDF(31589), AOM_ICDF(32335), AOM_ICDF(32551),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6016), AOM_ICDF(7584), AOM_ICDF(11814), AOM_ICDF(14567),
+            AOM_ICDF(18253), AOM_ICDF(21882), AOM_ICDF(23966), AOM_ICDF(26442),
+            AOM_ICDF(27628), AOM_ICDF(31142), AOM_ICDF(32177), AOM_ICDF(32466),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(7808), AOM_ICDF(9661), AOM_ICDF(15257), AOM_ICDF(16576),
+            AOM_ICDF(20349), AOM_ICDF(24902), AOM_ICDF(26592), AOM_ICDF(29415),
+            AOM_ICDF(30083), AOM_ICDF(31782), AOM_ICDF(32360), AOM_ICDF(32680),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(2816), AOM_ICDF(4805), AOM_ICDF(8519), AOM_ICDF(10112),
+            AOM_ICDF(13408), AOM_ICDF(18465), AOM_ICDF(19582), AOM_ICDF(21333),
+            AOM_ICDF(22494), AOM_ICDF(24059), AOM_ICDF(29026), AOM_ICDF(31321),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(2432), AOM_ICDF(4091), AOM_ICDF(8236), AOM_ICDF(9669),
+            AOM_ICDF(13111), AOM_ICDF(19352), AOM_ICDF(20557), AOM_ICDF(22370),
+            AOM_ICDF(23060), AOM_ICDF(24425), AOM_ICDF(28890), AOM_ICDF(31586),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(3200), AOM_ICDF(5164), AOM_ICDF(8938), AOM_ICDF(11126),
+            AOM_ICDF(14494), AOM_ICDF(18433), AOM_ICDF(19721), AOM_ICDF(21148),
+            AOM_ICDF(22510), AOM_ICDF(24233), AOM_ICDF(29134), AOM_ICDF(31235),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4480), AOM_ICDF(7132), AOM_ICDF(13341), AOM_ICDF(17959),
+            AOM_ICDF(21108), AOM_ICDF(25786), AOM_ICDF(27068), AOM_ICDF(29161),
+            AOM_ICDF(30077), AOM_ICDF(31286), AOM_ICDF(32363), AOM_ICDF(32565),
+            AOM_ICDF(32768), 0 },
+      },
+      {
+          { AOM_ICDF(9600), AOM_ICDF(10686), AOM_ICDF(12152), AOM_ICDF(16918),
+            AOM_ICDF(19247), AOM_ICDF(20286), AOM_ICDF(20969), AOM_ICDF(21568),
+            AOM_ICDF(25987), AOM_ICDF(27444), AOM_ICDF(30376), AOM_ICDF(31348),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(8832), AOM_ICDF(10609), AOM_ICDF(14591), AOM_ICDF(17948),
+            AOM_ICDF(19973), AOM_ICDF(21052), AOM_ICDF(21922), AOM_ICDF(22854),
+            AOM_ICDF(25642), AOM_ICDF(26783), AOM_ICDF(29892), AOM_ICDF(31499),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(3840), AOM_ICDF(5196), AOM_ICDF(5842), AOM_ICDF(17177),
+            AOM_ICDF(19308), AOM_ICDF(19726), AOM_ICDF(20235), AOM_ICDF(20627),
+            AOM_ICDF(24184), AOM_ICDF(26799), AOM_ICDF(29993), AOM_ICDF(30752),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(9856), AOM_ICDF(11288), AOM_ICDF(12295), AOM_ICDF(15482),
+            AOM_ICDF(18345), AOM_ICDF(19093), AOM_ICDF(20963), AOM_ICDF(21747),
+            AOM_ICDF(24718), AOM_ICDF(26793), AOM_ICDF(29991), AOM_ICDF(31032),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6528), AOM_ICDF(7348), AOM_ICDF(8440), AOM_ICDF(11002),
+            AOM_ICDF(17084), AOM_ICDF(19749), AOM_ICDF(20766), AOM_ICDF(21563),
+            AOM_ICDF(25502), AOM_ICDF(26950), AOM_ICDF(30245), AOM_ICDF(31152),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(9728), AOM_ICDF(10448), AOM_ICDF(12541), AOM_ICDF(14674),
+            AOM_ICDF(19296), AOM_ICDF(23919), AOM_ICDF(25198), AOM_ICDF(26558),
+            AOM_ICDF(30755), AOM_ICDF(31958), AOM_ICDF(32461), AOM_ICDF(32594),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5120), AOM_ICDF(5768), AOM_ICDF(6401), AOM_ICDF(10321),
+            AOM_ICDF(14515), AOM_ICDF(15362), AOM_ICDF(15838), AOM_ICDF(16301),
+            AOM_ICDF(26078), AOM_ICDF(27489), AOM_ICDF(30397), AOM_ICDF(31175),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5888), AOM_ICDF(6518), AOM_ICDF(7236), AOM_ICDF(12128),
+            AOM_ICDF(14327), AOM_ICDF(15015), AOM_ICDF(16055), AOM_ICDF(16773),
+            AOM_ICDF(20897), AOM_ICDF(25395), AOM_ICDF(29341), AOM_ICDF(30452),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(10368), AOM_ICDF(11856), AOM_ICDF(13245), AOM_ICDF(15614),
+            AOM_ICDF(18451), AOM_ICDF(19498), AOM_ICDF(20846), AOM_ICDF(22429),
+            AOM_ICDF(24610), AOM_ICDF(26522), AOM_ICDF(30279), AOM_ICDF(31523),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6016), AOM_ICDF(7061), AOM_ICDF(8668), AOM_ICDF(12423),
+            AOM_ICDF(15346), AOM_ICDF(15634), AOM_ICDF(16504), AOM_ICDF(17584),
+            AOM_ICDF(21083), AOM_ICDF(23000), AOM_ICDF(28456), AOM_ICDF(30241),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5760), AOM_ICDF(7026), AOM_ICDF(8735), AOM_ICDF(12665),
+            AOM_ICDF(15507), AOM_ICDF(15870), AOM_ICDF(16794), AOM_ICDF(17792),
+            AOM_ICDF(21068), AOM_ICDF(23033), AOM_ICDF(28395), AOM_ICDF(30701),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(7040), AOM_ICDF(8045), AOM_ICDF(9300), AOM_ICDF(13303),
+            AOM_ICDF(15462), AOM_ICDF(15625), AOM_ICDF(16362), AOM_ICDF(17067),
+            AOM_ICDF(20686), AOM_ICDF(22810), AOM_ICDF(27983), AOM_ICDF(29347),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5632), AOM_ICDF(8070), AOM_ICDF(9903), AOM_ICDF(16658),
+            AOM_ICDF(18637), AOM_ICDF(19728), AOM_ICDF(20543), AOM_ICDF(21450),
+            AOM_ICDF(24456), AOM_ICDF(26372), AOM_ICDF(29645), AOM_ICDF(30731),
+            AOM_ICDF(32768), 0 },
+      },
+      {
+          { AOM_ICDF(11008), AOM_ICDF(12283), AOM_ICDF(14364), AOM_ICDF(18419),
+            AOM_ICDF(19948), AOM_ICDF(20618), AOM_ICDF(21899), AOM_ICDF(22960),
+            AOM_ICDF(23994), AOM_ICDF(26565), AOM_ICDF(30078), AOM_ICDF(31213),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(9088), AOM_ICDF(11586), AOM_ICDF(16716), AOM_ICDF(18876),
+            AOM_ICDF(20112), AOM_ICDF(21105), AOM_ICDF(22426), AOM_ICDF(23800),
+            AOM_ICDF(24396), AOM_ICDF(26653), AOM_ICDF(30021), AOM_ICDF(31566),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6144), AOM_ICDF(8328), AOM_ICDF(9378), AOM_ICDF(20096),
+            AOM_ICDF(20984), AOM_ICDF(21256), AOM_ICDF(22335), AOM_ICDF(23109),
+            AOM_ICDF(24128), AOM_ICDF(26896), AOM_ICDF(29947), AOM_ICDF(30740),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(10496), AOM_ICDF(12323), AOM_ICDF(13441), AOM_ICDF(15479),
+            AOM_ICDF(16976), AOM_ICDF(17518), AOM_ICDF(20794), AOM_ICDF(22571),
+            AOM_ICDF(23328), AOM_ICDF(27421), AOM_ICDF(30512), AOM_ICDF(31561),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(7296), AOM_ICDF(8391), AOM_ICDF(10010), AOM_ICDF(12258),
+            AOM_ICDF(15388), AOM_ICDF(16944), AOM_ICDF(19602), AOM_ICDF(21196),
+            AOM_ICDF(22869), AOM_ICDF(25112), AOM_ICDF(29389), AOM_ICDF(30709),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(9728), AOM_ICDF(11168), AOM_ICDF(14881), AOM_ICDF(17298),
+            AOM_ICDF(20151), AOM_ICDF(22916), AOM_ICDF(25918), AOM_ICDF(28032),
+            AOM_ICDF(29549), AOM_ICDF(31787), AOM_ICDF(32293), AOM_ICDF(32521),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6400), AOM_ICDF(7636), AOM_ICDF(8716), AOM_ICDF(12718),
+            AOM_ICDF(15711), AOM_ICDF(16420), AOM_ICDF(18144), AOM_ICDF(19287),
+            AOM_ICDF(22815), AOM_ICDF(25886), AOM_ICDF(29596), AOM_ICDF(30674),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(9856), AOM_ICDF(10662), AOM_ICDF(11785), AOM_ICDF(14236),
+            AOM_ICDF(14998), AOM_ICDF(15391), AOM_ICDF(17156), AOM_ICDF(17949),
+            AOM_ICDF(18470), AOM_ICDF(27797), AOM_ICDF(30418), AOM_ICDF(31244),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(8960), AOM_ICDF(10448), AOM_ICDF(12017), AOM_ICDF(14128),
+            AOM_ICDF(15765), AOM_ICDF(16637), AOM_ICDF(19347), AOM_ICDF(21759),
+            AOM_ICDF(22490), AOM_ICDF(25300), AOM_ICDF(29676), AOM_ICDF(31077),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(7168), AOM_ICDF(8468), AOM_ICDF(10177), AOM_ICDF(13693),
+            AOM_ICDF(15333), AOM_ICDF(15472), AOM_ICDF(17094), AOM_ICDF(18257),
+            AOM_ICDF(19277), AOM_ICDF(22386), AOM_ICDF(28023), AOM_ICDF(29969),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6400), AOM_ICDF(8151), AOM_ICDF(10651), AOM_ICDF(13992),
+            AOM_ICDF(15677), AOM_ICDF(15835), AOM_ICDF(17422), AOM_ICDF(18621),
+            AOM_ICDF(19450), AOM_ICDF(22207), AOM_ICDF(27735), AOM_ICDF(30409),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(7296), AOM_ICDF(8391), AOM_ICDF(9915), AOM_ICDF(13980),
+            AOM_ICDF(15352), AOM_ICDF(15450), AOM_ICDF(17006), AOM_ICDF(17930),
+            AOM_ICDF(18973), AOM_ICDF(22045), AOM_ICDF(27658), AOM_ICDF(29235),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6272), AOM_ICDF(9481), AOM_ICDF(11664), AOM_ICDF(16537),
+            AOM_ICDF(17656), AOM_ICDF(18094), AOM_ICDF(20673), AOM_ICDF(21949),
+            AOM_ICDF(22752), AOM_ICDF(25921), AOM_ICDF(29612), AOM_ICDF(30869),
+            AOM_ICDF(32768), 0 },
+      },
+      {
+          { AOM_ICDF(6784), AOM_ICDF(8104), AOM_ICDF(12536), AOM_ICDF(14589),
+            AOM_ICDF(15843), AOM_ICDF(17357), AOM_ICDF(19765), AOM_ICDF(23981),
+            AOM_ICDF(24633), AOM_ICDF(25618), AOM_ICDF(29556), AOM_ICDF(31438),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5760), AOM_ICDF(7237), AOM_ICDF(14717), AOM_ICDF(15587),
+            AOM_ICDF(16364), AOM_ICDF(17537), AOM_ICDF(20393), AOM_ICDF(26097),
+            AOM_ICDF(26462), AOM_ICDF(27029), AOM_ICDF(30123), AOM_ICDF(31921),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4352), AOM_ICDF(5906), AOM_ICDF(8424), AOM_ICDF(16214),
+            AOM_ICDF(16978), AOM_ICDF(17743), AOM_ICDF(19680), AOM_ICDF(22441),
+            AOM_ICDF(23167), AOM_ICDF(25080), AOM_ICDF(29224), AOM_ICDF(30650),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(9472), AOM_ICDF(10473), AOM_ICDF(12737), AOM_ICDF(14173),
+            AOM_ICDF(15051), AOM_ICDF(15632), AOM_ICDF(20652), AOM_ICDF(24864),
+            AOM_ICDF(25204), AOM_ICDF(27006), AOM_ICDF(30292), AOM_ICDF(31501),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4480), AOM_ICDF(5475), AOM_ICDF(8247), AOM_ICDF(9646),
+            AOM_ICDF(12203), AOM_ICDF(14760), AOM_ICDF(18488), AOM_ICDF(22616),
+            AOM_ICDF(23449), AOM_ICDF(24650), AOM_ICDF(29026), AOM_ICDF(30955),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6016), AOM_ICDF(6957), AOM_ICDF(12502), AOM_ICDF(13805),
+            AOM_ICDF(16777), AOM_ICDF(21052), AOM_ICDF(23981), AOM_ICDF(30606),
+            AOM_ICDF(31206), AOM_ICDF(31981), AOM_ICDF(32414), AOM_ICDF(32681),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4480), AOM_ICDF(5475), AOM_ICDF(7820), AOM_ICDF(9805),
+            AOM_ICDF(12793), AOM_ICDF(14252), AOM_ICDF(16711), AOM_ICDF(20725),
+            AOM_ICDF(23406), AOM_ICDF(25015), AOM_ICDF(29225), AOM_ICDF(30775),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6912), AOM_ICDF(7619), AOM_ICDF(10173), AOM_ICDF(12424),
+            AOM_ICDF(13502), AOM_ICDF(14410), AOM_ICDF(17852), AOM_ICDF(21348),
+            AOM_ICDF(22017), AOM_ICDF(25461), AOM_ICDF(29571), AOM_ICDF(31020),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(7680), AOM_ICDF(8562), AOM_ICDF(11399), AOM_ICDF(12263),
+            AOM_ICDF(12870), AOM_ICDF(13486), AOM_ICDF(18307), AOM_ICDF(26385),
+            AOM_ICDF(26734), AOM_ICDF(27724), AOM_ICDF(30482), AOM_ICDF(31955),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4992), AOM_ICDF(6186), AOM_ICDF(9820), AOM_ICDF(11725),
+            AOM_ICDF(13117), AOM_ICDF(13406), AOM_ICDF(15978), AOM_ICDF(20372),
+            AOM_ICDF(20953), AOM_ICDF(22245), AOM_ICDF(28205), AOM_ICDF(30879),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4736), AOM_ICDF(6050), AOM_ICDF(10747), AOM_ICDF(12295),
+            AOM_ICDF(13445), AOM_ICDF(13844), AOM_ICDF(16357), AOM_ICDF(21485),
+            AOM_ICDF(21838), AOM_ICDF(22820), AOM_ICDF(28183), AOM_ICDF(31138),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5760), AOM_ICDF(6710), AOM_ICDF(10476), AOM_ICDF(12855),
+            AOM_ICDF(14101), AOM_ICDF(14482), AOM_ICDF(17053), AOM_ICDF(20613),
+            AOM_ICDF(21278), AOM_ICDF(22580), AOM_ICDF(28351), AOM_ICDF(30542),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4480), AOM_ICDF(6359), AOM_ICDF(11826), AOM_ICDF(14265),
+            AOM_ICDF(14852), AOM_ICDF(15753), AOM_ICDF(19276), AOM_ICDF(24757),
+            AOM_ICDF(25226), AOM_ICDF(26287), AOM_ICDF(29629), AOM_ICDF(31493),
+            AOM_ICDF(32768), 0 },
+      },
+      {
+          { AOM_ICDF(7424), AOM_ICDF(8612), AOM_ICDF(11726), AOM_ICDF(15286),
+            AOM_ICDF(16881), AOM_ICDF(17151), AOM_ICDF(17944), AOM_ICDF(19160),
+            AOM_ICDF(20011), AOM_ICDF(21356), AOM_ICDF(27463), AOM_ICDF(29805),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5376), AOM_ICDF(7516), AOM_ICDF(15210), AOM_ICDF(17109),
+            AOM_ICDF(18458), AOM_ICDF(18708), AOM_ICDF(19587), AOM_ICDF(20977),
+            AOM_ICDF(21484), AOM_ICDF(22277), AOM_ICDF(27768), AOM_ICDF(30893),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(3584), AOM_ICDF(5522), AOM_ICDF(7225), AOM_ICDF(18079),
+            AOM_ICDF(18909), AOM_ICDF(18999), AOM_ICDF(19698), AOM_ICDF(20413),
+            AOM_ICDF(21185), AOM_ICDF(23040), AOM_ICDF(28056), AOM_ICDF(29473),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(7424), AOM_ICDF(8612), AOM_ICDF(10782), AOM_ICDF(12958),
+            AOM_ICDF(14687), AOM_ICDF(14818), AOM_ICDF(17553), AOM_ICDF(19395),
+            AOM_ICDF(20231), AOM_ICDF(23316), AOM_ICDF(28559), AOM_ICDF(30614),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5632), AOM_ICDF(6586), AOM_ICDF(9347), AOM_ICDF(11520),
+            AOM_ICDF(15628), AOM_ICDF(16300), AOM_ICDF(17651), AOM_ICDF(19245),
+            AOM_ICDF(20671), AOM_ICDF(22089), AOM_ICDF(28013), AOM_ICDF(30279),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(3840), AOM_ICDF(5309), AOM_ICDF(9385), AOM_ICDF(10995),
+            AOM_ICDF(14099), AOM_ICDF(18154), AOM_ICDF(19638), AOM_ICDF(21690),
+            AOM_ICDF(23031), AOM_ICDF(24552), AOM_ICDF(29238), AOM_ICDF(31251),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5376), AOM_ICDF(6339), AOM_ICDF(8301), AOM_ICDF(11620),
+            AOM_ICDF(14701), AOM_ICDF(14991), AOM_ICDF(16033), AOM_ICDF(17210),
+            AOM_ICDF(20431), AOM_ICDF(22310), AOM_ICDF(27948), AOM_ICDF(29774),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5632), AOM_ICDF(6692), AOM_ICDF(8729), AOM_ICDF(12618),
+            AOM_ICDF(13927), AOM_ICDF(14081), AOM_ICDF(15176), AOM_ICDF(16413),
+            AOM_ICDF(17371), AOM_ICDF(22183), AOM_ICDF(28013), AOM_ICDF(29815),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6528), AOM_ICDF(7861), AOM_ICDF(11072), AOM_ICDF(12945),
+            AOM_ICDF(14726), AOM_ICDF(14971), AOM_ICDF(16570), AOM_ICDF(19481),
+            AOM_ICDF(20260), AOM_ICDF(21921), AOM_ICDF(27980), AOM_ICDF(30449),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5376), AOM_ICDF(6553), AOM_ICDF(9523), AOM_ICDF(12199),
+            AOM_ICDF(13764), AOM_ICDF(13972), AOM_ICDF(14926), AOM_ICDF(16320),
+            AOM_ICDF(17091), AOM_ICDF(18744), AOM_ICDF(26359), AOM_ICDF(29288),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4736), AOM_ICDF(6160), AOM_ICDF(10318), AOM_ICDF(12718),
+            AOM_ICDF(14251), AOM_ICDF(14527), AOM_ICDF(15453), AOM_ICDF(17009),
+            AOM_ICDF(17625), AOM_ICDF(19045), AOM_ICDF(26335), AOM_ICDF(30079),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5760), AOM_ICDF(6815), AOM_ICDF(9248), AOM_ICDF(12722),
+            AOM_ICDF(14141), AOM_ICDF(14301), AOM_ICDF(15095), AOM_ICDF(16200),
+            AOM_ICDF(17106), AOM_ICDF(18697), AOM_ICDF(26172), AOM_ICDF(28388),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4096), AOM_ICDF(6672), AOM_ICDF(11055), AOM_ICDF(16327),
+            AOM_ICDF(17508), AOM_ICDF(17671), AOM_ICDF(18733), AOM_ICDF(19994),
+            AOM_ICDF(20742), AOM_ICDF(22151), AOM_ICDF(27708), AOM_ICDF(30021),
+            AOM_ICDF(32768), 0 },
+      },
+      {
+          { AOM_ICDF(7936), AOM_ICDF(9197), AOM_ICDF(13524), AOM_ICDF(16819),
+            AOM_ICDF(18267), AOM_ICDF(18636), AOM_ICDF(19409), AOM_ICDF(20661),
+            AOM_ICDF(21323), AOM_ICDF(22307), AOM_ICDF(27905), AOM_ICDF(30678),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5376), AOM_ICDF(7302), AOM_ICDF(16951), AOM_ICDF(18383),
+            AOM_ICDF(19388), AOM_ICDF(19608), AOM_ICDF(20225), AOM_ICDF(21597),
+            AOM_ICDF(21946), AOM_ICDF(22538), AOM_ICDF(27613), AOM_ICDF(31318),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(3840), AOM_ICDF(5987), AOM_ICDF(8184), AOM_ICDF(19612),
+            AOM_ICDF(20392), AOM_ICDF(20476), AOM_ICDF(21100), AOM_ICDF(21693),
+            AOM_ICDF(22428), AOM_ICDF(23963), AOM_ICDF(28709), AOM_ICDF(30342),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(8448), AOM_ICDF(9588), AOM_ICDF(12395), AOM_ICDF(14447),
+            AOM_ICDF(16163), AOM_ICDF(16374), AOM_ICDF(18743), AOM_ICDF(20606),
+            AOM_ICDF(21271), AOM_ICDF(23786), AOM_ICDF(28768), AOM_ICDF(30877),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5760), AOM_ICDF(6710), AOM_ICDF(10069), AOM_ICDF(11965),
+            AOM_ICDF(15976), AOM_ICDF(16719), AOM_ICDF(17973), AOM_ICDF(19880),
+            AOM_ICDF(21139), AOM_ICDF(22275), AOM_ICDF(28259), AOM_ICDF(30954),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(3968), AOM_ICDF(5431), AOM_ICDF(10557), AOM_ICDF(12069),
+            AOM_ICDF(14280), AOM_ICDF(18973), AOM_ICDF(20374), AOM_ICDF(23037),
+            AOM_ICDF(24215), AOM_ICDF(25050), AOM_ICDF(29271), AOM_ICDF(31716),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6016), AOM_ICDF(7061), AOM_ICDF(9672), AOM_ICDF(12246),
+            AOM_ICDF(15351), AOM_ICDF(15717), AOM_ICDF(16716), AOM_ICDF(18158),
+            AOM_ICDF(21126), AOM_ICDF(22672), AOM_ICDF(28035), AOM_ICDF(30494),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6272), AOM_ICDF(7204), AOM_ICDF(9700), AOM_ICDF(13252),
+            AOM_ICDF(14599), AOM_ICDF(14926), AOM_ICDF(15902), AOM_ICDF(17220),
+            AOM_ICDF(18010), AOM_ICDF(22795), AOM_ICDF(28405), AOM_ICDF(30467),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6912), AOM_ICDF(8427), AOM_ICDF(12420), AOM_ICDF(14171),
+            AOM_ICDF(15792), AOM_ICDF(16156), AOM_ICDF(17584), AOM_ICDF(20846),
+            AOM_ICDF(21451), AOM_ICDF(22556), AOM_ICDF(28101), AOM_ICDF(31054),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5248), AOM_ICDF(6431), AOM_ICDF(10855), AOM_ICDF(13296),
+            AOM_ICDF(14848), AOM_ICDF(15135), AOM_ICDF(15893), AOM_ICDF(17277),
+            AOM_ICDF(17943), AOM_ICDF(19275), AOM_ICDF(26443), AOM_ICDF(30174),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4736), AOM_ICDF(6050), AOM_ICDF(12103), AOM_ICDF(14343),
+            AOM_ICDF(15633), AOM_ICDF(15978), AOM_ICDF(16699), AOM_ICDF(18205),
+            AOM_ICDF(18660), AOM_ICDF(19707), AOM_ICDF(26544), AOM_ICDF(30872),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6016), AOM_ICDF(7166), AOM_ICDF(11066), AOM_ICDF(14088),
+            AOM_ICDF(15377), AOM_ICDF(15644), AOM_ICDF(16447), AOM_ICDF(17786),
+            AOM_ICDF(18605), AOM_ICDF(19822), AOM_ICDF(27104), AOM_ICDF(29648),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4608), AOM_ICDF(7358), AOM_ICDF(13016), AOM_ICDF(18200),
+            AOM_ICDF(19015), AOM_ICDF(19189), AOM_ICDF(20038), AOM_ICDF(21430),
+            AOM_ICDF(21917), AOM_ICDF(22977), AOM_ICDF(27949), AOM_ICDF(30848),
+            AOM_ICDF(32768), 0 },
+      },
+      {
+          { AOM_ICDF(7296), AOM_ICDF(8490), AOM_ICDF(11145), AOM_ICDF(15318),
+            AOM_ICDF(16693), AOM_ICDF(16889), AOM_ICDF(17571), AOM_ICDF(18580),
+            AOM_ICDF(19688), AOM_ICDF(21272), AOM_ICDF(27245), AOM_ICDF(28971),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5376), AOM_ICDF(7623), AOM_ICDF(16070), AOM_ICDF(18136),
+            AOM_ICDF(19225), AOM_ICDF(19397), AOM_ICDF(20128), AOM_ICDF(21362),
+            AOM_ICDF(21808), AOM_ICDF(22621), AOM_ICDF(27932), AOM_ICDF(30407),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(3200), AOM_ICDF(5164), AOM_ICDF(6566), AOM_ICDF(18368),
+            AOM_ICDF(19106), AOM_ICDF(19155), AOM_ICDF(19793), AOM_ICDF(20300),
+            AOM_ICDF(21177), AOM_ICDF(23079), AOM_ICDF(27848), AOM_ICDF(28924),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(7040), AOM_ICDF(8146), AOM_ICDF(10550), AOM_ICDF(12876),
+            AOM_ICDF(14506), AOM_ICDF(14629), AOM_ICDF(17180), AOM_ICDF(19129),
+            AOM_ICDF(20088), AOM_ICDF(23407), AOM_ICDF(28673), AOM_ICDF(30257),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6016), AOM_ICDF(7166), AOM_ICDF(9466), AOM_ICDF(11999),
+            AOM_ICDF(15723), AOM_ICDF(16293), AOM_ICDF(17580), AOM_ICDF(19004),
+            AOM_ICDF(20509), AOM_ICDF(22233), AOM_ICDF(28118), AOM_ICDF(29989),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(3840), AOM_ICDF(5422), AOM_ICDF(9054), AOM_ICDF(11018),
+            AOM_ICDF(13605), AOM_ICDF(17576), AOM_ICDF(19178), AOM_ICDF(21514),
+            AOM_ICDF(22877), AOM_ICDF(24461), AOM_ICDF(29069), AOM_ICDF(30933),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5376), AOM_ICDF(6553), AOM_ICDF(8294), AOM_ICDF(12601),
+            AOM_ICDF(15043), AOM_ICDF(15273), AOM_ICDF(16230), AOM_ICDF(17134),
+            AOM_ICDF(20737), AOM_ICDF(22899), AOM_ICDF(28219), AOM_ICDF(29410),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5760), AOM_ICDF(6815), AOM_ICDF(8336), AOM_ICDF(12965),
+            AOM_ICDF(14282), AOM_ICDF(14444), AOM_ICDF(15446), AOM_ICDF(16461),
+            AOM_ICDF(17544), AOM_ICDF(22183), AOM_ICDF(27682), AOM_ICDF(29132),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(6656), AOM_ICDF(8084), AOM_ICDF(10880), AOM_ICDF(12954),
+            AOM_ICDF(14527), AOM_ICDF(14728), AOM_ICDF(16490), AOM_ICDF(19224),
+            AOM_ICDF(20071), AOM_ICDF(21857), AOM_ICDF(27653), AOM_ICDF(30031),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5376), AOM_ICDF(6660), AOM_ICDF(9006), AOM_ICDF(12205),
+            AOM_ICDF(13614), AOM_ICDF(13740), AOM_ICDF(14632), AOM_ICDF(15766),
+            AOM_ICDF(16629), AOM_ICDF(18394), AOM_ICDF(25918), AOM_ICDF(28460),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4736), AOM_ICDF(6488), AOM_ICDF(9978), AOM_ICDF(12889),
+            AOM_ICDF(14419), AOM_ICDF(14607), AOM_ICDF(15458), AOM_ICDF(16743),
+            AOM_ICDF(17369), AOM_ICDF(19053), AOM_ICDF(26393), AOM_ICDF(29456),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5760), AOM_ICDF(6710), AOM_ICDF(8542), AOM_ICDF(12830),
+            AOM_ICDF(13956), AOM_ICDF(14031), AOM_ICDF(14763), AOM_ICDF(15677),
+            AOM_ICDF(16545), AOM_ICDF(18256), AOM_ICDF(25569), AOM_ICDF(27284),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4096), AOM_ICDF(7008), AOM_ICDF(11436), AOM_ICDF(17228),
+            AOM_ICDF(18131), AOM_ICDF(18269), AOM_ICDF(19345), AOM_ICDF(20551),
+            AOM_ICDF(21315), AOM_ICDF(22836), AOM_ICDF(28035), AOM_ICDF(29865),
+            AOM_ICDF(32768), 0 },
+      },
+      {
+          { AOM_ICDF(6528), AOM_ICDF(10833), AOM_ICDF(17688), AOM_ICDF(21947),
+            AOM_ICDF(22829), AOM_ICDF(23814), AOM_ICDF(24514), AOM_ICDF(25707),
+            AOM_ICDF(26397), AOM_ICDF(27442), AOM_ICDF(30271), AOM_ICDF(31734),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4480), AOM_ICDF(8679), AOM_ICDF(21100), AOM_ICDF(23075),
+            AOM_ICDF(23772), AOM_ICDF(24427), AOM_ICDF(25111), AOM_ICDF(26188),
+            AOM_ICDF(26445), AOM_ICDF(27235), AOM_ICDF(29980), AOM_ICDF(31875),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(2688), AOM_ICDF(6683), AOM_ICDF(9332), AOM_ICDF(22173),
+            AOM_ICDF(22688), AOM_ICDF(22972), AOM_ICDF(23623), AOM_ICDF(24159),
+            AOM_ICDF(24798), AOM_ICDF(26666), AOM_ICDF(29812), AOM_ICDF(30909),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(8192), AOM_ICDF(10112), AOM_ICDF(13298), AOM_ICDF(16662),
+            AOM_ICDF(17623), AOM_ICDF(18394), AOM_ICDF(20921), AOM_ICDF(22309),
+            AOM_ICDF(22963), AOM_ICDF(26257), AOM_ICDF(29945), AOM_ICDF(31423),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5120), AOM_ICDF(7604), AOM_ICDF(12617), AOM_ICDF(15628),
+            AOM_ICDF(18274), AOM_ICDF(20174), AOM_ICDF(21404), AOM_ICDF(22869),
+            AOM_ICDF(24184), AOM_ICDF(25626), AOM_ICDF(29615), AOM_ICDF(31155),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(7424), AOM_ICDF(10295), AOM_ICDF(18459), AOM_ICDF(21302),
+            AOM_ICDF(23034), AOM_ICDF(26284), AOM_ICDF(27576), AOM_ICDF(29746),
+            AOM_ICDF(30502), AOM_ICDF(31794), AOM_ICDF(32346), AOM_ICDF(32600),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4224), AOM_ICDF(6789), AOM_ICDF(11254), AOM_ICDF(15589),
+            AOM_ICDF(18568), AOM_ICDF(19238), AOM_ICDF(19872), AOM_ICDF(20880),
+            AOM_ICDF(24409), AOM_ICDF(26238), AOM_ICDF(29580), AOM_ICDF(30875),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5120), AOM_ICDF(7388), AOM_ICDF(10164), AOM_ICDF(15886),
+            AOM_ICDF(16694), AOM_ICDF(17139), AOM_ICDF(18421), AOM_ICDF(19262),
+            AOM_ICDF(20106), AOM_ICDF(26734), AOM_ICDF(29987), AOM_ICDF(31160),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(5760), AOM_ICDF(8292), AOM_ICDF(13837), AOM_ICDF(16201),
+            AOM_ICDF(17303), AOM_ICDF(18422), AOM_ICDF(20215), AOM_ICDF(23059),
+            AOM_ICDF(23628), AOM_ICDF(25449), AOM_ICDF(29537), AOM_ICDF(31455),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4224), AOM_ICDF(7235), AOM_ICDF(12521), AOM_ICDF(16798),
+            AOM_ICDF(17964), AOM_ICDF(18136), AOM_ICDF(18936), AOM_ICDF(20233),
+            AOM_ICDF(20821), AOM_ICDF(22501), AOM_ICDF(27955), AOM_ICDF(30493),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(3840), AOM_ICDF(7117), AOM_ICDF(13329), AOM_ICDF(17383),
+            AOM_ICDF(18323), AOM_ICDF(18492), AOM_ICDF(19273), AOM_ICDF(20538),
+            AOM_ICDF(21064), AOM_ICDF(22481), AOM_ICDF(27785), AOM_ICDF(30938),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(4736), AOM_ICDF(7474), AOM_ICDF(12414), AOM_ICDF(17230),
+            AOM_ICDF(18246), AOM_ICDF(18457), AOM_ICDF(19128), AOM_ICDF(20087),
+            AOM_ICDF(20830), AOM_ICDF(22602), AOM_ICDF(27923), AOM_ICDF(29929),
+            AOM_ICDF(32768), 0 },
+          { AOM_ICDF(3584), AOM_ICDF(9626), AOM_ICDF(15412), AOM_ICDF(20788),
+            AOM_ICDF(21676), AOM_ICDF(22192), AOM_ICDF(23266), AOM_ICDF(24342),
+            AOM_ICDF(24836), AOM_ICDF(26447), AOM_ICDF(29583), AOM_ICDF(31300),
+            AOM_ICDF(32768), 0 },
+      },
+#else
       {
           { AOM_ICDF(15488), AOM_ICDF(17513), AOM_ICDF(20731), AOM_ICDF(24586),
             AOM_ICDF(25921), AOM_ICDF(26749), AOM_ICDF(27807), AOM_ICDF(28602),
@@ -2968,7 +4033,8 @@
             AOM_ICDF(22933), AOM_ICDF(23648), AOM_ICDF(25322), AOM_ICDF(26602),
             AOM_ICDF(27806), AOM_ICDF(29841), AOM_ICDF(32768), 0 },
       },
-#else   // !CONFIG_ALT_INTRA
+#endif  // CONFIG_SMOOTH_HV
+#else   // CONFIG_ALT_INTRA
       { { AOM_ICDF(17536), AOM_ICDF(19321), AOM_ICDF(21527), AOM_ICDF(25360),
           AOM_ICDF(27516), AOM_ICDF(28026), AOM_ICDF(29323), AOM_ICDF(30023),
           AOM_ICDF(30999), AOM_ICDF(32768), 0 },
diff --git a/av1/common/enums.h b/av1/common/enums.h
index 1235d91..6285c5f 100644
--- a/av1/common/enums.h
+++ b/av1/common/enums.h
@@ -320,8 +320,12 @@
   D63_PRED,   // Directional 63  deg = round(arctan(2/1) * 180/pi)
 #if CONFIG_ALT_INTRA
   SMOOTH_PRED,  // Combination of horizontal and vertical interpolation
-#endif          // CONFIG_ALT_INTRA
-  TM_PRED,      // True-motion
+#if CONFIG_SMOOTH_HV
+  SMOOTH_V_PRED,  // Vertical interpolation
+  SMOOTH_H_PRED,  // Horizontal interpolation
+#endif            // CONFIG_SMOOTH_HV
+#endif            // CONFIG_ALT_INTRA
+  TM_PRED,        // True-motion
   NEARESTMV,
   NEARMV,
   ZEROMV,
diff --git a/av1/common/reconintra.c b/av1/common/reconintra.c
index 757cf13..9a5bdb1 100644
--- a/av1/common/reconintra.c
+++ b/av1/common/reconintra.c
@@ -47,7 +47,11 @@
   NEED_LEFT | NEED_BOTTOMLEFT,              // D207
   NEED_ABOVE | NEED_ABOVERIGHT,             // D63
 #if CONFIG_ALT_INTRA
-  NEED_LEFT | NEED_ABOVE,                   // SMOOTH
+  NEED_LEFT | NEED_ABOVE,  // SMOOTH
+#if CONFIG_SMOOTH_HV
+  NEED_LEFT | NEED_ABOVE,                   // SMOOTH_V
+  NEED_LEFT | NEED_ABOVE,                   // SMOOTH_H
+#endif                                      // CONFIG_SMOOTH_HV
 #endif                                      // CONFIG_ALT_INTRA
   NEED_LEFT | NEED_ABOVE | NEED_ABOVELEFT,  // TM
 };
@@ -590,6 +594,10 @@
 #if CONFIG_ALT_INTRA
   INIT_ALL_SIZES(pred[TM_PRED], paeth);
   INIT_ALL_SIZES(pred[SMOOTH_PRED], smooth);
+#if CONFIG_SMOOTH_HV
+  INIT_ALL_SIZES(pred[SMOOTH_V_PRED], smooth_v);
+  INIT_ALL_SIZES(pred[SMOOTH_H_PRED], smooth_h);
+#endif  // CONFIG_SMOOTH_HV
 #else
   INIT_ALL_SIZES(pred[TM_PRED], tm);
 #endif  // CONFIG_ALT_INTRA
@@ -612,6 +620,10 @@
 #if CONFIG_ALT_INTRA
   INIT_ALL_SIZES(pred_high[TM_PRED], highbd_paeth);
   INIT_ALL_SIZES(pred_high[SMOOTH_PRED], highbd_smooth);
+#if CONFIG_SMOOTH_HV
+  INIT_ALL_SIZES(pred_high[SMOOTH_V_PRED], highbd_smooth_v);
+  INIT_ALL_SIZES(pred_high[SMOOTH_H_PRED], highbd_smooth_h);
+#endif  // CONFIG_SMOOTH_HV
 #else
   INIT_ALL_SIZES(pred_high[TM_PRED], highbd_tm);
 #endif  // CONFIG_ALT_INTRA
diff --git a/av1/common/reconintra.h b/av1/common/reconintra.h
index e571886..6d4a86a 100644
--- a/av1/common/reconintra.h
+++ b/av1/common/reconintra.h
@@ -63,6 +63,9 @@
   return mode != DC_PRED && mode != TM_PRED &&
 #if CONFIG_ALT_INTRA
          mode != SMOOTH_PRED &&
+#if CONFIG_SMOOTH_HV
+         mode != SMOOTH_V_PRED && mode != SMOOTH_H_PRED &&
+#endif  // CONFIG_SMOOTH_HV
 #endif  // CONFIG_ALT_INTRA
          bsize >= BLOCK_8X8;
 }
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index 641c212..0ccb4b3 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -1243,7 +1243,11 @@
         THR_D63_PRED /*D63_PRED*/,
 #if CONFIG_ALT_INTRA
         THR_SMOOTH, /*SMOOTH_PRED*/
-#endif              // CONFIG_ALT_INTRA
+#if CONFIG_SMOOTH_HV
+        THR_SMOOTH_V, /*SMOOTH_V_PRED*/
+        THR_SMOOTH_H, /*SMOOTH_H_PRED*/
+#endif                // CONFIG_SMOOTH_HV
+#endif                // CONFIG_ALT_INTRA
         THR_TM /*TM_PRED*/,
       };
       ++mode_chosen_counts[kf_mode_index[mbmi->mode]];
diff --git a/av1/encoder/rd.h b/av1/encoder/rd.h
index d4e54ea..d22789f 100644
--- a/av1/encoder/rd.h
+++ b/av1/encoder/rd.h
@@ -130,6 +130,10 @@
 
 #if CONFIG_ALT_INTRA
   THR_SMOOTH,
+#if CONFIG_SMOOTH_HV
+  THR_SMOOTH_V,
+  THR_SMOOTH_H,
+#endif  // CONFIG_SMOOTH_HV
 #endif  // CONFIG_ALT_INTRA
 
 #if CONFIG_EXT_INTER
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 2953a5e..abe1b01 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -217,6 +217,10 @@
 
 #if CONFIG_ALT_INTRA
   { SMOOTH_PRED, { INTRA_FRAME, NONE_FRAME } },
+#if CONFIG_SMOOTH_HV
+  { SMOOTH_V_PRED, { INTRA_FRAME, NONE_FRAME } },
+  { SMOOTH_H_PRED, { INTRA_FRAME, NONE_FRAME } },
+#endif  // CONFIG_SMOOTH_HV
 #endif  // CONFIG_ALT_INTRA
 
 #if CONFIG_EXT_INTER
@@ -9549,12 +9553,10 @@
   const int *const intra_mode_cost = cpi->mbmode_cost[size_group_lookup[bsize]];
   int best_skip2 = 0;
   uint8_t ref_frame_skip_mask[2] = { 0 };
-#if CONFIG_EXT_INTER
   uint32_t mode_skip_mask[TOTAL_REFS_PER_FRAME] = { 0 };
+#if CONFIG_EXT_INTER
   MV_REFERENCE_FRAME best_single_inter_ref = LAST_FRAME;
   int64_t best_single_inter_rd = INT64_MAX;
-#else
-  uint16_t mode_skip_mask[TOTAL_REFS_PER_FRAME] = { 0 };
 #endif  // CONFIG_EXT_INTER
   int mode_skip_start = sf->mode_skip_start + 1;
   const int *const rd_threshes = rd_opt->threshes[segment_id][bsize];
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index cb57c6b..f400dce 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -24,6 +24,9 @@
               (1 << D207_PRED) | (1 << D63_PRED) |
 #if CONFIG_ALT_INTRA
               (1 << SMOOTH_PRED) |
+#if CONFIG_SMOOTH_HV
+              (1 << SMOOTH_V_PRED) | (1 << SMOOTH_H_PRED) |
+#endif  // CONFIG_SMOOTH_HV
 #endif  // CONFIG_ALT_INTRA
               (1 << TM_PRED),
   INTRA_DC = (1 << DC_PRED),
diff --git a/configure b/configure
index 2619808..ac6b1ad 100755
--- a/configure
+++ b/configure
@@ -321,6 +321,7 @@
     compound_singleref
     aom_qm
     lowdelay_compound
+    smooth_hv
 "
 CONFIG_LIST="
     dependency_tracking
@@ -517,6 +518,8 @@
     enabled ext_delta_q && soft_enable delta_q
     enabled txk_sel && soft_enable lv_map
     enabled compound_round && soft_enable convolve_round
+    enabled smooth_hv && soft_enable alt_intra
+
     if ! enabled delta_q && enabled ext_delta_q; then
       log_echo "ext_delta_q requires delta_q, so disabling ext_delta_q"
       disable_feature ext_delta_q
diff --git a/test/test_intra_pred_speed.cc b/test/test_intra_pred_speed.cc
index c425362..70d8248 100644
--- a/test/test_intra_pred_speed.cc
+++ b/test/test_intra_pred_speed.cc
@@ -31,17 +31,16 @@
 typedef void (*AvxPredFunc)(uint8_t *dst, ptrdiff_t y_stride,
                             const uint8_t *above, const uint8_t *left);
 
-#if CONFIG_ALT_INTRA
-const int kNumAv1IntraFuncs = 14;
-#else
-const int kNumAv1IntraFuncs = 13;
-#endif  // CONFIG_ALT_INTRA
+const int kNumAv1IntraFuncs = INTRA_MODES + 3;  // 4 DC predictor variants.
 const char *kAv1IntraPredNames[kNumAv1IntraFuncs] = {
-  "DC_PRED",    "DC_LEFT_PRED", "DC_TOP_PRED", "DC_128_PRED", "V_PRED",
-  "H_PRED",     "D45_PRED",     "D135_PRED",   "D117_PRED",   "D153_PRED",
-  "D207_PRED",  "D63_PRED",     "TM_PRED",
+  "DC_PRED",       "DC_LEFT_PRED",  "DC_TOP_PRED", "DC_128_PRED", "V_PRED",
+  "H_PRED",        "D45_PRED",      "D135_PRED",   "D117_PRED",   "D153_PRED",
+  "D207_PRED",     "D63_PRED",      "TM_PRED",
 #if CONFIG_ALT_INTRA
-  "SMOOTH_PRED"
+  "SMOOTH_PRED",
+#if CONFIG_SMOOTH_HV
+  "SMOOTH_V_PRED", "SMOOTH_H_PRED",
+#endif  // CONFIG_SMOOTH_HV
 #endif  // CONFIG_ALT_INTRA
 };
 
@@ -104,7 +103,11 @@
     "b852f42e6c4991d415400332d567872f",
 #if CONFIG_ALT_INTRA
     "828c49a4248993cce4876fa26eab697f",
-    "718c8cee9011f92ef31f77a9a7560010"
+    "718c8cee9011f92ef31f77a9a7560010",
+#if CONFIG_SMOOTH_HV
+    "b37eeadbbd9e3bdff023a5097b59213a",
+    "d6fb9c659d82c78f0d0c891da6cba87f",
+#endif  // CONFIG_SMOOTH_HV
 #else
     "309a618577b27c648f9c5ee45252bc8f",
 #endif  // CONFIG_ALT_INTRA
@@ -129,7 +132,11 @@
     "7a09adb0fa6c2bf889a99dd816622feb",
 #if CONFIG_ALT_INTRA
     "f6ade499c626d38eb70661184b79bc57",
-    "1ad5b106c79b792e514ba25e87139b5e"
+    "1ad5b106c79b792e514ba25e87139b5e",
+#if CONFIG_SMOOTH_HV
+    "fe0d359b91a1d8141483d2e032f1b75f",
+    "0cfd7603ced02829d1ce18b6795d73d0",
+#endif  // CONFIG_SMOOTH_HV
 #else
     "815b75c8e0d91cc1ae766dc5d3e445a3",
 #endif  // CONFIG_ALT_INTRA
@@ -154,7 +161,11 @@
     "f7063ccbc29f87303d5c3d0555b08944",
 #if CONFIG_ALT_INTRA
     "7adcaaa3554eb71a81fc48cb9043984b",
-    "c0acea4397c1b4d54a21bbcec5731dff"
+    "c0acea4397c1b4d54a21bbcec5731dff",
+#if CONFIG_SMOOTH_HV
+    "f15b8712f0f064e98a7d804d3074afa7",
+    "01a09cdb8edd06d840c84643032fc02f",
+#endif  // CONFIG_SMOOTH_HV
 #else
     "b8a41aa968ec108af447af4217cba91b",
 #endif  // CONFIG_ALT_INTRA
@@ -179,7 +190,11 @@
     "d520125ebd512c63c301bf67fea8e059",
 #if CONFIG_ALT_INTRA
     "297e8fbb5d33c29b12b228fa9d7c40a4",
-    "31b9296d70dd82238c87173e6d5e65fd"
+    "31b9296d70dd82238c87173e6d5e65fd",
+#if CONFIG_SMOOTH_HV
+    "f1041f77a34e86aaf30ea779ba84a2e8",
+    "83e2b744a6a3d82321744442b1db945c",
+#endif  // CONFIG_SMOOTH_HV
 #else
     "9e1370c6d42e08d357d9612c93a71cfc",
 #endif  // CONFIG_ALT_INTRA
@@ -193,11 +208,12 @@
 // Defines a test case for |arch| (e.g., C, SSE2, ...) passing the predictors
 // to |test_func|. The test name is 'arch.test_func', e.g., C.TestIntraPred4.
 #define INTRA_PRED_TEST(arch, test_func, dc, dc_left, dc_top, dc_128, v, h, \
-                        d45e, d135, d117, d153, d207e, d63e, tm, smooth)    \
+                        d45e, d135, d117, d153, d207e, d63e, tm, smooth,    \
+                        smooth_v, smooth_h)                                 \
   TEST(arch, test_func) {                                                   \
     static const AvxPredFunc aom_intra_pred[] = {                           \
-      dc,   dc_left, dc_top, dc_128, v,    h,  d45e,                        \
-      d135, d117,    d153,   d207e,  d63e, tm, smooth                       \
+      dc,   dc_left, dc_top, dc_128, v,  h,      d45e,     d135,            \
+      d117, d153,    d207e,  d63e,   tm, smooth, smooth_v, smooth_h         \
     };                                                                      \
     test_func(aom_intra_pred);                                              \
   }
@@ -208,9 +224,18 @@
 #if CONFIG_ALT_INTRA
 #define tm_pred_func aom_paeth_predictor_4x4_c
 #define smooth_pred_func aom_smooth_predictor_4x4_c
+#if CONFIG_SMOOTH_HV
+#define smooth_v_pred_func aom_smooth_v_predictor_4x4_c
+#define smooth_h_pred_func aom_smooth_h_predictor_4x4_c
+#else
+#define smooth_v_pred_func NULL
+#define smooth_h_pred_func NULL
+#endif  // CONFIG_SMOOTH_HV
 #else
 #define tm_pred_func aom_tm_predictor_4x4_c
 #define smooth_pred_func NULL
+#define smooth_v_pred_func NULL
+#define smooth_h_pred_func NULL
 #endif  // CONFIG_ALT_INTRA
 
 INTRA_PRED_TEST(C, TestIntraPred4, aom_dc_predictor_4x4_c,
@@ -219,10 +244,13 @@
                 aom_h_predictor_4x4_c, aom_d45e_predictor_4x4_c,
                 aom_d135_predictor_4x4_c, aom_d117_predictor_4x4_c,
                 aom_d153_predictor_4x4_c, aom_d207e_predictor_4x4_c,
-                aom_d63e_predictor_4x4_c, tm_pred_func, smooth_pred_func)
+                aom_d63e_predictor_4x4_c, tm_pred_func, smooth_pred_func,
+                smooth_v_pred_func, smooth_h_pred_func)
 
 #undef tm_pred_func
 #undef smooth_pred_func
+#undef smooth_v_pred_func
+#undef smooth_h_pred_func
 
 #if HAVE_SSE2
 #if CONFIG_ALT_INTRA
@@ -235,7 +263,7 @@
                 aom_dc_left_predictor_4x4_sse2, aom_dc_top_predictor_4x4_sse2,
                 aom_dc_128_predictor_4x4_sse2, aom_v_predictor_4x4_sse2,
                 aom_h_predictor_4x4_sse2, NULL, NULL, NULL, NULL, NULL, NULL,
-                tm_pred_func, NULL)
+                tm_pred_func, NULL, NULL, NULL)
 
 #undef tm_pred_func
 #endif  // HAVE_SSE2
@@ -243,7 +271,7 @@
 #if HAVE_SSSE3
 INTRA_PRED_TEST(SSSE3, TestIntraPred4, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
                 NULL, NULL, aom_d153_predictor_4x4_ssse3, NULL,
-                aom_d63e_predictor_4x4_ssse3, NULL, NULL)
+                aom_d63e_predictor_4x4_ssse3, NULL, NULL, NULL, NULL)
 #endif  // HAVE_SSSE3
 
 #if HAVE_DSPR2
@@ -254,7 +282,7 @@
 #endif  // CONFIG_ALT_INTRA
 INTRA_PRED_TEST(DSPR2, TestIntraPred4, aom_dc_predictor_4x4_dspr2, NULL, NULL,
                 NULL, NULL, aom_h_predictor_4x4_dspr2, NULL, NULL, NULL, NULL,
-                NULL, NULL, tm_pred_func, NULL)
+                NULL, NULL, tm_pred_func, NULL, NULL, NULL)
 #undef tm_pred_func
 #endif  // HAVE_DSPR2
 
@@ -268,7 +296,7 @@
                 aom_dc_left_predictor_4x4_neon, aom_dc_top_predictor_4x4_neon,
                 aom_dc_128_predictor_4x4_neon, aom_v_predictor_4x4_neon,
                 aom_h_predictor_4x4_neon, NULL, aom_d135_predictor_4x4_neon,
-                NULL, NULL, NULL, NULL, tm_pred_func, NULL)
+                NULL, NULL, NULL, NULL, tm_pred_func, NULL, NULL, NULL)
 #undef tm_pred_func
 #endif  // HAVE_NEON
 
@@ -282,7 +310,7 @@
                 aom_dc_left_predictor_4x4_msa, aom_dc_top_predictor_4x4_msa,
                 aom_dc_128_predictor_4x4_msa, aom_v_predictor_4x4_msa,
                 aom_h_predictor_4x4_msa, NULL, NULL, NULL, NULL, NULL, NULL,
-                tm_pred_func, NULL)
+                tm_pred_func, NULL, NULL, NULL)
 #undef tm_pred_func
 #endif  // HAVE_MSA
 
@@ -292,9 +320,18 @@
 #if CONFIG_ALT_INTRA
 #define tm_pred_func aom_paeth_predictor_8x8_c
 #define smooth_pred_func aom_smooth_predictor_8x8_c
+#if CONFIG_SMOOTH_HV
+#define smooth_v_pred_func aom_smooth_v_predictor_8x8_c
+#define smooth_h_pred_func aom_smooth_h_predictor_8x8_c
+#else
+#define smooth_v_pred_func NULL
+#define smooth_h_pred_func NULL
+#endif  // CONFIG_SMOOTH_HV
 #else
 #define tm_pred_func aom_tm_predictor_8x8_c
 #define smooth_pred_func NULL
+#define smooth_v_pred_func NULL
+#define smooth_h_pred_func NULL
 #endif  // CONFIG_ALT_INTRA
 INTRA_PRED_TEST(C, TestIntraPred8, aom_dc_predictor_8x8_c,
                 aom_dc_left_predictor_8x8_c, aom_dc_top_predictor_8x8_c,
@@ -302,9 +339,12 @@
                 aom_h_predictor_8x8_c, aom_d45e_predictor_8x8_c,
                 aom_d135_predictor_8x8_c, aom_d117_predictor_8x8_c,
                 aom_d153_predictor_8x8_c, aom_d207e_predictor_8x8_c,
-                aom_d63e_predictor_8x8_c, tm_pred_func, smooth_pred_func)
+                aom_d63e_predictor_8x8_c, tm_pred_func, smooth_pred_func,
+                smooth_v_pred_func, smooth_h_pred_func)
 #undef tm_pred_func
 #undef smooth_pred_func
+#undef smooth_v_pred_func
+#undef smooth_h_pred_func
 
 #if HAVE_SSE2
 #if CONFIG_ALT_INTRA
@@ -316,14 +356,14 @@
                 aom_dc_left_predictor_8x8_sse2, aom_dc_top_predictor_8x8_sse2,
                 aom_dc_128_predictor_8x8_sse2, aom_v_predictor_8x8_sse2,
                 aom_h_predictor_8x8_sse2, NULL, NULL, NULL, NULL, NULL, NULL,
-                tm_pred_func, NULL)
+                tm_pred_func, NULL, NULL, NULL)
 #undef tm_pred_func
 #endif  // HAVE_SSE2
 
 #if HAVE_SSSE3
 INTRA_PRED_TEST(SSSE3, TestIntraPred8, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
                 NULL, NULL, aom_d153_predictor_8x8_ssse3, NULL, NULL, NULL,
-                NULL)
+                NULL, NULL, NULL)
 #endif  // HAVE_SSSE3
 
 #if HAVE_DSPR2
@@ -334,7 +374,7 @@
 #endif  // CONFIG_ALT_INTRA
 INTRA_PRED_TEST(DSPR2, TestIntraPred8, aom_dc_predictor_8x8_dspr2, NULL, NULL,
                 NULL, NULL, aom_h_predictor_8x8_dspr2, NULL, NULL, NULL, NULL,
-                NULL, NULL, tm_pred_func, NULL)
+                NULL, NULL, tm_pred_func, NULL, NULL, NULL)
 #undef tm_pred_func
 #endif  // HAVE_DSPR2
 
@@ -348,7 +388,7 @@
                 aom_dc_left_predictor_8x8_neon, aom_dc_top_predictor_8x8_neon,
                 aom_dc_128_predictor_8x8_neon, aom_v_predictor_8x8_neon,
                 aom_h_predictor_8x8_neon, NULL, NULL, NULL, NULL, NULL, NULL,
-                tm_pred_func, NULL)
+                tm_pred_func, NULL, NULL, NULL)
 #undef tm_pred_func
 #endif  // HAVE_NEON
 
@@ -362,7 +402,7 @@
                 aom_dc_left_predictor_8x8_msa, aom_dc_top_predictor_8x8_msa,
                 aom_dc_128_predictor_8x8_msa, aom_v_predictor_8x8_msa,
                 aom_h_predictor_8x8_msa, NULL, NULL, NULL, NULL, NULL, NULL,
-                tm_pred_func, NULL)
+                tm_pred_func, NULL, NULL, NULL)
 #undef tm_pred_func
 #endif  // HAVE_MSA
 
@@ -372,9 +412,18 @@
 #if CONFIG_ALT_INTRA
 #define tm_pred_func aom_paeth_predictor_16x16_c
 #define smooth_pred_func aom_smooth_predictor_16x16_c
+#if CONFIG_SMOOTH_HV
+#define smooth_v_pred_func aom_smooth_v_predictor_16x16_c
+#define smooth_h_pred_func aom_smooth_h_predictor_16x16_c
+#else
+#define smooth_v_pred_func NULL
+#define smooth_h_pred_func NULL
+#endif  // CONFIG_SMOOTH_HV
 #else
 #define tm_pred_func aom_tm_predictor_16x16_c
 #define smooth_pred_func NULL
+#define smooth_v_pred_func NULL
+#define smooth_h_pred_func NULL
 #endif  // CONFIG_ALT_INTRA
 INTRA_PRED_TEST(C, TestIntraPred16, aom_dc_predictor_16x16_c,
                 aom_dc_left_predictor_16x16_c, aom_dc_top_predictor_16x16_c,
@@ -382,9 +431,12 @@
                 aom_h_predictor_16x16_c, aom_d45e_predictor_16x16_c,
                 aom_d135_predictor_16x16_c, aom_d117_predictor_16x16_c,
                 aom_d153_predictor_16x16_c, aom_d207e_predictor_16x16_c,
-                aom_d63e_predictor_16x16_c, tm_pred_func, smooth_pred_func)
+                aom_d63e_predictor_16x16_c, tm_pred_func, smooth_pred_func,
+                smooth_v_pred_func, smooth_h_pred_func)
 #undef tm_pred_func
 #undef smooth_pred_func
+#undef smooth_v_pred_func
+#undef smooth_h_pred_func
 
 #if HAVE_SSE2
 #if CONFIG_ALT_INTRA
@@ -397,20 +449,20 @@
                 aom_dc_top_predictor_16x16_sse2,
                 aom_dc_128_predictor_16x16_sse2, aom_v_predictor_16x16_sse2,
                 aom_h_predictor_16x16_sse2, NULL, NULL, NULL, NULL, NULL, NULL,
-                tm_pred_func, NULL)
+                tm_pred_func, NULL, NULL, NULL)
 #undef tm_pred_func
 #endif  // HAVE_SSE2
 
 #if HAVE_SSSE3
 INTRA_PRED_TEST(SSSE3, TestIntraPred16, NULL, NULL, NULL, NULL, NULL, NULL,
                 NULL, NULL, NULL, aom_d153_predictor_16x16_ssse3, NULL, NULL,
-                NULL, NULL)
+                NULL, NULL, NULL, NULL)
 #endif  // HAVE_SSSE3
 
 #if HAVE_DSPR2
 INTRA_PRED_TEST(DSPR2, TestIntraPred16, aom_dc_predictor_16x16_dspr2, NULL,
                 NULL, NULL, NULL, aom_h_predictor_16x16_dspr2, NULL, NULL, NULL,
-                NULL, NULL, NULL, NULL, NULL)
+                NULL, NULL, NULL, NULL, NULL, NULL, NULL)
 #endif  // HAVE_DSPR2
 
 #if HAVE_NEON
@@ -424,7 +476,7 @@
                 aom_dc_top_predictor_16x16_neon,
                 aom_dc_128_predictor_16x16_neon, aom_v_predictor_16x16_neon,
                 aom_h_predictor_16x16_neon, NULL, NULL, NULL, NULL, NULL, NULL,
-                tm_pred_func, NULL)
+                tm_pred_func, NULL, NULL, NULL)
 #undef tm_pred_func
 #endif  // HAVE_NEON
 
@@ -438,7 +490,7 @@
                 aom_dc_left_predictor_16x16_msa, aom_dc_top_predictor_16x16_msa,
                 aom_dc_128_predictor_16x16_msa, aom_v_predictor_16x16_msa,
                 aom_h_predictor_16x16_msa, NULL, NULL, NULL, NULL, NULL, NULL,
-                tm_pred_func, NULL)
+                tm_pred_func, NULL, NULL, NULL)
 #undef tm_pred_func
 #endif  // HAVE_MSA
 
@@ -448,9 +500,18 @@
 #if CONFIG_ALT_INTRA
 #define tm_pred_func aom_paeth_predictor_32x32_c
 #define smooth_pred_func aom_smooth_predictor_32x32_c
+#if CONFIG_SMOOTH_HV
+#define smooth_v_pred_func aom_smooth_v_predictor_32x32_c
+#define smooth_h_pred_func aom_smooth_h_predictor_32x32_c
+#else
+#define smooth_v_pred_func NULL
+#define smooth_h_pred_func NULL
+#endif  // CONFIG_SMOOTH_HV
 #else
 #define tm_pred_func aom_tm_predictor_32x32_c
 #define smooth_pred_func NULL
+#define smooth_v_pred_func NULL
+#define smooth_h_pred_func NULL
 #endif  // CONFIG_ALT_INTRA
 INTRA_PRED_TEST(C, TestIntraPred32, aom_dc_predictor_32x32_c,
                 aom_dc_left_predictor_32x32_c, aom_dc_top_predictor_32x32_c,
@@ -458,9 +519,12 @@
                 aom_h_predictor_32x32_c, aom_d45e_predictor_32x32_c,
                 aom_d135_predictor_32x32_c, aom_d117_predictor_32x32_c,
                 aom_d153_predictor_32x32_c, aom_d207e_predictor_32x32_c,
-                aom_d63e_predictor_32x32_c, tm_pred_func, smooth_pred_func)
+                aom_d63e_predictor_32x32_c, tm_pred_func, smooth_pred_func,
+                smooth_v_pred_func, smooth_h_pred_func)
 #undef tm_pred_func
 #undef smooth_pred_func
+#undef smooth_v_pred_func
+#undef smooth_h_pred_func
 
 #if HAVE_SSE2
 #if CONFIG_ALT_INTRA
@@ -473,14 +537,14 @@
                 aom_dc_top_predictor_32x32_sse2,
                 aom_dc_128_predictor_32x32_sse2, aom_v_predictor_32x32_sse2,
                 aom_h_predictor_32x32_sse2, NULL, NULL, NULL, NULL, NULL, NULL,
-                tm_pred_func, NULL)
+                tm_pred_func, NULL, NULL, NULL)
 #undef tm_pred_func
 #endif  // HAVE_SSE2
 
 #if HAVE_SSSE3
 INTRA_PRED_TEST(SSSE3, TestIntraPred32, NULL, NULL, NULL, NULL, NULL, NULL,
                 NULL, NULL, NULL, aom_d153_predictor_32x32_ssse3, NULL, NULL,
-                NULL, NULL)
+                NULL, NULL, NULL, NULL)
 #endif  // HAVE_SSSE3
 
 #if HAVE_NEON
@@ -494,7 +558,7 @@
                 aom_dc_top_predictor_32x32_neon,
                 aom_dc_128_predictor_32x32_neon, aom_v_predictor_32x32_neon,
                 aom_h_predictor_32x32_neon, NULL, NULL, NULL, NULL, NULL, NULL,
-                tm_pred_func, NULL)
+                tm_pred_func, NULL, NULL, NULL)
 #undef tm_pred_func
 #endif  // HAVE_NEON
 
@@ -508,7 +572,7 @@
                 aom_dc_left_predictor_32x32_msa, aom_dc_top_predictor_32x32_msa,
                 aom_dc_128_predictor_32x32_msa, aom_v_predictor_32x32_msa,
                 aom_h_predictor_32x32_msa, NULL, NULL, NULL, NULL, NULL, NULL,
-                tm_pred_func, NULL)
+                tm_pred_func, NULL, NULL, NULL)
 #undef tm_pred_func
 #endif  // HAVE_MSA