#if CONFIG_REF_MV
static const vpx_prob default_newmv_prob[NEWMV_MODE_CONTEXTS] = {
- 230, 190, 150, 110, 70, 30,
+ 200, 180, 150, 150, 110, 70, 60,
};
static const vpx_prob default_zeromv_prob[ZEROMV_MODE_CONTEXTS] = {
};
static const vpx_prob default_refmv_prob[REFMV_MODE_CONTEXTS] = {
- 180, 230, 128
+ 220, 220, 200, 200, 180, 128,
};
#endif
int bs = VPXMAX(xd->n8_w, xd->n8_h);
int has_tr = has_top_right(xd, mi_row, mi_col, bs);
-
+ mode_context[ref_frame] = 0;
*refmv_count = 0;
// Scan the first above row mode info.
nearest_refmv_count = *refmv_count;
- mode_context[ref_frame] = 0;
- switch (nearest_refmv_count) {
- case 0:
- mode_context[ref_frame] = 0;
- break;
-
- case 1:
- mode_context[ref_frame] = (newmv_count > 0) ? 1 : 2;
- mode_context[ref_frame] += (1 << REFMV_OFFSET);
- break;
-
- case 2:
- default:
- if (newmv_count >= 2)
- mode_context[ref_frame] = 3;
- else if (newmv_count == 1)
- mode_context[ref_frame] = 4;
- else
- mode_context[ref_frame] = 5;
- mode_context[ref_frame] += (2 << REFMV_OFFSET);
- break;
- }
-
if (prev_frame_mvs_base && cm->show_frame && cm->last_show_frame) {
int ref;
int blk_row, blk_col;
scan_col_mbmi(cm, xd, mi_row, mi_col, block, ref_frame,
-4, ref_mv_stack, refmv_count);
+ switch (nearest_refmv_count) {
+ case 0:
+ mode_context[ref_frame] |= 0;
+ if (*refmv_count >= 1)
+ mode_context[ref_frame] |= 1;
+
+ if (*refmv_count == 1)
+ mode_context[ref_frame] |= (1 << REFMV_OFFSET);
+ else if (*refmv_count >= 2)
+ mode_context[ref_frame] |= (2 << REFMV_OFFSET);
+ break;
+ case 1:
+ mode_context[ref_frame] |= (newmv_count > 0) ? 2 : 3;
+
+ if (*refmv_count == 1)
+ mode_context[ref_frame] |= (3 << REFMV_OFFSET);
+ else if (*refmv_count >= 2)
+ mode_context[ref_frame] |= (4 << REFMV_OFFSET);
+ break;
+
+ case 2:
+ default:
+ if (newmv_count >= 2)
+ mode_context[ref_frame] |= 4;
+ else if (newmv_count == 1)
+ mode_context[ref_frame] |= 5;
+ else
+ mode_context[ref_frame] |= 6;
+
+ mode_context[ref_frame] |= (5 << REFMV_OFFSET);
+ break;
+ }
+
// Rank the likelihood and assign nearest and near mvs.
len = nearest_refmv_count;
while (len > 0) {