]> granicus.if.org Git - libvpx/commitdiff
vp9: Modify usage of force_skip under low temporal variance in non-rd pickmode.
authorMarco <marpan@google.com>
Fri, 13 Jan 2017 23:13:36 +0000 (15:13 -0800)
committerMarco <marpan@google.com>
Thu, 19 Jan 2017 19:21:15 +0000 (11:21 -0800)
For short_circuit set to level 1, skip newmv for 64x64 blocks if the
low temporal variance flag is set. Also modify threshold for 64x64 split
in variance partitioning.

Overall speed-up on noisy clips of 2-4%.
Only affect speed >= 7.

Change-Id: I384b3772007e84de6f8707e480d2ddf1fe1f907d

vp9/encoder/vp9_encodeframe.c
vp9/encoder/vp9_pickmode.c

index 73d277313f5cd82a62554e63f87df5c2b2486b7b..1247c6d4166bcb92d4e1e27843c17e9b4f504414 100644 (file)
@@ -1193,7 +1193,7 @@ static int choose_partitioning(VP9_COMP *cpi, const TileInfo *const tile,
     // variance over the sub-32x32 blocks, then force this block to split.
     // Only checking this for noise level >= medium for now.
     if (!is_key_frame && noise_level >= kMedium &&
-        vt.part_variances.none.variance > (5 * avg_32x32) >> 4)
+        vt.part_variances.none.variance > (9 * avg_32x32) >> 5)
       force_split[0] = 1;
     // Else if the maximum 32x32 variance minus the miniumum 32x32 variance in
     // a 64x64 block is greater than threshold and the maximum 32x32 variance is
index 041d2a59d7c492ad9eff49972b93d59282141fec..d5cace0019d20d7a683dec84fd2b177ff2d392c9 100644 (file)
@@ -1577,8 +1577,10 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, TileDataEnc *tile_data,
       continue;
     }
 
-    if (cpi->sf.short_circuit_low_temp_var >= 2 && force_skip_low_temp_var &&
-        ref_frame == LAST_FRAME && this_mode == NEWMV) {
+    if ((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) {
       continue;
     }