Fix intra mode update process in vp9_pick_inter_mode
When multiple intra modes are tested, the previous mode info update process may overwrite the selected best intra mode and make the final selection use an inter mode. This commit fixes this issue by moving the mode_info reset outside the intra mode search loop. Change-Id: I15ed4288a6b3cb0832104a5e6d5d9a25cd1a5b2b
This commit is contained in:
parent
c2c7596fc7
commit
df3e3ab6ff
@ -872,7 +872,6 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
|
||||
const PREDICTION_MODE this_mode = intra_mode_list[i];
|
||||
if (!((1 << this_mode) & cpi->sf.intra_y_mode_mask[intra_tx_size]))
|
||||
continue;
|
||||
skip_txfm = x->skip_txfm[0];
|
||||
args.mode = this_mode;
|
||||
args.rate = 0;
|
||||
args.dist = 0;
|
||||
@ -893,11 +892,14 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
|
||||
mbmi->ref_frame[0] = INTRA_FRAME;
|
||||
mbmi->uv_mode = this_mode;
|
||||
mbmi->mv[0].as_int = INVALID_MV;
|
||||
} else {
|
||||
x->skip_txfm[0] = best_mode_skip_txfm;
|
||||
mbmi->tx_size = best_tx_size;
|
||||
}
|
||||
}
|
||||
|
||||
// Reset mb_mode_info to the best inter mode.
|
||||
if (mbmi->ref_frame[0] != INTRA_FRAME) {
|
||||
x->skip_txfm[0] = best_mode_skip_txfm;
|
||||
mbmi->tx_size = best_tx_size;
|
||||
}
|
||||
}
|
||||
|
||||
pd->dst = orig_dst;
|
||||
|
Loading…
x
Reference in New Issue
Block a user