Bring avg_frame_low_motion calculation forward
This CL moved current frame's avg_frame_low_motion update
before av1_adjust_gf_refresh_qp_one_pass_rt, so updated
avg_frame_low_motion would be available while making gf
length decision. Negligible BDRate change was seen.
Borg test results at rt speed 5 and 7.
avg_psnr: ovr_psnr: ssim: encoder speed:
speed 5:
rtc_derf: -0.045 -0.040 -0.027 0.074
rtc: 0.005 0.002 -0.003 0.016
speed 7:
rtc_derf: 0.007 -0.022 -0.017 0.053
rtc: 0.003 0.001 -0.006 -0.019
STATS_CHANGED
Change-Id: Ibbc2d290aa7bec16dc16af0e7c234ff3f6ece1d6
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 0221ca8..4d2fe37 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -2436,6 +2436,10 @@
// transform / motion compensation build reconstruction frame
av1_encode_frame(cpi);
+ // Update some stats from cyclic refresh.
+ if (q_cfg->aq_mode == CYCLIC_REFRESH_AQ && !frame_is_intra_only(cm))
+ av1_cyclic_refresh_postencode(cpi);
+
// Adjust the refresh of the golden (longer-term) reference based on QP
// selected for this frame. This is for CBR with 1 layer/non-svc RTC mode.
if (!frame_is_intra_only(cm) && cpi->oxcf.rc_cfg.mode == AOM_CBR &&
@@ -2443,10 +2447,6 @@
svc->number_temporal_layers == 1)
av1_adjust_gf_refresh_qp_one_pass_rt(cpi);
- // Update some stats from cyclic refresh.
- if (q_cfg->aq_mode == CYCLIC_REFRESH_AQ && !frame_is_intra_only(cm))
- av1_cyclic_refresh_postencode(cpi);
-
#if CONFIG_COLLECT_COMPONENT_TIMING
end_timing(cpi, av1_encode_frame_time);
#endif