Merge "Adding is_best_mode() function."
This commit is contained in:
@@ -372,9 +372,6 @@ static void update_reference_segmentation_map(VP9_COMP *cpi) {
|
|||||||
cache_ptr += cm->mi_cols;
|
cache_ptr += cm->mi_cols;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static int is_slowest_mode(int mode) {
|
|
||||||
return (mode == TWO_PASS_SECOND_BEST || mode == ONE_PASS_BEST);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void set_rd_speed_thresholds(VP9_COMP *cpi) {
|
static void set_rd_speed_thresholds(VP9_COMP *cpi) {
|
||||||
int i;
|
int i;
|
||||||
@@ -382,7 +379,7 @@ static void set_rd_speed_thresholds(VP9_COMP *cpi) {
|
|||||||
|
|
||||||
// Set baseline threshold values
|
// Set baseline threshold values
|
||||||
for (i = 0; i < MAX_MODES; ++i)
|
for (i = 0; i < MAX_MODES; ++i)
|
||||||
rd->thresh_mult[i] = is_slowest_mode(cpi->oxcf.mode) ? -500 : 0;
|
rd->thresh_mult[i] = is_best_mode(cpi->oxcf.mode) ? -500 : 0;
|
||||||
|
|
||||||
rd->thresh_mult[THR_NEARESTMV] = 0;
|
rd->thresh_mult[THR_NEARESTMV] = 0;
|
||||||
rd->thresh_mult[THR_NEARESTG] = 0;
|
rd->thresh_mult[THR_NEARESTG] = 0;
|
||||||
@@ -464,7 +461,7 @@ static void set_rd_speed_thresholds_sub8x8(VP9_COMP *cpi) {
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < MAX_REFS; ++i)
|
for (i = 0; i < MAX_REFS; ++i)
|
||||||
rd->thresh_mult_sub8x8[i] = is_slowest_mode(cpi->oxcf.mode) ? -500 : 0;
|
rd->thresh_mult_sub8x8[i] = is_best_mode(cpi->oxcf.mode) ? -500 : 0;
|
||||||
|
|
||||||
rd->thresh_mult_sub8x8[THR_LAST] += 2500;
|
rd->thresh_mult_sub8x8[THR_LAST] += 2500;
|
||||||
rd->thresh_mult_sub8x8[THR_GOLD] += 2500;
|
rd->thresh_mult_sub8x8[THR_GOLD] += 2500;
|
||||||
|
@@ -287,6 +287,9 @@ typedef struct VP9_CONFIG {
|
|||||||
vp8e_tuning tuning;
|
vp8e_tuning tuning;
|
||||||
} VP9_CONFIG;
|
} VP9_CONFIG;
|
||||||
|
|
||||||
|
static INLINE int is_best_mode(MODE mode) {
|
||||||
|
return mode == ONE_PASS_BEST || mode == TWO_PASS_SECOND_BEST;
|
||||||
|
}
|
||||||
|
|
||||||
typedef struct RD_OPT {
|
typedef struct RD_OPT {
|
||||||
// Thresh_mult is used to set a threshold for the rd score. A higher value
|
// Thresh_mult is used to set a threshold for the rd score. A higher value
|
||||||
|
@@ -1820,8 +1820,7 @@ static int64_t rd_pick_best_sub8x8_mode(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
if (best_rd < label_mv_thresh)
|
if (best_rd < label_mv_thresh)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (cpi->oxcf.mode != TWO_PASS_SECOND_BEST &&
|
if (!is_best_mode(cpi->oxcf.mode)) {
|
||||||
cpi->oxcf.mode != ONE_PASS_BEST) {
|
|
||||||
// use previous block's result as next block's MV predictor.
|
// use previous block's result as next block's MV predictor.
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
bsi->mvp.as_int = mi->bmi[i - 1].as_mv[0].as_int;
|
bsi->mvp.as_int = mi->bmi[i - 1].as_mv[0].as_int;
|
||||||
@@ -1897,8 +1896,7 @@ static int64_t rd_pick_best_sub8x8_mode(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Should we do a full search (best quality only)
|
// Should we do a full search (best quality only)
|
||||||
if (cpi->oxcf.mode == ONE_PASS_BEST ||
|
if (is_best_mode(cpi->oxcf.mode)) {
|
||||||
cpi->oxcf.mode == TWO_PASS_SECOND_BEST) {
|
|
||||||
int_mv *const best_mv = &mi->bmi[i].as_mv[0];
|
int_mv *const best_mv = &mi->bmi[i].as_mv[0];
|
||||||
/* Check if mvp_full is within the range. */
|
/* Check if mvp_full is within the range. */
|
||||||
clamp_mv(&mvp_full, x->mv_col_min, x->mv_col_max,
|
clamp_mv(&mvp_full, x->mv_col_min, x->mv_col_max,
|
||||||
|
Reference in New Issue
Block a user