From: Marco Date: Thu, 22 Jun 2017 03:39:59 +0000 (-0700) Subject: vp9: Add high source sad to content state. X-Git-Tag: v1.7.0~375^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d7515b1187905a75bde89b1b8fc19e500b994868;p=libvpx vp9: Add high source sad to content state. Use it to limit NEWMV early exit in nonrd pickmode Small change in RTC metrics, has some improvement for high motion clips. Change-Id: I1d89fd955e1b3486d5fb07f4472eeeecd553f67f --- diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c index 4b7e0ca77..786efd24a 100644 --- a/vp9/encoder/vp9_encodeframe.c +++ b/vp9/encoder/vp9_encodeframe.c @@ -1022,6 +1022,9 @@ static void avg_source_sad(VP9_COMP *cpi, MACROBLOCK *x, int shift, if (tmp_variance < (tmp_sse >> 3) && (tmp_sse - tmp_variance) > 10000) x->content_state_sb = kLowVarHighSumdiff; + if (tmp_sad > (avg_source_sad_threshold << 1)) + x->content_state_sb = kVeryHighSad; + if (cpi->content_state_sb_fd != NULL) { if (tmp_sad < avg_source_sad_threshold2) { // Cap the increment to 255. diff --git a/vp9/encoder/vp9_encoder.h b/vp9/encoder/vp9_encoder.h index 672c83bfd..7ab892000 100644 --- a/vp9/encoder/vp9_encoder.h +++ b/vp9/encoder/vp9_encoder.h @@ -138,6 +138,7 @@ typedef enum { kHighSadLowSumdiff = 3, kHighSadHighSumdiff = 4, kLowVarHighSumdiff = 5, + kVeryHighSad = 6, } CONTENT_STATE_SB; typedef struct VP9EncoderConfig { diff --git a/vp9/encoder/vp9_pickmode.c b/vp9/encoder/vp9_pickmode.c index 20b57f44c..17dc0637f 100644 --- a/vp9/encoder/vp9_pickmode.c +++ b/vp9/encoder/vp9_pickmode.c @@ -1693,7 +1693,8 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, TileDataEnc *tile_data, continue; } - if ((cpi->sf.short_circuit_low_temp_var >= 2 || + if (x->content_state_sb != kVeryHighSad && + (cpi->sf.short_circuit_low_temp_var >= 2 || (cpi->sf.short_circuit_low_temp_var == 1 && bsize == BLOCK_64X64)) && force_skip_low_temp_var && ref_frame == LAST_FRAME && this_mode == NEWMV) {