]> granicus.if.org Git - libvpx/commitdiff
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 9ad85e3553f220236190e44ad834e5e280625541..e0806aad2c3995b14d1304c43c58bb13ea16031e 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 01f3fb4864d829ccef74addeb89784e50ea88864..b12364f6de6d8adeec832fa93a4aa0f0e84dfd09 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 b1d5c8d3e82931a1a1b2135369c8f642501b6f46..6b04a3ad431a7d54457b54549a5a7cd5ad55f42d 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;