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.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/vp9/decoder/vp9_decodemv.c b/vp9/decoder/vp9_decodemv.c
index 801e41a43..5352a0839 100644
--- a/vp9/decoder/vp9_decodemv.c
+++ b/vp9/decoder/vp9_decodemv.c
@@ -75,8 +75,22 @@ static MB_PREDICTION_MODE read_uv_mode(vp9_reader *r, const vp9_prob *p) {
static int read_mb_segid(vp9_reader *r, MACROBLOCKD *xd) {
const vp9_prob *const p = xd->mb_segment_tree_probs;
- return vp9_read(r, p[0]) ? 2 + vp9_read(r, p[2])
- : vp9_read(r, p[1]);
+ int ret_val;
+
+ if (vp9_read(r, p[0])) {
+ if (vp9_read(r, p[4])) {
+ ret_val = 6 + vp9_read(r, p[6]);
+ } else {
+ ret_val = 4 + vp9_read(r, p[5]);
+ }
+ } else {
+ if (vp9_read(r, p[1])) {
+ ret_val = 2 + vp9_read(r, p[3]);
+ } else {
+ ret_val = vp9_read(r, p[2]);
+ }
+ }
+ return ret_val;
}
static void set_segment_id(VP9_COMMON *cm, MB_MODE_INFO *mbmi,