From bbc926dca2479ae41882cdfb6079f5596bfac2bc Mon Sep 17 00:00:00 2001 From: Adrian Grange Date: Mon, 25 Jun 2012 16:23:58 -0700 Subject: 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 --- vp8/decoder/decodemv.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'vp8/decoder') 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 ))) ) -- cgit v1.2.3