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 &&