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/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index c8bae01..b866250 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -4265,10 +4265,32 @@
FILTER_INTRA_MODES);
}
#endif // CONFIG_FILTER_INTRA
+#if CONFIG_EXT_INTRA && CONFIG_EXT_INTRA_MOD
+ if (av1_is_directional_mode(mbmi->mode, bsize) &&
+ av1_use_angle_delta(bsize)) {
+#if CONFIG_ENTROPY_STATS
+ ++counts->angle_delta[mbmi->mode - V_PRED]
+ [mbmi->angle_delta[0] + MAX_ANGLE_DELTA];
+#endif
+ update_cdf(fc->angle_delta_cdf[mbmi->mode - V_PRED],
+ mbmi->angle_delta[0] + MAX_ANGLE_DELTA, 2 * MAX_ANGLE_DELTA + 1);
+ }
+#endif // CONFIG_EXT_INTRA && CONFIG_EXT_INTRA_MOD
if (!is_chroma_reference(mi_row, mi_col, bsize, xd->plane[1].subsampling_x,
xd->plane[1].subsampling_y))
return;
+#if CONFIG_EXT_INTRA && CONFIG_EXT_INTRA_MOD
+ if (av1_is_directional_mode(mbmi->uv_mode, bsize) &&
+ av1_use_angle_delta(bsize)) {
+#if CONFIG_ENTROPY_STATS
+ ++counts->angle_delta[mbmi->uv_mode - V_PRED]
+ [mbmi->angle_delta[1] + MAX_ANGLE_DELTA];
+#endif
+ update_cdf(fc->angle_delta_cdf[mbmi->uv_mode - V_PRED],
+ mbmi->angle_delta[1] + MAX_ANGLE_DELTA, 2 * MAX_ANGLE_DELTA + 1);
+ }
+#endif // CONFIG_EXT_INTRA && CONFIG_EXT_INTRA_MOD
#if CONFIG_ENTROPY_STATS
++counts->uv_mode[y_mode][uv_mode];
#endif // CONFIG_ENTROPY_STATS