Ext-intra modification/tuning

For ext-intra direcation intra modes:

1. Use neighbor block modes to modify edge filtering strength
   Coding gain (lowres/midres/hdres):
     (8 keyframes)
     PSNR: -0.19 -0.22 -0.10
     SSIM: -0.29 -0.27 -0.13

2. Use context-based cdf to code angle_delta syntax
     (8 keyframes)
     PSNR: -0.20 -0.24 -0.27
     SSIM: -0.29 -0.33 -0.37

3. Filter corner sample:
     (8 keyframes)
     PSNR: -0.01 -0.02 -0.05
     SSIM: -0.03 -0.04 -0.05

Combined Bd-rate improvement for 8 keyframes
     PSNR: -0.40 -0.47 -0.40
     SSIM: -0.57 -0.60 -0.51

Change-Id: Id47ac17b6bf91cd810b70cacfc5b457341f417f3
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c
index 6f127e6..ae4529f 100644
--- a/av1/decoder/decodemv.c
+++ b/av1/decoder/decodemv.c
@@ -883,21 +883,42 @@
 #endif  // CONFIG_FILTER_INTRA
 
 #if CONFIG_EXT_INTRA
+#if CONFIG_EXT_INTRA_MOD
+static int read_angle_delta(aom_reader *r, aom_cdf_prob *cdf) {
+  const int sym = aom_read_symbol(r, cdf, 2 * MAX_ANGLE_DELTA + 1, ACCT_STR);
+  return sym - MAX_ANGLE_DELTA;
+}
+#endif  // CONFIG_EXT_INTRA_MOD
+
 static void read_intra_angle_info(MACROBLOCKD *const xd, aom_reader *r) {
   MB_MODE_INFO *const mbmi = &xd->mi[0]->mbmi;
   const BLOCK_SIZE bsize = mbmi->sb_type;
+#if CONFIG_EXT_INTRA_MOD
+  FRAME_CONTEXT *const ec_ctx = xd->tile_ctx;
+#endif  // CONFIG_EXT_INTRA_MOD
+
   mbmi->angle_delta[0] = 0;
   mbmi->angle_delta[1] = 0;
   if (!av1_use_angle_delta(bsize)) return;
 
   if (av1_is_directional_mode(mbmi->mode, bsize)) {
+#if CONFIG_EXT_INTRA_MOD
+    mbmi->angle_delta[0] =
+        read_angle_delta(r, ec_ctx->angle_delta_cdf[mbmi->mode - V_PRED]);
+#else
     mbmi->angle_delta[0] =
         av1_read_uniform(r, 2 * MAX_ANGLE_DELTA + 1) - MAX_ANGLE_DELTA;
+#endif  // CONFIG_EXT_INTRA_MOD
   }
 
   if (av1_is_directional_mode(get_uv_mode(mbmi->uv_mode), bsize)) {
+#if CONFIG_EXT_INTRA_MOD
+    mbmi->angle_delta[1] =
+        read_angle_delta(r, ec_ctx->angle_delta_cdf[mbmi->uv_mode - V_PRED]);
+#else
     mbmi->angle_delta[1] =
         av1_read_uniform(r, 2 * MAX_ANGLE_DELTA + 1) - MAX_ANGLE_DELTA;
+#endif  // CONFIG_EXT_INTRA_MOD
   }
 }
 #endif  // CONFIG_EXT_INTRA