shithub: libvpx

Download patch

ref: 7ccf953b694e19e220230ee7f9b688e445c75cc1
parent: f3904a9b96cac690afb3f7235d41f0c849fbfbaf
author: Marco Paniconi <marpan@google.com>
date: Thu Jul 12 11:28:36 EDT 2018

vp9: Enforce intra search on scene_change

For real-time non-rd pickmode: force check of
intra modes on INTER frames for scene changes.
Reduces artifacts on scene changes.

Change-Id: I5ae80869072db156791ace554c0a470f3785e9c6

--- a/vp9/encoder/vp9_pickmode.c
+++ b/vp9/encoder/vp9_pickmode.c
@@ -1518,6 +1518,9 @@
   int svc_mv_row = 0;
   int no_scaling = 0;
   unsigned int thresh_svc_skip_golden = 500;
+  int scene_change_detected =
+      cpi->rc.high_source_sad ||
+      (cpi->use_svc && cpi->svc.high_source_sad_superframe);
   x->source_variance = UINT_MAX;
   if (cpi->sf.default_interp_filter == BILINEAR) {
     best_pred_filter = BILINEAR;
@@ -2328,6 +2331,7 @@
   // Perform intra prediction search, if the best SAD is above a certain
   // threshold.
   if (best_rdc.rdcost == INT64_MAX ||
+      (scene_change_detected && perform_intra_pred) ||
       ((!force_skip_low_temp_var || bsize < BLOCK_32X32 ||
         x->content_state_sb == kVeryHighSad) &&
        perform_intra_pred && !x->skip && best_rdc.rdcost > inter_mode_thresh &&