ref: 8c18df7fcd592080866afa16075d9056aa9190e4
parent: 0af189c00d48f92fbcc52c04d28af7a3af848d18
author: Marco <marpan@google.com>
date: Fri Mar 10 17:50:43 EST 2017
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
--- a/vp9/encoder/vp9_pickmode.c
+++ b/vp9/encoder/vp9_pickmode.c
@@ -1985,11 +1985,10 @@
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;