static void setup_frame(VP9_COMP *cpi) {
VP9_COMMON *const cm = &cpi->common;
- GF_GROUP *const gf_group = &cpi->twopass.gf_group;
// Set up entropy context depending on frame type. The decoder mandates
// the use of the default context, index 0, for keyframes and inter
// frames where the error_resilient_mode or intra_only flag is set. For
// TODO(jingning): Overwrite the frame_context_idx index in multi-layer ARF
// case. Need some further investigation on if we could apply this to single
// layer ARF case as well.
- if (cpi->multi_layer_arf && !cpi->use_svc)
+ if (cpi->multi_layer_arf && !cpi->use_svc) {
+ GF_GROUP *const gf_group = &cpi->twopass.gf_group;
cm->frame_context_idx = clamp(gf_group->layer_depth[gf_group->index] - 1, 0,
FRAME_CONTEXTS - 1);
+ }
if (cm->frame_type == KEY_FRAME) {
cpi->refresh_golden_frame = 1;
// test in two pass for the first
static int two_pass_first_group_inter(VP9_COMP *cpi) {
- TWO_PASS *const twopass = &cpi->twopass;
- GF_GROUP *const gf_group = &twopass->gf_group;
- const int gfg_index = gf_group->index;
-
if (cpi->oxcf.pass == 2) {
+ TWO_PASS *const twopass = &cpi->twopass;
+ GF_GROUP *const gf_group = &twopass->gf_group;
+ const int gfg_index = gf_group->index;
+
if (gfg_index == 0) return gf_group->update_type[gfg_index] == LF_UPDATE;
return gf_group->update_type[gfg_index - 1] != LF_UPDATE &&
gf_group->update_type[gfg_index] == LF_UPDATE;