From affd9921e405063ed7815f412b15e634c8c9cfca Mon Sep 17 00:00:00 2001 From: Deepa K G Date: Thu, 20 Jun 2019 18:30:41 +0530 Subject: [PATCH] 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 --- vp9/encoder/vp9_encoder.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c index 35a8a077f..11bfd034e 100644 --- a/vp9/encoder/vp9_encoder.c +++ b/vp9/encoder/vp9_encoder.c @@ -814,7 +814,17 @@ static void setup_frame(VP9_COMP *cpi) { 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 -- 2.40.0