vp9: Adjustment to active_best_quality for inter_frame, 1 pass vbr.
Change only affects 1 pass vbr. Use a q value somewhat larger (~6%) than avg_frame_qindex[INTER] as basis for active_best_quality for inter-frames. And use the minium of this (avg_frame_qindex) and the active_worst_quality. This reduces some overshoot in ytlive clips. Overall small but positive average increase in metrics (up on average ~0.2%). Change-Id: Icdbaae7872d5675fd38a13c0ec6ce0e2e3b919ce
This commit is contained in:
parent
2e0841931c
commit
d488236ce3
@ -948,11 +948,15 @@ static int rc_pick_q_and_bounds_one_pass_vbr(const VP9_COMP *cpi,
|
|||||||
FIXED_GF_INTERVAL], cm->bit_depth);
|
FIXED_GF_INTERVAL], cm->bit_depth);
|
||||||
active_best_quality = VPXMAX(qindex + delta_qindex, rc->best_quality);
|
active_best_quality = VPXMAX(qindex + delta_qindex, rc->best_quality);
|
||||||
} else {
|
} else {
|
||||||
// Use the lower of active_worst_quality and recent/average Q.
|
// Use the min of the average Q (with some increase) and
|
||||||
if (cm->current_video_frame > 1)
|
// active_worst_quality as basis for active_best.
|
||||||
active_best_quality = inter_minq[rc->avg_frame_qindex[INTER_FRAME]];
|
if (cm->current_video_frame > 1) {
|
||||||
else
|
q = VPXMIN(((17 * rc->avg_frame_qindex[INTER_FRAME]) >> 4),
|
||||||
|
active_worst_quality);
|
||||||
|
active_best_quality = inter_minq[q];
|
||||||
|
} else {
|
||||||
active_best_quality = inter_minq[rc->avg_frame_qindex[KEY_FRAME]];
|
active_best_quality = inter_minq[rc->avg_frame_qindex[KEY_FRAME]];
|
||||||
|
}
|
||||||
// For the constrained quality mode we don't want
|
// For the constrained quality mode we don't want
|
||||||
// q to fall below the cq level.
|
// q to fall below the cq level.
|
||||||
if ((oxcf->rc_mode == VPX_CQ) &&
|
if ((oxcf->rc_mode == VPX_CQ) &&
|
||||||
|
Loading…
x
Reference in New Issue
Block a user