Framework to tune speed features based on qindex
Adds a placeholder function to override some speed features
once qindex for a frame has been set.
Change-Id: I4de0a4dda9abfa28938fee4cf7c092b781a6def9
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 8012dd6..a326f18 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -4941,6 +4941,7 @@
int *const low_cr_seen, const int loop_at_this_size) {
AV1_COMMON *const cm = &cpi->common;
RATE_CONTROL *const rc = &cpi->rc;
+ *loop = 0;
const int min_cr = cpi->oxcf.min_cr;
if (min_cr > 0) {
@@ -5293,6 +5294,7 @@
#if CONFIG_TUNE_VMAF
}
#endif
+ av1_set_speed_features_qindex_dependent(cpi, cpi->oxcf.speed);
if (cpi->oxcf.deltaq_mode != NO_DELTA_Q) av1_init_quantizer(cpi);
av1_set_variance_partition_thresholds(cpi, q_for_screen_content_quick_run,
@@ -5429,6 +5431,7 @@
#if CONFIG_TUNE_VMAF
}
#endif
+ av1_set_speed_features_qindex_dependent(cpi, cpi->oxcf.speed);
if (cpi->oxcf.deltaq_mode != NO_DELTA_Q) av1_init_quantizer(cpi);
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index a268182..8f6c26f 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -1265,3 +1265,20 @@
}
}
}
+
+// Override some speed features based on qindex
+void av1_set_speed_features_qindex_dependent(AV1_COMP *cpi, int speed) {
+ AV1_COMMON *const cm = &cpi->common;
+ SPEED_FEATURES *const sf = &cpi->sf;
+ (void)cm;
+ (void)sf;
+ (void)speed;
+ /* Turn trellis off
+ const int is_720p_or_larger = AOMMIN(cm->width, cm->height) >= 720;
+ if (is_720p_or_larger && speed == 0) {
+ if (cm->base_qindex < 96) {
+ sf->rd_sf.optimize_coefficients = NO_TRELLIS_OPT;
+ }
+ }
+ */
+}
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index 0f7b89b..36e0f71 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -1024,6 +1024,7 @@
int speed);
void av1_set_speed_features_framesize_dependent(struct AV1_COMP *cpi,
int speed);
+void av1_set_speed_features_qindex_dependent(struct AV1_COMP *cpi, int speed);
#ifdef __cplusplus
} // extern "C"