Просмотр исходного кода

VP8: Unroll decoding segment update

David Conrad 14 лет назад
Родитель
Сommit
748f921ad1
1 измененных файлов с 4 добавлено и 3 удалено
  1. 4 3
      libavcodec/vp8.c

+ 4 - 3
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;