Commit 68d79146 authored by Jingning Han's avatar Jingning Han
Browse files

Fix a bug in vp9_rd_pick_inter_mode_sb

This commit fixes a bug related to skipping intra mode checking, by
using a separate variable to store the best prediction error from
inter mode. It avoids unintentionally overwriting intra mode
rate-distortion cost, and hence affecting other speed features.

Change-Id: I99e12993339c84c8b4f597996b372012e5858fae
parent 9a9e2aef
...@@ -2575,6 +2575,7 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x, ...@@ -2575,6 +2575,7 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
vp9_prob comp_mode_p; vp9_prob comp_mode_p;
int64_t best_intra_rd = INT64_MAX; int64_t best_intra_rd = INT64_MAX;
int64_t best_inter_rd = INT64_MAX; int64_t best_inter_rd = INT64_MAX;
unsigned int best_pred_sse = UINT_MAX;
PREDICTION_MODE best_intra_mode = DC_PRED; PREDICTION_MODE best_intra_mode = DC_PRED;
MV_REFERENCE_FRAME best_inter_ref_frame = LAST_FRAME; MV_REFERENCE_FRAME best_inter_ref_frame = LAST_FRAME;
int rate_uv_intra[TX_SIZES], rate_uv_tokenonly[TX_SIZES]; int rate_uv_intra[TX_SIZES], rate_uv_tokenonly[TX_SIZES];
...@@ -2804,7 +2805,7 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x, ...@@ -2804,7 +2805,7 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
if (ref_frame == INTRA_FRAME) { if (ref_frame == INTRA_FRAME) {
if (cpi->sf.adaptive_mode_search) if (cpi->sf.adaptive_mode_search)
if ((x->source_variance << num_pels_log2_lookup[bsize]) > best_intra_rd) if ((x->source_variance << num_pels_log2_lookup[bsize]) > best_pred_sse)
continue; continue;
if (!(intra_y_mode_mask & (1 << this_mode))) if (!(intra_y_mode_mask & (1 << this_mode)))
...@@ -2983,7 +2984,7 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x, ...@@ -2983,7 +2984,7 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
mbmi->mv[0].as_int = 0; mbmi->mv[0].as_int = 0;
max_plane = 1; max_plane = 1;
} else { } else {
best_intra_rd = x->pred_sse[ref_frame]; best_pred_sse = x->pred_sse[ref_frame];
} }
*returnrate = rate2; *returnrate = rate2;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment