summaryrefslogtreecommitdiff
path: root/vp8/decoder
diff options
context:
space:
mode:
authorAdrian Grange <agrange@google.com>2012-06-25 16:23:58 -0700
committerAdrian Grange <agrange@google.com>2012-06-27 14:51:41 -0700
commitbbc926dca2479ae41882cdfb6079f5596bfac2bc (patch)
tree1ce38aa013ec5eb0f179b2c10eb0a82fb66f6df4 /vp8/decoder
parentf3dff402556cb1b1dd3c7dbc1877104a792f329c (diff)
downloadlibvpx-bbc926dca2479ae41882cdfb6079f5596bfac2bc.tar
libvpx-bbc926dca2479ae41882cdfb6079f5596bfac2bc.tar.gz
libvpx-bbc926dca2479ae41882cdfb6079f5596bfac2bc.tar.bz2
libvpx-bbc926dca2479ae41882cdfb6079f5596bfac2bc.zip
Added Prediction Filter to Mode Selection
Added the ability to optionally filter the prediction data when inter modes are selected (excludes SPLITMV, for now). The mode selection loop considers both the filtered and non-filtered prediction data when choosing mode. The filter can be turned on/off at the frame-level, or signaled for each MB. Change-Id: I1b783c71d95a361ab36c761b07e8a6b06bc36822
Diffstat (limited to 'vp8/decoder')
-rw-r--r--vp8/decoder/decodemv.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/vp8/decoder/decodemv.c b/vp8/decoder/decodemv.c
index b7b5e49b1..1243b359c 100644
--- a/vp8/decoder/decodemv.c
+++ b/vp8/decoder/decodemv.c
@@ -527,8 +527,14 @@ static void mb_mode_mv_init(VP8D_COMP *pbi)
#endif
}
- if(pbi->common.frame_type != KEY_FRAME)
+ if(cm->frame_type != KEY_FRAME)
{
+#if CONFIG_PRED_FILTER
+ cm->pred_filter_mode = (vp8_prob)vp8_read_literal(bc, 2);
+
+ if (cm->pred_filter_mode == 2)
+ cm->prob_pred_filter_off = (vp8_prob)vp8_read_literal(bc, 8);
+#endif
// Decode the baseline probabilities for decoding reference frame
cm->prob_intra_coded = (vp8_prob)vp8_read_literal(bc, 8);
cm->prob_last_coded = (vp8_prob)vp8_read_literal(bc, 8);
@@ -728,6 +734,18 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
vp8_accum_mv_refs(&pbi->common, mbmi->mode, rct);
}
+#if CONFIG_PRED_FILTER
+ if (mbmi->mode >= NEARESTMV && mbmi->mode < SPLITMV)
+ {
+ // Is the prediction filter enabled
+ if (cm->pred_filter_mode == 2)
+ mbmi->pred_filter_enabled =
+ vp8_read(bc, cm->prob_pred_filter_off);
+ else
+ mbmi->pred_filter_enabled = cm->pred_filter_mode;
+ }
+#endif
+
if ( cm->comp_pred_mode == COMP_PREDICTION_ONLY ||
(cm->comp_pred_mode == HYBRID_PREDICTION &&
vp8_read(bc, get_pred_prob( cm, xd, PRED_COMP ))) )