Simplify GOP length decision at speed 6
Simplified GOP length decision at speed 6, which only depended on
lag-in-frames with this change.
Borg test results at speed 6:
avg_psnr: ovr_psnr: ssim: avg speed change:
hdres: 0.998 1.045 0.108 8.4%
midres: 1.084 0.934 0.083 9.5%
lowres: 1.318 1.292 0.499 8.1%
STATS_CHANGED
Change-Id: Icee7268c360f8c831cc682e5141b028a6a1a19d1
diff --git a/av1/encoder/pass2_strategy.c b/av1/encoder/pass2_strategy.c
index 27abfb2..b123376 100644
--- a/av1/encoder/pass2_strategy.c
+++ b/av1/encoder/pass2_strategy.c
@@ -2719,7 +2719,8 @@
calculate_gf_length(cpi, max_gop_length, MAX_NUM_GF_INTERVALS);
}
- if (max_gop_length > 16 && oxcf->enable_tpl_model) {
+ if (max_gop_length > 16 && oxcf->enable_tpl_model &&
+ !cpi->sf.tpl_sf.disable_gop_length_decision) {
if (rc->gf_intervals[rc->cur_gf_index] - 1 > 16) {
// The calculate_gf_length function is previously used with
// max_gop_length = 32 with look-ahead gf intervals.
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index 83c8c6a..d796aff 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -625,8 +625,11 @@
if (speed >= 6) {
sf->mv_sf.simple_motion_subpel_force_stop = FULL_PEL;
sf->rd_sf.perform_coeff_opt = is_boosted_arf2_bwd_type ? 4 : 6;
+
+ sf->tpl_sf.disable_gop_length_decision = 1;
sf->tpl_sf.subpel_force_stop = FULL_PEL;
sf->tpl_sf.disable_filtered_key_tpl = 1;
+
sf->tx_sf.tx_type_search.prune_tx_type_est_rd = 0;
}
}
@@ -929,6 +932,7 @@
}
static AOM_INLINE void init_tpl_sf(TPL_SPEED_FEATURES *tpl_sf) {
+ tpl_sf->disable_gop_length_decision = 0;
tpl_sf->prune_intra_modes = 0;
tpl_sf->prune_starting_mv = 0;
tpl_sf->reduce_first_step_size = 0;
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index 37b5eef..177e6db 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -296,6 +296,8 @@
} HIGH_LEVEL_SPEED_FEATURES;
typedef struct TPL_SPEED_FEATURES {
+ // Enable/disable GOP length adaptive decision.
+ int disable_gop_length_decision;
// Prune the intra modes search by tpl.
// If set to 0, we will search all intra modes from DC_PRED to PAETH_PRED.
// If set to 1, we only search DC_PRED, V_PRED, and H_PRED.