diff h263.c @ 1255:625ccacd1113 libavcodec

decode motion & modulo optimize patch by (BERO <bero at geocities dot co dot jp>)
author michaelni
date Wed, 14 May 2003 01:08:02 +0000
parents 604661d34c68
children 6defe392d5d2
line wrap: on
line diff
--- a/h263.c	Wed May 14 00:32:22 2003 +0000
+++ b/h263.c	Wed May 14 01:08:02 2003 +0000
@@ -3437,10 +3437,12 @@
 
     sign = get_bits1(&s->gb);
     shift = f_code - 1;
-    val = (code - 1) << shift;
-    if (shift > 0)
+    val = code;
+    if (shift) {
+        val = (val - 1) << shift;
         val |= get_bits(&s->gb, shift);
-    val++;
+        val++;
+    }
     if (sign)
         val = -val;
     val += pred;
@@ -3448,11 +3450,7 @@
     /* modulo decoding */
     if (!s->h263_long_vectors) {
         l = 1 << (f_code + 4);
-        if (val < -l) {
-            val += l<<1;
-        } else if (val >= l) {
-            val -= l<<1;
-        }
+        val = ((val + l)&(l*2-1)) - l;
     } else {
         /* horrible h263 long vector mode */
         if (pred < -31 && val < -63)