summaryrefslogtreecommitdiff
path: root/vp9/decoder/vp9_decodemv.c
diff options
context:
space:
mode:
Diffstat (limited to 'vp9/decoder/vp9_decodemv.c')
-rw-r--r--vp9/decoder/vp9_decodemv.c19
1 files changed, 4 insertions, 15 deletions
diff --git a/vp9/decoder/vp9_decodemv.c b/vp9/decoder/vp9_decodemv.c
index cb16ccdf3..e0f128f57 100644
--- a/vp9/decoder/vp9_decodemv.c
+++ b/vp9/decoder/vp9_decodemv.c
@@ -241,22 +241,11 @@ static void read_ref_frame(VP9D_COMP *pbi, vp9_reader *r,
int segment_id, MV_REFERENCE_FRAME ref_frame[2]) {
VP9_COMMON *const cm = &pbi->common;
MACROBLOCKD *const xd = &pbi->mb;
- int seg_ref_count = 0;
const int seg_ref_active = vp9_segfeature_active(xd, segment_id,
SEG_LVL_REF_FRAME);
- const int intra = vp9_check_segref(xd, segment_id, INTRA_FRAME);
- const int last = vp9_check_segref(xd, segment_id, LAST_FRAME);
- const int golden = vp9_check_segref(xd, segment_id, GOLDEN_FRAME);
- const int altref = vp9_check_segref(xd, segment_id, ALTREF_FRAME);
-
- // If segment coding enabled does the segment allow for more than one
- // possible reference frame
- if (seg_ref_active)
- seg_ref_count = intra + last + golden + altref;
-
- // Segment reference frame features not available or allows for
- // multiple reference frame options
- if (!seg_ref_active || seg_ref_count > 1) {
+
+ // Segment reference frame features not available.
+ if (!seg_ref_active) {
int is_comp;
int comp_ctx = vp9_get_pred_context(cm, xd, PRED_COMP_INTER_INTER);
@@ -291,7 +280,7 @@ static void read_ref_frame(VP9D_COMP *pbi, vp9_reader *r,
}
}
} else {
- ref_frame[0] = last ? LAST_FRAME : golden ? GOLDEN_FRAME : ALTREF_FRAME;
+ ref_frame[0] = vp9_get_segdata(xd, segment_id, SEG_LVL_REF_FRAME);
ref_frame[1] = NONE;
}
}