oci->txfm_mode = ONLY_4X4;
#endif
oci->mb_no_coeff_skip = 1;
- oci->dual_pred_mode = HYBRID_PREDICTION;
+ oci->comp_pred_mode = HYBRID_PREDICTION;
oci->no_lpf = 0;
oci->filter_type = NORMAL_LOOPFILTER;
oci->use_bilinear_mc_filter = 0;
#define NUM_YV12_BUFFERS 4
-#define DUAL_PRED_CONTEXTS 2
+#define COMP_PRED_CONTEXTS 2
typedef struct frame_contexts
{
typedef enum
{
SINGLE_PREDICTION_ONLY = 0,
- DUAL_PREDICTION_ONLY = 1,
+ COMP_PREDICTION_ONLY = 1,
HYBRID_PREDICTION = 2,
NB_PREDICTION_TYPES = 3,
-} DUALPREDMODE_TYPE;
+} COMPPREDMODE_TYPE;
#if CONFIG_T8X8
/* TODO: allows larger transform */
#if CONFIG_T8X8
TXFM_MODE txfm_mode;
#endif
- DUALPREDMODE_TYPE dual_pred_mode;
+ COMPPREDMODE_TYPE comp_pred_mode;
int no_lpf;
int use_bilinear_mc_filter;
int full_pixel;
vp8_prob ref_pred_probs[PREDICTION_PROBS];
vp8_prob mod_refprobs[MAX_REF_FRAMES][PREDICTION_PROBS];
- vp8_prob prob_dualpred[DUAL_PRED_CONTEXTS];
+ vp8_prob prob_comppred[COMP_PRED_CONTEXTS];
FRAME_CONTEXT lfc_a; /* last alt ref entropy */
FRAME_CONTEXT lfc; /* last frame entropy */
(m - cm->mode_info_stride)->mbmi.ref_predicted;
break;
- case PRED_DUAL:
- // Context based on use of dual pred flag by neighbours
+ case PRED_COMP:
+ // Context based on use of comp pred flag by neighbours
//pred_context =
// ((m - 1)->mbmi.second_ref_frame != INTRA_FRAME) +
// ((m - cm->mode_info_stride)->mbmi.second_ref_frame != INTRA_FRAME);
pred_probability = cm->ref_pred_probs[pred_context];
break;
- case PRED_DUAL:
+ case PRED_COMP:
// In keeping with convention elsewhre the probability returned is
// the probability of a "0" outcome which in this case means the
- // probability of dual pred off.
- pred_probability = cm->prob_dualpred[pred_context];
+ // probability of comp pred off.
+ pred_probability = cm->prob_comppred[pred_context];
break;
default:
{
PRED_SEG_ID = 0, // Segment identifier
PRED_REF = 1,
- PRED_DUAL = 2
+ PRED_COMP = 2
} PRED_ID;
// frame prediction fails.
compute_mod_refprobs( cm );
- pbi->common.dual_pred_mode = vp8_read(bc, 128);
- if (cm->dual_pred_mode)
- cm->dual_pred_mode += vp8_read(bc, 128);
- if (cm->dual_pred_mode == HYBRID_PREDICTION)
+ pbi->common.comp_pred_mode = vp8_read(bc, 128);
+ if (cm->comp_pred_mode)
+ cm->comp_pred_mode += vp8_read(bc, 128);
+ if (cm->comp_pred_mode == HYBRID_PREDICTION)
{
int i;
- for ( i = 0; i < DUAL_PRED_CONTEXTS; i++ )
- cm->prob_dualpred[i] = (vp8_prob)vp8_read_literal(bc, 8);
+ for ( i = 0; i < COMP_PRED_CONTEXTS; i++ )
+ cm->prob_comppred[i] = (vp8_prob)vp8_read_literal(bc, 8);
}
if (vp8_read_bit(bc))
propagate_mv: /* same MV throughout */
- if ( cm->dual_pred_mode == DUAL_PREDICTION_ONLY ||
- (cm->dual_pred_mode == HYBRID_PREDICTION &&
- vp8_read(bc, get_pred_prob( cm, xd, PRED_DUAL ))) )
+ if ( cm->comp_pred_mode == COMP_PREDICTION_ONLY ||
+ (cm->comp_pred_mode == HYBRID_PREDICTION &&
+ vp8_read(bc, get_pred_prob( cm, xd, PRED_COMP ))) )
{
mbmi->second_ref_frame = mbmi->ref_frame + 1;
if (mbmi->second_ref_frame == 4)
vp8_write_literal(w, pc->prob_last_coded, 8);
vp8_write_literal(w, pc->prob_gf_coded, 8);
- if (cpi->common.dual_pred_mode == HYBRID_PREDICTION)
+ if (cpi->common.comp_pred_mode == HYBRID_PREDICTION)
{
vp8_write(w, 1, 128);
vp8_write(w, 1, 128);
- for (i = 0; i < DUAL_PRED_CONTEXTS; i++)
+ for (i = 0; i < COMP_PRED_CONTEXTS; i++)
{
- if (cpi->single_pred_count[i] + cpi->dual_pred_count[i])
+ if (cpi->single_pred_count[i] + cpi->comp_pred_count[i])
{
- pc->prob_dualpred[i] = cpi->single_pred_count[i] * 255 /
- (cpi->single_pred_count[i] + cpi->dual_pred_count[i]);
- if (pc->prob_dualpred[i] < 1)
- pc->prob_dualpred[i] = 1;
+ pc->prob_comppred[i] = cpi->single_pred_count[i] * 255 /
+ (cpi->single_pred_count[i] + cpi->comp_pred_count[i]);
+ if (pc->prob_comppred[i] < 1)
+ pc->prob_comppred[i] = 1;
}
else
{
- pc->prob_dualpred[i] = 128;
+ pc->prob_comppred[i] = 128;
}
- vp8_write_literal(w, pc->prob_dualpred[i], 8);
+ vp8_write_literal(w, pc->prob_comppred[i], 8);
}
}
- else if (cpi->common.dual_pred_mode == SINGLE_PREDICTION_ONLY)
+ else if (cpi->common.comp_pred_mode == SINGLE_PREDICTION_ONLY)
{
vp8_write(w, 0, 128);
}
- else /* dual prediction only */
+ else /* compound prediction only */
{
vp8_write(w, 1, 128);
vp8_write(w, 0, 128);
#endif
write_mv(w, &mi->mv.as_mv, &best_mv, mvc);
- if (cpi->common.dual_pred_mode == HYBRID_PREDICTION)
+ if (cpi->common.comp_pred_mode == HYBRID_PREDICTION)
{
vp8_write(w,
mi->second_ref_frame != INTRA_FRAME,
- get_pred_prob( pc, xd, PRED_DUAL ) );
+ get_pred_prob( pc, xd, PRED_COMP ) );
}
if (mi->second_ref_frame)
{
}
break;
default:
- if (cpi->common.dual_pred_mode == HYBRID_PREDICTION)
+ if (cpi->common.comp_pred_mode == HYBRID_PREDICTION)
{
vp8_write(w,
mi->second_ref_frame != INTRA_FRAME,
- get_pred_prob( pc, xd, PRED_DUAL ) );
+ get_pred_prob( pc, xd, PRED_COMP ) );
}
break;
}
vp8_write_literal(w, pc->prob_last_coded, 8);
vp8_write_literal(w, pc->prob_gf_coded, 8);
- if (cpi->common.dual_pred_mode == HYBRID_PREDICTION)
+ if (cpi->common.comp_pred_mode == HYBRID_PREDICTION)
{
vp8_write(w, 1, 128);
vp8_write(w, 1, 128);
- for (i = 0; i < DUAL_PRED_CONTEXTS; i++)
+ for (i = 0; i < COMP_PRED_CONTEXTS; i++)
{
- if (cpi->single_pred_count[i] + cpi->dual_pred_count[i])
+ if (cpi->single_pred_count[i] + cpi->comp_pred_count[i])
{
- pc->prob_dualpred[i] = cpi->single_pred_count[i] * 255 /
- (cpi->single_pred_count[i] + cpi->dual_pred_count[i]);
- if (pc->prob_dualpred[i] < 1)
- pc->prob_dualpred[i] = 1;
+ pc->prob_comppred[i] = cpi->single_pred_count[i] * 255 /
+ (cpi->single_pred_count[i] + cpi->comp_pred_count[i]);
+ if (pc->prob_comppred[i] < 1)
+ pc->prob_comppred[i] = 1;
}
else
{
- pc->prob_dualpred[i] = 128;
+ pc->prob_comppred[i] = 128;
}
- vp8_write_literal(w, pc->prob_dualpred[i], 8);
+ vp8_write_literal(w, pc->prob_comppred[i], 8);
}
}
- else if (cpi->common.dual_pred_mode == SINGLE_PREDICTION_ONLY)
+ else if (cpi->common.comp_pred_mode == SINGLE_PREDICTION_ONLY)
{
vp8_write(w, 0, 128);
}
- else /* dual prediction only */
+ else /* compound prediction only */
{
vp8_write(w, 1, 128);
vp8_write(w, 0, 128);
#endif
write_mv(w, &mi->mv.as_mv, &best_mv, mvc);
-
- if (cpi->common.dual_pred_mode == HYBRID_PREDICTION)
+ if (cpi->common.comp_pred_mode == HYBRID_PREDICTION)
{
vp8_write(w, mi->second_ref_frame != INTRA_FRAME,
- get_pred_prob( pc, xd, PRED_DUAL ) );
+ get_pred_prob( pc, xd, PRED_COMP ) );
}
if (mi->second_ref_frame)
{
}
break;
default:
- if (cpi->common.dual_pred_mode == HYBRID_PREDICTION)
+ if (cpi->common.comp_pred_mode == HYBRID_PREDICTION)
{
vp8_write(w, mi->second_ref_frame != INTRA_FRAME,
- get_pred_prob( pc, xd, PRED_DUAL ) );
+ get_pred_prob( pc, xd, PRED_COMP ) );
}
break;
}
// re-initencode frame context.
init_encode_frame_mb_context(cpi);
- cpi->rd_single_diff = cpi->rd_dual_diff = cpi->rd_hybrid_diff = 0;
+ cpi->rd_single_diff = cpi->rd_comp_diff = cpi->rd_hybrid_diff = 0;
vpx_memset(cpi->single_pred_count, 0, sizeof(cpi->single_pred_count));
- vpx_memset(cpi->dual_pred_count, 0, sizeof(cpi->dual_pred_count));
+ vpx_memset(cpi->comp_pred_count, 0, sizeof(cpi->comp_pred_count));
{
struct vpx_usec_timer emr_timer;
{
int frame_type, pred_type;
int redo = 0;
- int single_diff, dual_diff, hybrid_diff;
+ int single_diff, comp_diff, hybrid_diff;
/*
* This code does a single RD pass over the whole frame assuming
- * either dual, single or hybrid prediction as per whatever has
+ * either compound, single or hybrid prediction as per whatever has
* worked best for that type of frame in the past.
* It also predicts whether another coding mode would have worked
* better that this coding mode. If that is the case, it remembers
cpi->rd_prediction_type_threshes[frame_type][0] &&
cpi->rd_prediction_type_threshes[frame_type][1] >
cpi->rd_prediction_type_threshes[frame_type][2])
- pred_type = DUAL_PREDICTION_ONLY;
+ pred_type = COMP_PREDICTION_ONLY;
else if (cpi->rd_prediction_type_threshes[frame_type][0] >
cpi->rd_prediction_type_threshes[frame_type][1] &&
cpi->rd_prediction_type_threshes[frame_type][0] >
else
pred_type = HYBRID_PREDICTION;
- cpi->common.dual_pred_mode = pred_type;
+ cpi->common.comp_pred_mode = pred_type;
encode_frame_internal(cpi);
single_diff = cpi->rd_single_diff / cpi->common.MBs;
cpi->rd_prediction_type_threshes[frame_type][0] += single_diff;
cpi->rd_prediction_type_threshes[frame_type][0] >>= 1;
- dual_diff = cpi->rd_dual_diff / cpi->common.MBs;
- cpi->rd_prediction_type_threshes[frame_type][1] += dual_diff;
+ comp_diff = cpi->rd_comp_diff / cpi->common.MBs;
+ cpi->rd_prediction_type_threshes[frame_type][1] += comp_diff;
cpi->rd_prediction_type_threshes[frame_type][1] >>= 1;
hybrid_diff = cpi->rd_hybrid_diff / cpi->common.MBs;
cpi->rd_prediction_type_threshes[frame_type][2] += hybrid_diff;
cpi->rd_prediction_type_threshes[frame_type][2] >>= 1;
- if (cpi->common.dual_pred_mode == HYBRID_PREDICTION)
+ if (cpi->common.comp_pred_mode == HYBRID_PREDICTION)
{
int single_count_zero = 0;
- int dual_count_zero = 0;
+ int comp_count_zero = 0;
int i;
- for ( i = 0; i < DUAL_PRED_CONTEXTS; i++ )
+ for ( i = 0; i < COMP_PRED_CONTEXTS; i++ )
{
single_count_zero += cpi->single_pred_count[i];
- dual_count_zero += cpi->dual_pred_count[i];
+ comp_count_zero += cpi->comp_pred_count[i];
}
- if (dual_count_zero == 0)
+ if (comp_count_zero == 0)
{
- cpi->common.dual_pred_mode = SINGLE_PREDICTION_ONLY;
+ cpi->common.comp_pred_mode = SINGLE_PREDICTION_ONLY;
}
else if (single_count_zero == 0)
{
- cpi->common.dual_pred_mode = DUAL_PREDICTION_ONLY;
+ cpi->common.comp_pred_mode = COMP_PREDICTION_ONLY;
}
}
}
// For now this codebase is limited to a single rd encode path
{
int zbin_mode_boost_enabled = cpi->zbin_mode_boost_enabled;
- int single, dual, hybrid;
+ int single, compound, hybrid;
/* Are we using the fast quantizer for the mode selection? */
if(cpi->sf.use_fastquant_for_pick)
cpi->zbin_mode_boost_enabled = 0;
}
vp8_rd_pick_inter_mode(cpi, x, recon_yoffset, recon_uvoffset, &rate,
- &distortion, &intra_error, &single, &dual, &hybrid);
+ &distortion, &intra_error, &single, &compound, &hybrid);
cpi->rd_single_diff += single;
- cpi->rd_dual_diff += dual;
+ cpi->rd_comp_diff += compound;
cpi->rd_hybrid_diff += hybrid;
if (x->e_mbd.mode_info_context->mbmi.ref_frame &&
x->e_mbd.mode_info_context->mbmi.mode != SPLITMV)
{
unsigned char pred_context;
- pred_context = get_pred_context( cm, xd, PRED_DUAL );
+ pred_context = get_pred_context( cm, xd, PRED_COMP );
if (xd->mode_info_context->mbmi.second_ref_frame == INTRA_FRAME)
cpi->single_pred_count[pred_context]++;
else
- cpi->dual_pred_count[pred_context]++;
+ cpi->comp_pred_count[pred_context]++;
}
#if CONFIG_T8X8
sf->thresh_mult[THR_SPLITG ] = 5000;
sf->thresh_mult[THR_SPLITA ] = 5000;
- sf->thresh_mult[THR_DUAL_ZEROLG ] = 0;
- sf->thresh_mult[THR_DUAL_NEARESTLG] = 0;
- sf->thresh_mult[THR_DUAL_NEARLG ] = 0;
- sf->thresh_mult[THR_DUAL_ZEROLA ] = 0;
- sf->thresh_mult[THR_DUAL_NEARESTLA] = 0;
- sf->thresh_mult[THR_DUAL_NEARLA ] = 0;
- sf->thresh_mult[THR_DUAL_ZEROGA ] = 0;
- sf->thresh_mult[THR_DUAL_NEARESTGA] = 0;
- sf->thresh_mult[THR_DUAL_NEARGA ] = 0;
-
- sf->thresh_mult[THR_DUAL_NEWLG ] = 1000;
- sf->thresh_mult[THR_DUAL_NEWLA ] = 1000;
- sf->thresh_mult[THR_DUAL_NEWGA ] = 1000;
+ sf->thresh_mult[THR_COMP_ZEROLG ] = 0;
+ sf->thresh_mult[THR_COMP_NEARESTLG] = 0;
+ sf->thresh_mult[THR_COMP_NEARLG ] = 0;
+ sf->thresh_mult[THR_COMP_ZEROLA ] = 0;
+ sf->thresh_mult[THR_COMP_NEARESTLA] = 0;
+ sf->thresh_mult[THR_COMP_NEARLA ] = 0;
+ sf->thresh_mult[THR_COMP_ZEROGA ] = 0;
+ sf->thresh_mult[THR_COMP_NEARESTGA] = 0;
+ sf->thresh_mult[THR_COMP_NEARGA ] = 0;
+
+ sf->thresh_mult[THR_COMP_NEWLG ] = 1000;
+ sf->thresh_mult[THR_COMP_NEWLA ] = 1000;
+ sf->thresh_mult[THR_COMP_NEWGA ] = 1000;
sf->first_step = 0;
sf->max_step_search_steps = MAX_MVSEARCH_STEPS;
sf->thresh_mult[THR_SPLITG ] = 4500;
sf->thresh_mult[THR_SPLITA ] = 4500;
- sf->thresh_mult[THR_DUAL_ZEROLG ] = 0;
- sf->thresh_mult[THR_DUAL_NEARESTLG] = 0;
- sf->thresh_mult[THR_DUAL_NEARLG ] = 0;
- sf->thresh_mult[THR_DUAL_ZEROLA ] = 0;
- sf->thresh_mult[THR_DUAL_NEARESTLA] = 0;
- sf->thresh_mult[THR_DUAL_NEARLA ] = 0;
- sf->thresh_mult[THR_DUAL_ZEROGA ] = 0;
- sf->thresh_mult[THR_DUAL_NEARESTGA] = 0;
- sf->thresh_mult[THR_DUAL_NEARGA ] = 0;
+ sf->thresh_mult[THR_COMP_ZEROLG ] = 0;
+ sf->thresh_mult[THR_COMP_NEARESTLG] = 0;
+ sf->thresh_mult[THR_COMP_NEARLG ] = 0;
+ sf->thresh_mult[THR_COMP_ZEROLA ] = 0;
+ sf->thresh_mult[THR_COMP_NEARESTLA] = 0;
+ sf->thresh_mult[THR_COMP_NEARLA ] = 0;
+ sf->thresh_mult[THR_COMP_ZEROGA ] = 0;
+ sf->thresh_mult[THR_COMP_NEARESTGA] = 0;
+ sf->thresh_mult[THR_COMP_NEARGA ] = 0;
- sf->thresh_mult[THR_DUAL_NEWLG ] = 1000;
- sf->thresh_mult[THR_DUAL_NEWLA ] = 1000;
- sf->thresh_mult[THR_DUAL_NEWGA ] = 1000;
+ sf->thresh_mult[THR_COMP_NEWLG ] = 1000;
+ sf->thresh_mult[THR_COMP_NEWLA ] = 1000;
+ sf->thresh_mult[THR_COMP_NEWGA ] = 1000;
if (Speed > 0)
{
sf->thresh_mult[THR_SPLITA ] = 20000;
}
- sf->thresh_mult[THR_DUAL_ZEROLG ] = 1500;
- sf->thresh_mult[THR_DUAL_NEARESTLG] = 1500;
- sf->thresh_mult[THR_DUAL_NEARLG ] = 1500;
- sf->thresh_mult[THR_DUAL_ZEROLA ] = 1500;
- sf->thresh_mult[THR_DUAL_NEARESTLA] = 1500;
- sf->thresh_mult[THR_DUAL_NEARLA ] = 1500;
- sf->thresh_mult[THR_DUAL_ZEROGA ] = 1500;
- sf->thresh_mult[THR_DUAL_NEARESTGA] = 1500;
- sf->thresh_mult[THR_DUAL_NEARGA ] = 1500;
-
- sf->thresh_mult[THR_DUAL_NEWLG ] = 2000;
- sf->thresh_mult[THR_DUAL_NEWLA ] = 2000;
- sf->thresh_mult[THR_DUAL_NEWGA ] = 2000;
+ sf->thresh_mult[THR_COMP_ZEROLG ] = 1500;
+ sf->thresh_mult[THR_COMP_NEARESTLG] = 1500;
+ sf->thresh_mult[THR_COMP_NEARLG ] = 1500;
+ sf->thresh_mult[THR_COMP_ZEROLA ] = 1500;
+ sf->thresh_mult[THR_COMP_NEARESTLA] = 1500;
+ sf->thresh_mult[THR_COMP_NEARLA ] = 1500;
+ sf->thresh_mult[THR_COMP_ZEROGA ] = 1500;
+ sf->thresh_mult[THR_COMP_NEARESTGA] = 1500;
+ sf->thresh_mult[THR_COMP_NEARGA ] = 1500;
+
+ sf->thresh_mult[THR_COMP_NEWLG ] = 2000;
+ sf->thresh_mult[THR_COMP_NEWLA ] = 2000;
+ sf->thresh_mult[THR_COMP_NEWGA ] = 2000;
}
if (Speed > 2)
sf->thresh_mult[THR_SPLITA ] = 50000;
}
- sf->thresh_mult[THR_DUAL_ZEROLG ] = 2000;
- sf->thresh_mult[THR_DUAL_NEARESTLG] = 2000;
- sf->thresh_mult[THR_DUAL_NEARLG ] = 2000;
- sf->thresh_mult[THR_DUAL_ZEROLA ] = 2000;
- sf->thresh_mult[THR_DUAL_NEARESTLA] = 2000;
- sf->thresh_mult[THR_DUAL_NEARLA ] = 2000;
- sf->thresh_mult[THR_DUAL_ZEROGA ] = 2000;
- sf->thresh_mult[THR_DUAL_NEARESTGA] = 2000;
- sf->thresh_mult[THR_DUAL_NEARGA ] = 2000;
+ sf->thresh_mult[THR_COMP_ZEROLG ] = 2000;
+ sf->thresh_mult[THR_COMP_NEARESTLG] = 2000;
+ sf->thresh_mult[THR_COMP_NEARLG ] = 2000;
+ sf->thresh_mult[THR_COMP_ZEROLA ] = 2000;
+ sf->thresh_mult[THR_COMP_NEARESTLA] = 2000;
+ sf->thresh_mult[THR_COMP_NEARLA ] = 2000;
+ sf->thresh_mult[THR_COMP_ZEROGA ] = 2000;
+ sf->thresh_mult[THR_COMP_NEARESTGA] = 2000;
+ sf->thresh_mult[THR_COMP_NEARGA ] = 2000;
- sf->thresh_mult[THR_DUAL_NEWLG ] = 2500;
- sf->thresh_mult[THR_DUAL_NEWLA ] = 2500;
- sf->thresh_mult[THR_DUAL_NEWGA ] = 2500;
+ sf->thresh_mult[THR_COMP_NEWLG ] = 2500;
+ sf->thresh_mult[THR_COMP_NEWLA ] = 2500;
+ sf->thresh_mult[THR_COMP_NEWGA ] = 2500;
sf->improved_quant = 0;
sf->improved_dct = 0;
if ((cpi->ref_frame_flags & (VP8_LAST_FLAG | VP8_GOLD_FLAG)) != (VP8_LAST_FLAG | VP8_GOLD_FLAG))
{
- sf->thresh_mult[THR_DUAL_ZEROLG ] = INT_MAX;
- sf->thresh_mult[THR_DUAL_NEARESTLG] = INT_MAX;
- sf->thresh_mult[THR_DUAL_NEARLG ] = INT_MAX;
- sf->thresh_mult[THR_DUAL_NEWLG ] = INT_MAX;
+ sf->thresh_mult[THR_COMP_ZEROLG ] = INT_MAX;
+ sf->thresh_mult[THR_COMP_NEARESTLG] = INT_MAX;
+ sf->thresh_mult[THR_COMP_NEARLG ] = INT_MAX;
+ sf->thresh_mult[THR_COMP_NEWLG ] = INT_MAX;
}
if ((cpi->ref_frame_flags & (VP8_LAST_FLAG | VP8_ALT_FLAG)) != (VP8_LAST_FLAG | VP8_ALT_FLAG))
{
- sf->thresh_mult[THR_DUAL_ZEROLA ] = INT_MAX;
- sf->thresh_mult[THR_DUAL_NEARESTLA] = INT_MAX;
- sf->thresh_mult[THR_DUAL_NEARLA ] = INT_MAX;
- sf->thresh_mult[THR_DUAL_NEWLA ] = INT_MAX;
+ sf->thresh_mult[THR_COMP_ZEROLA ] = INT_MAX;
+ sf->thresh_mult[THR_COMP_NEARESTLA] = INT_MAX;
+ sf->thresh_mult[THR_COMP_NEARLA ] = INT_MAX;
+ sf->thresh_mult[THR_COMP_NEWLA ] = INT_MAX;
}
if ((cpi->ref_frame_flags & (VP8_GOLD_FLAG | VP8_ALT_FLAG)) != (VP8_GOLD_FLAG | VP8_ALT_FLAG))
{
- sf->thresh_mult[THR_DUAL_ZEROGA ] = INT_MAX;
- sf->thresh_mult[THR_DUAL_NEARESTGA] = INT_MAX;
- sf->thresh_mult[THR_DUAL_NEARGA ] = INT_MAX;
- sf->thresh_mult[THR_DUAL_NEWGA ] = INT_MAX;
+ sf->thresh_mult[THR_COMP_ZEROGA ] = INT_MAX;
+ sf->thresh_mult[THR_COMP_NEARESTGA] = INT_MAX;
+ sf->thresh_mult[THR_COMP_NEARGA ] = INT_MAX;
+ sf->thresh_mult[THR_COMP_NEWGA ] = INT_MAX;
}
// Slow quant, dct and trellis not worthwhile for first pass
cm->prob_last_coded = 128;
cm->prob_gf_coded = 128;
cm->prob_intra_coded = 63;
- for ( i = 0; i < DUAL_PRED_CONTEXTS; i++ )
- cm->prob_dualpred[i] = 128;
+ for ( i = 0; i < COMP_PRED_CONTEXTS; i++ )
+ cm->prob_comppred[i] = 128;
// Prime the recent reference frame useage counters.
// Hereafter they will be maintained as a sort of moving average
THR_B_PRED = 19,
THR_I8X8_PRED = 20,
- THR_DUAL_ZEROLG = 21,
- THR_DUAL_NEARESTLG = 22,
- THR_DUAL_NEARLG = 23,
+ THR_COMP_ZEROLG = 21,
+ THR_COMP_NEARESTLG = 22,
+ THR_COMP_NEARLG = 23,
- THR_DUAL_ZEROLA = 24,
- THR_DUAL_NEARESTLA = 25,
- THR_DUAL_NEARLA = 26,
+ THR_COMP_ZEROLA = 24,
+ THR_COMP_NEARESTLA = 25,
+ THR_COMP_NEARLA = 26,
- THR_DUAL_ZEROGA = 27,
- THR_DUAL_NEARESTGA = 28,
- THR_DUAL_NEARGA = 29,
+ THR_COMP_ZEROGA = 27,
+ THR_COMP_NEARESTGA = 28,
+ THR_COMP_NEARGA = 29,
- THR_DUAL_NEWLG = 30,
- THR_DUAL_NEWLA = 31,
- THR_DUAL_NEWGA = 32,
+ THR_COMP_NEWLG = 30,
+ THR_COMP_NEWLA = 31,
+ THR_COMP_NEWGA = 32,
}
THR_MODES;
int rd_thresh_mult[MAX_MODES];
int rd_baseline_thresh[MAX_MODES];
int rd_threshes[MAX_MODES];
- int64_t rd_single_diff, rd_dual_diff, rd_hybrid_diff;
+ int64_t rd_single_diff, rd_comp_diff, rd_hybrid_diff;
int rd_prediction_type_threshes[4][NB_PREDICTION_TYPES];
- int dual_pred_count[DUAL_PRED_CONTEXTS];
- int single_pred_count[DUAL_PRED_CONTEXTS];
+ int comp_pred_count[COMP_PRED_CONTEXTS];
+ int single_pred_count[COMP_PRED_CONTEXTS];
int RDMULT;
int RDDIV ;
B_PRED,
I8X8_PRED,
- /* dual prediction modes */
+ /* compound prediction modes */
ZEROMV,
NEARESTMV,
NEARMV,
INTRA_FRAME,
INTRA_FRAME,
- /* dual prediction modes */
+ /* compound prediction modes */
LAST_FRAME,
LAST_FRAME,
LAST_FRAME,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
- /* dual prediction modes */
+ /* compound prediction modes */
GOLDEN_FRAME,
GOLDEN_FRAME,
GOLDEN_FRAME,
void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int recon_uvoffset,
int *returnrate, int *returndistortion, int *returnintra,
- int *best_single_rd_diff, int *best_dual_rd_diff,
+ int *best_single_rd_diff, int *best_comp_rd_diff,
int *best_hybrid_rd_diff)
{
VP8_COMMON *cm = &cpi->common;
int distortion;
int best_rd = INT_MAX;
int best_intra_rd = INT_MAX;
- int best_dual_rd = INT_MAX;
+ int best_comp_rd = INT_MAX;
int best_single_rd = INT_MAX;
int best_hybrid_rd = INT_MAX;
int rate2, distortion2;
int this_rd = INT_MAX;
int disable_skip = 0;
int other_cost = 0;
- int dualmode_cost = 0;
+ int compmode_cost = 0;
int mode_excluded = 0;
// Test best rd so far against threshold for trying this mode.
vp8_set_mbmode_and_mvs(x, this_mode, &mode_mv[this_mode]);
vp8_build_inter16x16_predictors_mby(&x->e_mbd);
- dualmode_cost =
- vp8_cost_bit( get_pred_prob( cm, xd, PRED_DUAL ), 0 );
+ compmode_cost =
+ vp8_cost_bit( get_pred_prob( cm, xd, PRED_COMP ), 0 );
if (cpi->active_map_enabled && x->active_ptr[0] == 0) {
x->skip = 1;
cpi->common.full_pixel);
rate2 += rate_uv;
distortion2 += distortion_uv;
- mode_excluded = cpi->common.dual_pred_mode == DUAL_PREDICTION_ONLY;
+ mode_excluded = cpi->common.comp_pred_mode == COMP_PREDICTION_ONLY;
break;
default:
int ref1 = x->e_mbd.mode_info_context->mbmi.ref_frame;
int ref2 = x->e_mbd.mode_info_context->mbmi.second_ref_frame;
- mode_excluded = cpi->common.dual_pred_mode == SINGLE_PREDICTION_ONLY;
+ mode_excluded = cpi->common.comp_pred_mode == SINGLE_PREDICTION_ONLY;
switch (this_mode)
{
case NEWMV:
/* We don't include the cost of the second reference here, because there are only
* three options: Last/Golden, ARF/Last or Golden/ARF, or in other words if you
* present them in that order, the second one is always known if the first is known */
- dualmode_cost =
- vp8_cost_bit( get_pred_prob( cm, xd, PRED_DUAL ), 1 );
+ compmode_cost =
+ vp8_cost_bit( get_pred_prob( cm, xd, PRED_COMP ), 1 );
}
// Where skip is allowable add in the default per mb cost for the no skip case.
rate2 += prob_skip_cost;
}
- if (cpi->common.dual_pred_mode == HYBRID_PREDICTION)
+ if (cpi->common.comp_pred_mode == HYBRID_PREDICTION)
{
- rate2 += dualmode_cost;
+ rate2 += compmode_cost;
}
if (!disable_skip &&
(this_mode == SPLITMV || x->e_mbd.mode_info_context->mbmi.ref_frame == INTRA_FRAME))
{
- if (this_rd < best_dual_rd)
- best_dual_rd = this_rd;
+ if (this_rd < best_comp_rd)
+ best_comp_rd = this_rd;
if (this_rd < best_single_rd)
best_single_rd = this_rd;
if (this_rd < best_hybrid_rd)
cpi->rd_threshes[mode_index] = (cpi->rd_baseline_thresh[mode_index] >> 7) * cpi->rd_thresh_mult[mode_index];
}
- /* keep record of best dual/single-only prediction */
+ /* keep record of best compound/single-only prediction */
if (!disable_skip &&
x->e_mbd.mode_info_context->mbmi.ref_frame != INTRA_FRAME &&
this_mode != SPLITMV)
{
int single_rd, hybrid_rd, single_rate, hybrid_rate;
- if (cpi->common.dual_pred_mode == HYBRID_PREDICTION)
+ if (cpi->common.comp_pred_mode == HYBRID_PREDICTION)
{
- single_rate = rate2 - dualmode_cost;
+ single_rate = rate2 - compmode_cost;
hybrid_rate = rate2;
}
else
{
single_rate = rate2;
- hybrid_rate = rate2 + dualmode_cost;
+ hybrid_rate = rate2 + compmode_cost;
}
single_rd = RDCOST(x->rdmult, x->rddiv, single_rate, distortion2);
single_rd < best_single_rd)
{
best_single_rd = single_rd;
- if (0) printf("single rd [DMC: %d]: %d\n", dualmode_cost, single_rd);
}
else if (x->e_mbd.mode_info_context->mbmi.second_ref_frame != INTRA_FRAME &&
- single_rd < best_dual_rd)
+ single_rd < best_comp_rd)
{
- best_dual_rd = single_rd;
- if (0) printf("dual rd [DMC: %d]: %d\n", dualmode_cost, single_rd);
+ best_comp_rd = single_rd;
}
if (hybrid_rd < best_hybrid_rd)
{
best_hybrid_rd = hybrid_rd;
- if (0) printf("hybrid rd [DMC: %d]: %d\n", best_hybrid_rd, hybrid_rd);
}
}
(cpi->common.mb_no_coeff_skip) ? 1 : 0;
x->e_mbd.mode_info_context->mbmi.partitioning = 0;
- *best_single_rd_diff = *best_dual_rd_diff = *best_hybrid_rd_diff = 0;
+ *best_single_rd_diff = *best_comp_rd_diff = *best_hybrid_rd_diff = 0;
return;
}
*best_single_rd_diff = INT_MIN;
else
*best_single_rd_diff = best_rd - best_single_rd;
- if (best_dual_rd == INT_MAX)
- *best_dual_rd_diff = INT_MIN;
+ if (best_comp_rd == INT_MAX)
+ *best_comp_rd_diff = INT_MIN;
else
- *best_dual_rd_diff = best_rd - best_dual_rd;
+ *best_comp_rd_diff = best_rd - best_comp_rd;
if (best_hybrid_rd == INT_MAX)
*best_hybrid_rd_diff = INT_MIN;
else
extern void vp8_initialize_rd_consts(VP8_COMP *cpi, int Qvalue);
extern void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int recon_uvoffset,
int *returnrate, int *returndistortion, int *returnintra,
- int *best_single_rd_diff, int *best_dual_rd_diff, int *best_hybrid_rd_diff);
+ int *best_single_rd_diff, int *best_comp_rd_diff, int *best_hybrid_rd_diff);
extern void vp8_rd_pick_intra_mode(VP8_COMP *cpi, MACROBLOCK *x, int *rate);
extern void vp8_mv_pred