diff options
author | Paul Wilkins <paulwilkins@google.com> | 2013-04-24 13:04:45 +0100 |
---|---|---|
committer | Paul Wilkins <paulwilkins@google.com> | 2013-04-24 16:36:47 +0100 |
commit | 31ee193a9ccfccef65dad0fba3462b9f83db97fa (patch) | |
tree | a2d5f3cfb21c928911173031951c78604f37284c /vp9/decoder | |
parent | c77aff1286df07fb9f3b49feaacf384703813eca (diff) | |
download | libvpx-31ee193a9ccfccef65dad0fba3462b9f83db97fa.tar libvpx-31ee193a9ccfccef65dad0fba3462b9f83db97fa.tar.gz libvpx-31ee193a9ccfccef65dad0fba3462b9f83db97fa.tar.bz2 libvpx-31ee193a9ccfccef65dad0fba3462b9f83db97fa.zip |
Extension of segmentation to 8 segments.
Also some further simplification following removal
of top node code.
There is an issue in regards to the shared file vp8cx.h
in regard to the roi_map as this interface assumes that
there are only 4 segments. I have left the value here as
4 for now meaning that the roi_map interface is broken
for VP9.
Note that this change would have been easier if I hadn't
had to search for hard wire instances of the number 4
and <= 3.
Change-Id: Ia8b6deea4be4dbd20deb1656e689dd43a5f190e8
Diffstat (limited to 'vp9/decoder')
-rw-r--r-- | vp9/decoder/vp9_decodemv.c | 18 | ||||
-rw-r--r-- | vp9/decoder/vp9_decodframe.c | 2 |
2 files changed, 17 insertions, 3 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, diff --git a/vp9/decoder/vp9_decodframe.c b/vp9/decoder/vp9_decodframe.c index 2bd200ef7..864eb82fd 100644 --- a/vp9/decoder/vp9_decodframe.c +++ b/vp9/decoder/vp9_decodframe.c @@ -1107,7 +1107,7 @@ static void setup_segmentation(VP9_COMMON *pc, MACROBLOCKD *xd, vp9_reader *r) { xd->allow_implicit_segment_update = vp9_read_bit(r); #endif if (xd->update_mb_segmentation_map) { - for (i = 0; i < MB_FEATURE_TREE_PROBS; i++) + for (i = 0; i < MB_SEG_TREE_PROBS; i++) xd->mb_segment_tree_probs[i] = vp9_read_bit(r) ? vp9_read_prob(r) : MAX_PROB; |