|
|
* Dequantize samples (includes huffman decoding) | * Dequantize samples (includes huffman decoding) |
*/ | */ |
/* 24 is enough because tab13 has max. a 19 bit huffvector */ | /* 24 is enough because tab13 has max. a 19 bit huffvector */ |
#define BITSHIFT ((sizeof(long)-1)*8) |
#define BITSHIFT ((sizeof(int)-1)*8) |
#define REFRESH_MASK \ | #define REFRESH_MASK \ |
while(num < BITSHIFT) { \ | while(num < BITSHIFT) { \ |
mask |= getbyte()<<(BITSHIFT-num); \ | mask |= getbyte()<<(BITSHIFT-num); \ |
|
|
int *me; | int *me; |
| |
int num=getbitoffset(); | int num=getbitoffset(); |
long mask = (long) getbits(num)<<(BITSHIFT+8-num); |
int mask = (int) getbits(num)<<(BITSHIFT+8-num); |
part2remain -= num; | part2remain -= num; |
| |
{ | { |
|
|
if(x == 15 && h->linbits) { | if(x == 15 && h->linbits) { |
max[lwin] = cb; | max[lwin] = cb; |
REFRESH_MASK; | REFRESH_MASK; |
x += ((unsigned long) mask) >> (BITSHIFT+8-h->linbits); |
x += ((unsigned int) mask) >> (BITSHIFT+8-h->linbits); |
num -= h->linbits+1; | num -= h->linbits+1; |
mask <<= h->linbits; | mask <<= h->linbits; |
if(mask < 0) | if(mask < 0) |
|
|
if(y == 15 && h->linbits) { | if(y == 15 && h->linbits) { |
max[lwin] = cb; | max[lwin] = cb; |
REFRESH_MASK; | REFRESH_MASK; |
y += ((unsigned long) mask) >> (BITSHIFT+8-h->linbits); |
y += ((unsigned int) mask) >> (BITSHIFT+8-h->linbits); |
num -= h->linbits+1; | num -= h->linbits+1; |
mask <<= h->linbits; | mask <<= h->linbits; |
if(mask < 0) | if(mask < 0) |
|
|
if (x == 15 && h->linbits) { | if (x == 15 && h->linbits) { |
max = cb; | max = cb; |
REFRESH_MASK; | REFRESH_MASK; |
x += ((unsigned long) mask) >> (BITSHIFT+8-h->linbits); |
x += ((unsigned int) mask) >> (BITSHIFT+8-h->linbits); |
num -= h->linbits+1; | num -= h->linbits+1; |
mask <<= h->linbits; | mask <<= h->linbits; |
if(mask < 0) | if(mask < 0) |
|
|
if (y == 15 && h->linbits) { | if (y == 15 && h->linbits) { |
max = cb; | max = cb; |
REFRESH_MASK; | REFRESH_MASK; |
y += ((unsigned long) mask) >> (BITSHIFT+8-h->linbits); |
y += ((unsigned int) mask) >> (BITSHIFT+8-h->linbits); |
num -= h->linbits+1; | num -= h->linbits+1; |
mask <<= h->linbits; | mask <<= h->linbits; |
if(mask < 0) | if(mask < 0) |