From: Paul Wilkins Date: Thu, 28 Feb 2019 14:10:12 +0000 (+0000) Subject: Change to mode early breakout rules for FILM mode. X-Git-Tag: v1.8.1~175^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c48b2c96adab9055e97a84ac11d5ff3dde62afca;p=libvpx Change to mode early breakout rules for FILM mode. The biggest offender in terms of preventing retention of film grain in high rate film content is the use of DC-PRED mode. Some of the directional modes whilst not strictly preserving grain do better at at least preserving some texture. This change blocks the early breakout of the rd loop based on the reference frame giving the best result so far. In practice, unless DC-PRED was chosen as the best mode so far, the other directional intra modes would not even be considered. As the film grain mode also tends to bias against DC-PRED (or intra in general) this was pretty much blocking all use of directional intra modes. The patch also allows for a broader spectrum of DC modes at the 16x16 transform level than previously. Change-Id: I860b7726ea9f5fcbb3ec1a90edbdd8cade2e8b28 --- diff --git a/vp9/encoder/vp9_speed_features.c b/vp9/encoder/vp9_speed_features.c index 8c59662c3..1494c28f9 100644 --- a/vp9/encoder/vp9_speed_features.c +++ b/vp9/encoder/vp9_speed_features.c @@ -265,14 +265,16 @@ static void set_good_speed_feature_framesize_independent(VP9_COMP *cpi, sf->mv.auto_mv_step_size = 1; sf->adaptive_rd_thresh = 2; sf->mv.subpel_search_level = 1; - sf->mode_skip_start = 10; + if (cpi->oxcf.content != VP9E_CONTENT_FILM) sf->mode_skip_start = 10; sf->adaptive_pred_interp_filter = 1; sf->allow_acl = 0; sf->intra_y_mode_mask[TX_32X32] = INTRA_DC_H_V; sf->intra_uv_mode_mask[TX_32X32] = INTRA_DC_H_V; - sf->intra_y_mode_mask[TX_16X16] = INTRA_DC_H_V; - sf->intra_uv_mode_mask[TX_16X16] = INTRA_DC_H_V; + if (cpi->oxcf.content != VP9E_CONTENT_FILM) { + sf->intra_y_mode_mask[TX_16X16] = INTRA_DC_H_V; + sf->intra_uv_mode_mask[TX_16X16] = INTRA_DC_H_V; + } sf->recode_tolerance_low = 15; sf->recode_tolerance_high = 30;