ref: 607e45f42027cde9cab7a017559ea02fd397fffd
parent: 8d471fcee21b0d33ec7b0980addedd4d38324c5a
author: paulwilkins <paulwilkins@google.com>
date: Wed Nov 15 11:39:54 EST 2017
Add clause to alt ref group breakout. Add a clause to the breakout test for alt ref groups that examines the size of the accumulated second reference frame error compared to the cost of intra coding. This clause causes a reduction in the average group length for many clips. Alongside the change to the group length the minimum boost is increased. On balance the results are positive for psnr and psnr-hvs but is negative for ssim/fast ssim for the smaller image formats. Strong gains on some harder clips (eg ducks take off (midres) ~20%, husky (lowres) 6-17%. Most of the negative cases are lower motion clips. Subsequent patch hopefully will help with those. Change-Id: Ic1f5dbb9153d5089e58b1540470e799f91a65dc4
--- a/vp9/encoder/vp9_firstpass.c
+++ b/vp9/encoder/vp9_firstpass.c
@@ -2091,8 +2091,8 @@
}
arf_boost += (int)boost_score;
- if (arf_boost < ((b_frames + f_frames) * 20))
- arf_boost = ((b_frames + f_frames) * 20);
+ if (arf_boost < ((b_frames + f_frames) * 40))
+ arf_boost = ((b_frames + f_frames) * 40);
arf_boost = VPXMAX(arf_boost, MIN_ARF_GF_BOOST);
return arf_boost;
@@ -2562,7 +2562,6 @@
}
// Calculate a boost number for this frame.
- sr_accumulator = 0.0;
boost_score += decay_accumulator *
calc_frame_boost(cpi, &next_frame, &sr_accumulator,
this_frame_mv_in_out, GF_MAX_BOOST);
@@ -2580,7 +2579,8 @@
((mv_ratio_accumulator > mv_ratio_accumulator_thresh) ||
(abs_mv_in_out_accumulator > abs_mv_in_out_thresh) ||
(mv_in_out_accumulator < -mv_in_out_thresh) ||
- (decay_accumulator < ARF_DECAY_BREAKOUT)))) {
+ (decay_accumulator < ARF_DECAY_BREAKOUT) ||
+ (sr_accumulator > next_frame.intra_error)))) {
boost_score = old_boost_score;
break;
}