Commit 95cf99e94d for aom
commit 95cf99e94ddd2a7642da0ff52514675121088bea
Author: Deepa K G <deepa.kg@ittiam.com>
Date: Thu Aug 6 11:58:20 2026 +0530
Reduce QP used in TPL stage in VBR mode
BD-Rate performance results are as follows:
Instruction Count BD-Rate Loss(%)
cpu Reduction(%) avg.psnr ovr.psnr ssim vmaf vmaf_neg
1 -0.3 0.0082 0.0007 0.1027 -0.1710 -0.1634
2 -0.3 -0.0060 -0.0113 -0.0017 -0.1199 -0.1512
3 -0.1 -0.0011 -0.0011 -0.0494 -0.2244 -0.1896
STATS_CHANGED
Change-Id: I790702adac2d6625311a56f7e168d98aed81349b
diff --git a/av1/encoder/tpl_model.c b/av1/encoder/tpl_model.c
index 3f7fa88ca9..ba54d55e13 100644
--- a/av1/encoder/tpl_model.c
+++ b/av1/encoder/tpl_model.c
@@ -1725,7 +1725,14 @@ static inline int init_gop_frames_for_tpl(
*pframe_qindex = gf_group->q_val[gf_index];
leaf_frame_qindex = *pframe_qindex;
if (cpi->oxcf.rc_cfg.mode == AOM_VBR) {
- *pframe_qindex = CLIP(*pframe_qindex, MIN_TPL_Q_INDEX, MAX_TPL_Q_INDEX);
+ const int bit_depth = cm->seq_params->bit_depth;
+ const double q_val = av1_convert_qindex_to_q(*pframe_qindex, bit_depth);
+ const double qindex_ratio = (double)(*pframe_qindex) / MAXQ;
+ const double qstep_ratio = 1.0 - (qindex_ratio * qindex_ratio * 0.5);
+ const int delta_qindex =
+ av1_compute_qdelta(&cpi->rc, q_val, q_val * qstep_ratio, bit_depth);
+ *pframe_qindex = CLIP(*pframe_qindex + delta_qindex, MIN_TPL_Q_INDEX,
+ MAX_TPL_Q_INDEX);
}
}