comparison 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
comparison
equal deleted inserted replaced
1254:604661d34c68 1255:625ccacd1113
3435 if (code < 0) 3435 if (code < 0)
3436 return 0xffff; 3436 return 0xffff;
3437 3437
3438 sign = get_bits1(&s->gb); 3438 sign = get_bits1(&s->gb);
3439 shift = f_code - 1; 3439 shift = f_code - 1;
3440 val = (code - 1) << shift; 3440 val = code;
3441 if (shift > 0) 3441 if (shift) {
3442 val = (val - 1) << shift;
3442 val |= get_bits(&s->gb, shift); 3443 val |= get_bits(&s->gb, shift);
3443 val++; 3444 val++;
3445 }
3444 if (sign) 3446 if (sign)
3445 val = -val; 3447 val = -val;
3446 val += pred; 3448 val += pred;
3447 3449
3448 /* modulo decoding */ 3450 /* modulo decoding */
3449 if (!s->h263_long_vectors) { 3451 if (!s->h263_long_vectors) {
3450 l = 1 << (f_code + 4); 3452 l = 1 << (f_code + 4);
3451 if (val < -l) { 3453 val = ((val + l)&(l*2-1)) - l;
3452 val += l<<1;
3453 } else if (val >= l) {
3454 val -= l<<1;
3455 }
3456 } else { 3454 } else {
3457 /* horrible h263 long vector mode */ 3455 /* horrible h263 long vector mode */
3458 if (pred < -31 && val < -63) 3456 if (pred < -31 && val < -63)
3459 val += 64; 3457 val += 64;
3460 if (pred > 32 && val > 63) 3458 if (pred > 32 && val > 63)