vp9-rtc: Add speed feature to force SMOOTH filter
authorMarco Paniconi <marpan@google.com>
Tue, 16 Apr 2019 17:00:53 +0000 (10:00 -0700)
committerMarco Paniconi <marpan@google.com>
Tue, 16 Apr 2019 17:19:51 +0000 (10:19 -0700)
Add speed feature for real-time to always force
SMOOTH filter for subpel motion. Can be useful in some
cases for noisy content or high motion at low bitrate.
Also some speedup in avoiding the checking of two filters.

Keep it off always for now.

Change-Id: I843d79aaddef75f9c6ded60906cc75c279a6e37a

vp9/encoder/vp9_pickmode.c
vp9/encoder/vp9_speed_features.c
vp9/encoder/vp9_speed_features.h

index 9ad85e3..e0806aa 100644 (file)
@@ -1690,10 +1690,7 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, TileDataEnc *tile_data,
   int no_scaling = 0;
   unsigned int thresh_svc_skip_golden = 500;
   unsigned int thresh_skip_golden = 500;
-  // TODO(marpan/jianj): forcing smooth_interpol is visually better for noisy
-  // content, at low resolns. Look into adding this conditon. For now keep
-  // it off.
-  int force_smooth_filter = 0;
+  int force_smooth_filter = cpi->sf.force_smooth_interpol;
   int scene_change_detected =
       cpi->rc.high_source_sad ||
       (cpi->use_svc && cpi->svc.high_source_sad_superframe);
index 01f3fb4..b12364f 100644 (file)
@@ -453,6 +453,7 @@ static void set_rt_speed_feature_framesize_independent(
   sf->nonrd_use_ml_partition = 0;
   sf->variance_part_thresh_mult = 1;
   sf->cb_pred_filter_search = 0;
+  sf->force_smooth_interpol = 0;
 
   if (speed >= 1) {
     sf->allow_txfm_domain_distortion = 1;
index b1d5c8d..6b04a3a 100644 (file)
@@ -608,6 +608,9 @@ typedef struct SPEED_FEATURES {
 
   // Multiplier for base thresold for variance partitioning.
   int variance_part_thresh_mult;
+
+  // Force subpel motion filter to always use SMOOTH_FILTER.
+  int force_smooth_interpol;
 } SPEED_FEATURES;
 
 struct VP9_COMP;