]> granicus.if.org Git - libvpx/commitdiff
vp9: Fix condition for intra search in non-rd pickmode.
authorMarco <marpan@google.com>
Sat, 11 Mar 2017 06:50:43 +0000 (22:50 -0800)
committerMarco <marpan@google.com>
Mon, 13 Mar 2017 05:30:39 +0000 (22:30 -0700)
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

vp9/encoder/vp9_pickmode.c

index 3790f986983ae26447c59bf84973a34069de3ee4..ea0f2ca1aac1b70729c518fa44a9409cdc1a8e37 100644 (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;