From f1581b3b2ed21b18c37b2fdbe62494f1945d0ca4 Mon Sep 17 00:00:00 2001 From: Jingning Han Date: Mon, 15 Sep 2014 11:20:30 -0700 Subject: [PATCH] Add ARF validation for compound inter mode check This commit enforces ARF validation check for compound inter modes. It avoids potential access to ARF in the encoding process if it is not allowed. Change-Id: I055fec946b5d19d97937dc9001e1e564923e2439 --- vp9/encoder/vp9_rdopt.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/vp9/encoder/vp9_rdopt.c b/vp9/encoder/vp9_rdopt.c index 088776982..f3091cc88 100644 --- a/vp9/encoder/vp9_rdopt.c +++ b/vp9/encoder/vp9_rdopt.c @@ -2793,6 +2793,15 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x, if (!cm->allow_comp_inter_inter) continue; + // Skip compound inter modes if ARF is not available. + if (!(cpi->ref_frame_flags & flag_list[second_ref_frame])) + continue; + + // Do not allow compound prediction if the segment level reference frame + // feature is in use as in this case there can only be one reference. + if (vp9_segfeature_active(seg, segment_id, SEG_LVL_REF_FRAME)) + continue; + if ((mode_search_skip_flags & FLAG_SKIP_COMP_BESTINTRA) && best_mode_index >= 0 && best_mbmode.ref_frame[0] == INTRA_FRAME) continue;