ref: c48b2c96adab9055e97a84ac11d5ff3dde62afca
parent: 9ce7bf835a8dceca891dbce05fecd5b5417b3856
author: Paul Wilkins <[email protected]>
date: Thu Feb 28 09:10:12 EST 2019
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
--- a/vp9/encoder/vp9_speed_features.c
+++ b/vp9/encoder/vp9_speed_features.c
@@ -265,14 +265,16 @@
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;