From 972d31480fdf1575fefaf48cbef2ad2041a8092c Mon Sep 17 00:00:00 2001 From: Marco Paniconi Date: Tue, 16 Apr 2019 10:00:53 -0700 Subject: [PATCH] vp9-rtc: Add speed feature to force SMOOTH filter 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 | 5 +---- vp9/encoder/vp9_speed_features.c | 1 + vp9/encoder/vp9_speed_features.h | 3 +++ 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/vp9/encoder/vp9_pickmode.c b/vp9/encoder/vp9_pickmode.c index 9ad85e355..e0806aad2 100644 --- a/vp9/encoder/vp9_pickmode.c +++ b/vp9/encoder/vp9_pickmode.c @@ -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); diff --git a/vp9/encoder/vp9_speed_features.c b/vp9/encoder/vp9_speed_features.c index 01f3fb486..b12364f6d 100644 --- a/vp9/encoder/vp9_speed_features.c +++ b/vp9/encoder/vp9_speed_features.c @@ -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; diff --git a/vp9/encoder/vp9_speed_features.h b/vp9/encoder/vp9_speed_features.h index b1d5c8d3e..6b04a3ad4 100644 --- a/vp9/encoder/vp9_speed_features.h +++ b/vp9/encoder/vp9_speed_features.h @@ -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; -- 2.50.1