ref: affd9921e405063ed7815f412b15e634c8c9cfca
parent: bb9511684f70a735b3b909712666021e178c93e7
author: Deepa K G <deepa.kg@ittiam.com>
date: Thu Jun 20 14:30:41 EDT 2019
Set up frame contexts based on frame type In single layer ARF case, use different frame contexts for KF, ARF/GF, LF, OVERLAY update types. Change-Id: Iebb7f9bb430e483dea1e75fc122b9b67645ce804
--- a/vp9/encoder/vp9_encoder.c
+++ b/vp9/encoder/vp9_encoder.c
@@ -814,7 +814,17 @@
if (frame_is_intra_only(cm) || cm->error_resilient_mode) {
vp9_setup_past_independence(cm);
} else {
- if (!cpi->use_svc) cm->frame_context_idx = cpi->refresh_alt_ref_frame;
+ if (!cpi->use_svc) {
+ const int boost_frame =
+ !cpi->rc.is_src_frame_alt_ref &&
+ (cpi->refresh_golden_frame || cpi->refresh_alt_ref_frame);
+ if (boost_frame)
+ cm->frame_context_idx = 1;
+ else if (cpi->rc.is_src_frame_alt_ref)
+ cm->frame_context_idx = 2;
+ else
+ cm->frame_context_idx = 3;
+ }
}
// TODO(jingning): Overwrite the frame_context_idx index in multi-layer ARF