From: Jingning Han Date: Mon, 15 Sep 2014 18:20:30 +0000 (-0700) Subject: Add ARF validation for compound inter mode check X-Git-Tag: v1.4.0~769^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f1581b3b2ed21b18c37b2fdbe62494f1945d0ca4;p=libvpx 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 --- 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;