Re-enable use_intra_txb_hash on speed 6
The speed feature use_intra_txb_hash was disabled on speed 4+ due to
incompatibility with multi-winner mode processing. Since multi-winner
mode is disabled on speed 6, this CL reintroduces it and recovers some
bitrate reduction.
Performance:
TESTSET | AVG_PSNR | OVR_PSNR | SSIM | SPD
LOWRES | -0.038% | -0.042% | -0.050% | +0.0%
MIDRES | -0.014% | +0.001% | -0.004% | +0.0%
LOWRES | -0.022% | -0.022% | -0.023% | +0.2%
STATS_CHANGED
BUG=aomedia:2694
Change-Id: Iad9552fdbe23bf28a9e9b5ba04aa7429ee0e8702
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index a998e9d..66fb322 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -639,10 +639,17 @@
sf->tpl_sf.subpel_force_stop = FULL_PEL;
sf->tpl_sf.disable_filtered_key_tpl = 1;
+ sf->tx_sf.use_intra_txb_hash = 1;
sf->tx_sf.tx_type_search.prune_tx_type_est_rd = 0;
sf->winner_mode_sf.multi_winner_mode_type = MULTI_WINNER_MODE_OFF;
}
+
+ // Intra txb hash is currently not compatible with multi-winner mode as the
+ // hashes got reset during multi-winner mode processing.
+ assert(IMPLIES(
+ sf->winner_mode_sf.multi_winner_mode_type != MULTI_WINNER_MODE_OFF,
+ !sf->tx_sf.use_intra_txb_hash));
}
// TODO(kyslov): now this is very similar to
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index 3d91a40..8049ec0 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -789,7 +789,9 @@
int model_based_prune_tx_search_level;
// Use hash table to store intra(keyframe only) txb transform search results
- // to avoid repeated search on the same residue signal.
+ // to avoid repeated search on the same residue signal. This is currently not
+ // compatible with multi-winner mode as the hash states are reset during
+ // winner mode processing.
int use_intra_txb_hash;
// Use hash table to store inter txb transform search results