From 748f921ad1997a464fb8963d0ba2c5bb5e036b1b Mon Sep 17 00:00:00 2001 From: David Conrad Date: Sat, 24 Jul 2010 22:44:31 -0400 Subject: [PATCH] VP8: Unroll decoding segment update --- libavcodec/vp8.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libavcodec/vp8.c b/libavcodec/vp8.c index 8c0380315e..9b07608078 100644 --- a/libavcodec/vp8.c +++ b/libavcodec/vp8.c @@ -627,9 +627,10 @@ void decode_mb_mode(VP8Context *s, VP8Macroblock *mb, int mb_x, int mb_y, uint8_ { VP56RangeCoder *c = &s->c; - if (s->segmentation.update_map) - *segment = vp8_rac_get_tree(c, vp8_segmentid_tree, s->prob->segmentid); - else + if (s->segmentation.update_map) { + int bit = vp56_rac_get_prob(c, s->prob->segmentid[0]); + *segment = vp56_rac_get_prob(c, s->prob->segmentid[1+bit]) + 2*bit; + } else *segment = ref ? *ref : *segment; s->segment = *segment;