Moved the prob_dualpred[] sturcture to common.
Created common prediction entry for Dual flag.
Change-Id: I9ac3d128bae6114f09e5c18216d4b95cf36453d5
vp8_prob mod_refprobs[MAX_REF_FRAMES][PREDICTION_PROBS];
#endif
+#if CONFIG_DUALPRED
+ vp8_prob prob_dualpred[3];
+#endif /* CONFIG_DUALPRED */
+
FRAME_CONTEXT lfc_a; /* last alt ref entropy */
FRAME_CONTEXT lfc; /* last frame entropy */
FRAME_CONTEXT fc; /* this frame entropy */
PRED_SEG_ID = 0, // Segment identifier
#if CONFIG_COMPRED
- PRED_REF = 1
+ PRED_REF = 1,
+ PRED_DUAL = 2
#endif
} PRED_ID;
cm->dual_pred_mode += vp8_read(bc, 128);
if (cm->dual_pred_mode == HYBRID_PREDICTION)
{
- pbi->prob_dualpred[0] = (vp8_prob)vp8_read_literal(bc, 8);
- pbi->prob_dualpred[1] = (vp8_prob)vp8_read_literal(bc, 8);
- pbi->prob_dualpred[2] = (vp8_prob)vp8_read_literal(bc, 8);
+ cm->prob_dualpred[0] = (vp8_prob)vp8_read_literal(bc, 8);
+ cm->prob_dualpred[1] = (vp8_prob)vp8_read_literal(bc, 8);
+ cm->prob_dualpred[2] = (vp8_prob)vp8_read_literal(bc, 8);
}
#endif /* CONFIG_DUALPRED */
#if CONFIG_DUALPRED
if (pbi->common.dual_pred_mode == DUAL_PREDICTION_ONLY ||
(pbi->common.dual_pred_mode == HYBRID_PREDICTION &&
- vp8_read(bc, pbi->prob_dualpred[(mi[-1].mbmi.second_ref_frame != INTRA_FRAME) +
- (mi[-mis].mbmi.second_ref_frame != INTRA_FRAME)])))
+ vp8_read(bc, cm->prob_dualpred[(mi[-1].mbmi.second_ref_frame != INTRA_FRAME) +
+ (mi[-mis].mbmi.second_ref_frame != INTRA_FRAME)])))
{
mbmi->second_ref_frame = mbmi->ref_frame + 1;
if (mbmi->second_ref_frame == 4)
#endif
vp8_prob prob_skip_false;
-#if CONFIG_DUALPRED
- vp8_prob prob_dualpred[3];
-#endif /* CONFIG_DUALPRED */
#if CONFIG_ERROR_CONCEALMENT
MB_OVERLAP *overlaps;
#if CONFIG_DUALPRED
if (cpi->common.dual_pred_mode == HYBRID_PREDICTION)
{
- cpi->prob_dualpred[0] = (prob_dual_pred[0] + cpi->prob_dualpred[0] + 1) >> 1;
- cpi->prob_dualpred[1] = (prob_dual_pred[1] + cpi->prob_dualpred[1] + 1) >> 1;
- cpi->prob_dualpred[2] = (prob_dual_pred[2] + cpi->prob_dualpred[2] + 1) >> 1;
+ pc->prob_dualpred[0] = (prob_dual_pred[0] + pc->prob_dualpred[0] + 1) >> 1;
+ pc->prob_dualpred[1] = (prob_dual_pred[1] + pc->prob_dualpred[1] + 1) >> 1;
+ pc->prob_dualpred[2] = (prob_dual_pred[2] + pc->prob_dualpred[2] + 1) >> 1;
}
#endif /* CONFIG_DUALPRED */
}
#if CONFIG_DUALPRED
if (cpi->common.dual_pred_mode == HYBRID_PREDICTION)
{
- cpi->prob_dualpred[0] = (prob_dual_pred[0] + cpi->prob_dualpred[0] + 1) >> 1;
- cpi->prob_dualpred[1] = (prob_dual_pred[1] + cpi->prob_dualpred[1] + 1) >> 1;
- cpi->prob_dualpred[2] = (prob_dual_pred[2] + cpi->prob_dualpred[2] + 1) >> 1;
+ pc->prob_dualpred[0] = (prob_dual_pred[0] + pc->prob_dualpred[0] + 1) >> 1;
+ pc->prob_dualpred[1] = (prob_dual_pred[1] + pc->prob_dualpred[1] + 1) >> 1;
+ pc->prob_dualpred[2] = (prob_dual_pred[2] + pc->prob_dualpred[2] + 1) >> 1;
}
#endif /* CONFIG_DUALPRED */
}
cm->prob_gf_coded = 128;
cm->prob_intra_coded = 63;
#if CONFIG_DUALPRED
- cpi->prob_dualpred[0] = 128;
- cpi->prob_dualpred[1] = 128;
- cpi->prob_dualpred[2] = 128;
+ cm->prob_dualpred[0] = 128;
+ cm->prob_dualpred[1] = 128;
+ cm->prob_dualpred[2] = 128;
#endif /* CONFIG_DUALPRED */
// Prime the recent reference frame useage counters.
int prob_skip_false;
int last_skip_false_probs[3];
int last_skip_probs_q[3];
-#if CONFIG_DUALPRED
- int prob_dualpred[3];
-#endif /* CONFIG_DUALPRED */
int recent_ref_frame_usage[MAX_REF_FRAMES];
int count_mb_ref_frame_usage[MAX_REF_FRAMES];
int *best_single_rd_diff, int *best_dual_rd_diff,
int *best_hybrid_rd_diff)
{
+ VP8_COMMON *cm = &cpi->common;
BLOCK *b = &x->block[0];
BLOCKD *d = &x->e_mbd.block[0];
MACROBLOCKD *xd = &x->e_mbd;
MB_MODE_INFO *t = &x->e_mbd.mode_info_context[-cpi->common.mode_info_stride].mbmi;
MB_MODE_INFO *l = &x->e_mbd.mode_info_context[-1].mbmi;
int cnt = (t->second_ref_frame != INTRA_FRAME) + (l->second_ref_frame != INTRA_FRAME);
- dualmode_cost = vp8_cost_bit(cpi->prob_dualpred[cnt], 0);
+ dualmode_cost = vp8_cost_bit(cm->prob_dualpred[cnt], 0);
}
#endif /* CONFIG_DUALPRED */
MB_MODE_INFO *t = &x->e_mbd.mode_info_context[-cpi->common.mode_info_stride].mbmi;
MB_MODE_INFO *l = &x->e_mbd.mode_info_context[-1].mbmi;
int cnt = (t->second_ref_frame != INTRA_FRAME) + (l->second_ref_frame != INTRA_FRAME);
- dualmode_cost = vp8_cost_bit(cpi->prob_dualpred[cnt], 1);
+ dualmode_cost = vp8_cost_bit(cm->prob_dualpred[cnt], 1);
}
}
#endif /* CONFIG_DUALPRED */