summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Wilkins <paulwilkins@google.com>2019-02-28 14:10:12 +0000
committerPaul Wilkins <paulwilkins@google.com>2019-03-11 13:50:33 +0000
commitc48b2c96adab9055e97a84ac11d5ff3dde62afca (patch)
treeb13ca4690bc31c1095741a606b21a7fb2f9bec28
parent9ce7bf835a8dceca891dbce05fecd5b5417b3856 (diff)
downloadlibvpx-c48b2c96adab9055e97a84ac11d5ff3dde62afca.tar
libvpx-c48b2c96adab9055e97a84ac11d5ff3dde62afca.tar.gz
libvpx-c48b2c96adab9055e97a84ac11d5ff3dde62afca.tar.bz2
libvpx-c48b2c96adab9055e97a84ac11d5ff3dde62afca.zip
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
-rw-r--r--vp9/encoder/vp9_speed_features.c8
1 files changed, 5 insertions, 3 deletions
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;