vp9: Fix condition for intra search in non-rd pickmode.

Fixes an issue when the LAST and golden is not used as a reference,
in which case its possible no encoding mode is set (since intra may be
skipped under certain codtions). Fix is to make sure intra is searched
if no inter mode is checked.

Issue can happen for temporal layer pattern#7 in vpx_temporal_svc_encoder.c

Change-Id: I5ab4999b2f9dbd739044888e0916b5ec491d966b
This commit is contained in:
Marco
2017-03-10 22:50:43 -08:00
parent 0af189c00d
commit 8c18df7fcd

View File

@@ -1985,11 +1985,10 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, TileDataEnc *tile_data,
perform_intra_pred = 0;
// Perform intra prediction search, if the best SAD is above a certain
// threshold.
if ((!force_skip_low_temp_var || bsize < BLOCK_32X32) && perform_intra_pred &&
(best_rdc.rdcost == INT64_MAX ||
(!x->skip && best_rdc.rdcost > inter_mode_thresh &&
bsize <= cpi->sf.max_intra_bsize)) &&
!x->skip_low_source_sad) {
if (best_rdc.rdcost == INT64_MAX ||
((!force_skip_low_temp_var || bsize < BLOCK_32X32) &&
perform_intra_pred && !x->skip && best_rdc.rdcost > inter_mode_thresh &&
bsize <= cpi->sf.max_intra_bsize && !x->skip_low_source_sad)) {
struct estimate_block_intra_args args = { cpi, x, DC_PRED, 1, 0 };
int i;
TX_SIZE best_intra_tx_size = TX_SIZES;