Adjustments to superes qthresh mode Obtain the superres parameters directly for the q being used. Also the kf qthresh default is made a low 32 by default since the analysis already does a decent job deciding whether to use superres and by how much. This effectively reduces the dependence on the qthresh parameter and may eventually be removed. Change-Id: Ie1d5204bc029615222d612f3a671bf12fc767f57
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c index 43a6028..ab5f26a 100644 --- a/av1/av1_cx_iface.c +++ b/av1/av1_cx_iface.c
@@ -1866,7 +1866,7 @@ SCALE_NUMERATOR, // rc_superres_denominator SCALE_NUMERATOR, // rc_superres_kf_denominator 63, // rc_superres_qthresh - 63, // rc_superres_kf_qthresh + 32, // rc_superres_kf_qthresh AOM_VBR, // rc_end_usage { NULL, 0 }, // rc_twopass_stats_in
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c index 7652029..d15ea10 100644 --- a/av1/encoder/encoder.c +++ b/av1/encoder/encoder.c
@@ -4161,7 +4161,7 @@ return new_denom; } -#define ENERGY_BY_Q2_THRESH 0.015 +#define ENERGY_BY_Q2_THRESH 0.01 static uint8_t get_superres_denom_from_qindex_energy(int qindex, double *energy, double thresh) { @@ -4219,22 +4219,7 @@ if (q < qthresh) { new_denom = SCALE_NUMERATOR; } else { - // TODO(debargha): Experiment with the variant below. - // new_denom = get_superres_denom_for_qindex(cpi, q); - uint8_t max_denom = get_superres_denom_for_qindex(cpi, MAXQ); - if (max_denom == SCALE_NUMERATOR) { - new_denom = max_denom; - break; - } else { - const uint8_t q_denom_step = - max_denom - SCALE_NUMERATOR == 0 - ? 255 - : (MAXQ - qthresh + 1 + max_denom - SCALE_NUMERATOR - 1) / - (max_denom - SCALE_NUMERATOR); - const uint8_t additional_denom = - (q - qthresh + 1 + q_denom_step - 1) / q_denom_step; - new_denom = AOMMIN(SCALE_NUMERATOR + additional_denom, max_denom); - } + new_denom = get_superres_denom_for_qindex(cpi, q); } break; }