diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c index 04d5181789f675d69c08eea5bb43c542131b8ba6..59a83785cb68422caffcf902be9f38959f246f5e 100644 --- a/vp9/encoder/vp9_encoder.c +++ b/vp9/encoder/vp9_encoder.c @@ -51,8 +51,6 @@ void vp9_coef_tree_initialize(); -#define DEFAULT_INTERP_FILTER SWITCHABLE - #define SHARP_FILTER_QTHRESH 0 /* Q threshold for 8-tap sharp filter */ #define ALTREF_HIGH_PRECISION_MV 1 // Whether to use high precision mv @@ -636,7 +634,7 @@ void vp9_change_config(struct VP9_COMP *cpi, const VP9EncoderConfig *oxcf) { rc->worst_quality = cpi->oxcf.worst_allowed_q; rc->best_quality = cpi->oxcf.best_allowed_q; - cm->interp_filter = DEFAULT_INTERP_FILTER; + cm->interp_filter = cpi->sf.default_interp_filter; cm->display_width = cpi->oxcf.width; cm->display_height = cpi->oxcf.height; @@ -2247,7 +2245,7 @@ static void encode_frame_to_data_rate(VP9_COMP *cpi, q = vp9_rc_pick_q_and_bounds(cpi, &bottom_index, &top_index); if (!frame_is_intra_only(cm)) { - cm->interp_filter = DEFAULT_INTERP_FILTER; + cm->interp_filter = cpi->sf.default_interp_filter; /* TODO: Decide this more intelligently */ vp9_set_high_precision_mv(cpi, q < HIGH_PRECISION_MV_QTHRESH); } diff --git a/vp9/encoder/vp9_speed_features.c b/vp9/encoder/vp9_speed_features.c index dc9bdeb8ca0b9ffb24fcaa20e3a15cdaa5b3863e..e3951d53245b7ea65f3dda03926b7c2912804813 100644 --- a/vp9/encoder/vp9_speed_features.c +++ b/vp9/encoder/vp9_speed_features.c @@ -372,6 +372,7 @@ void vp9_set_speed_features(VP9_COMP *cpi) { sf->elevate_newmv_thresh = 0; // Recode loop tolerence %. sf->recode_tolerance = 25; + sf->default_interp_filter = SWITCHABLE; switch (oxcf->mode) { case ONE_PASS_BEST: diff --git a/vp9/encoder/vp9_speed_features.h b/vp9/encoder/vp9_speed_features.h index e6f4653808ceb16abb254ae32c0cb3133c1a0e8a..bdbbe5888a67fb950de2822851dd563b8f8dd82b 100644 --- a/vp9/encoder/vp9_speed_features.h +++ b/vp9/encoder/vp9_speed_features.h @@ -366,6 +366,9 @@ typedef struct SPEED_FEATURES { // In real time encoding, increase the threshold for NEWMV. int elevate_newmv_thresh; + + // default interp filter choice + INTERP_FILTER default_interp_filter; } SPEED_FEATURES; struct VP9_COMP;