]> granicus.if.org Git - libvpx/commitdiff
vp9-rtc: Set disable_16x16part for low-resoln high Q
authorMarco Paniconi <marpan@google.com>
Thu, 9 Apr 2020 01:23:45 +0000 (18:23 -0700)
committerMarco Paniconi <marpan@google.com>
Thu, 9 Apr 2020 01:34:59 +0000 (18:34 -0700)
Only affects variance partition at low-resoln,
speed 6,7 real-time mode. At very high Q better to
save bits from the split to 8x8.

bdrate gain ~3% on rtc_derf at very low bitrates

Change-Id: I94ee58e67d5ba6277cbab8f8dd9ea45b035c82b5

vp9/encoder/vp9_speed_features.c

index 7a26c4176e4392422c37563d3f01c1089955e74e..ce58cf2040bc8471b1b550f47515505fe09cab46 100644 (file)
@@ -787,6 +787,13 @@ static void set_rt_speed_feature_framesize_independent(
     if (cm->width * cm->height >= 640 * 360) sf->variance_part_thresh_mult = 2;
   }
 
+  // Disable split to 8x8 for low-resolution at very high Q.
+  // For variance partition (speed >= 6).
+  if (cm->frame_type != KEY_FRAME && cm->width * cm->height <= 320 * 240 &&
+      sf->partition_search_type == VAR_BASED_PARTITION &&
+      cpi->rc.avg_frame_qindex[INTER_FRAME] > 208)
+    sf->disable_16x16part_nonkey = 1;
+
   if (sf->nonrd_use_ml_partition)
     sf->partition_search_type = ML_BASED_PARTITION;