AV1 RT: Adjust VBP thresholds on intra frames
This allows to speed up intra frame encoding to 35-40% with overall
quality impact of <0.5% (rtc and rtc_derf sets speed 9 and 10)
Change-Id: Ic29e2287103c13b79fa241405abfcd00b69685f2
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index 10be6d6..1cb8414 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -1204,8 +1204,6 @@
const int is_480p_or_larger = AOMMIN(cm->width, cm->height) >= 480;
const int is_360p_or_larger = AOMMIN(cm->width, cm->height) >= 360;
- (void)is_720p_or_larger; // Not used so far
-
if (!is_360p_or_larger) {
if (speed >= 5) sf->rt_sf.prune_inter_modes_wrt_gf_arf_based_on_sad = 1;
if (speed >= 6) sf->rt_sf.force_tx_search_off = 1;
@@ -1262,6 +1260,11 @@
sf->rt_sf.use_comp_ref_nonrd = 0;
}
}
+ if (!is_720p_or_larger) {
+ if (speed >= 9) {
+ sf->rt_sf.force_large_partition_blocks_intra = 1;
+ }
+ }
if (cpi->ppi->use_svc) {
sf->rt_sf.use_comp_ref_nonrd = 0;
if (cpi->svc.ref_frame_comp[0] || cpi->svc.ref_frame_comp[1] ||
diff --git a/av1/encoder/var_based_part.c b/av1/encoder/var_based_part.c
index c46bee2..44597c3 100644
--- a/av1/encoder/var_based_part.c
+++ b/av1/encoder/var_based_part.c
@@ -351,7 +351,7 @@
if (is_key_frame) {
if (cpi->sf.rt_sf.force_large_partition_blocks_intra) {
- threshold_base <<= cpi->oxcf.speed - 7;
+ threshold_base <<= cpi->oxcf.speed - (cpi->oxcf.mode == ALLINTRA ? 7 : 8);
}
thresholds[0] = threshold_base;
thresholds[1] = threshold_base;