|
|
|
@ -114,12 +114,6 @@ static av_always_inline int wp_exp2(int16_t val) |
|
|
|
|
return neg ? -res : res; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static inline int get_unary(GetBitContext *gb){ |
|
|
|
|
int r=0; |
|
|
|
|
while(get_bits1(gb) && r<33)r++; |
|
|
|
|
return r; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// macros for manipulating median values
|
|
|
|
|
#define GET_MED(n) ((median[n] >> 4) + 1) |
|
|
|
|
#define DEC_MED(n) median[n] -= ((median[n] + (128>>n) - 2) / (128>>n)) * 2 |
|
|
|
@ -165,7 +159,7 @@ static int wv_get_value(WavpackContext *ctx, GetBitContext *gb, int *median, int |
|
|
|
|
if(ctx->zeroes) |
|
|
|
|
return 0; |
|
|
|
|
}else{ |
|
|
|
|
t = get_unary(gb); |
|
|
|
|
t = get_unary(gb, 0, 33); |
|
|
|
|
if(t >= 2) t = get_bits(gb, t - 1) | (1 << (t-1)); |
|
|
|
|
ctx->zeroes = t; |
|
|
|
|
if(ctx->zeroes){ |
|
|
|
@ -184,13 +178,13 @@ static int wv_get_value(WavpackContext *ctx, GetBitContext *gb, int *median, int |
|
|
|
|
t = 0; |
|
|
|
|
ctx->zero = 0; |
|
|
|
|
}else{ |
|
|
|
|
t = get_unary(gb); |
|
|
|
|
t = get_unary(gb, 0, 33); |
|
|
|
|
if(get_bits_count(gb) >= ctx->data_size){ |
|
|
|
|
*last = 1; |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
if(t == 16) { |
|
|
|
|
t2 = get_unary(gb); |
|
|
|
|
t2 = get_unary(gb, 0, 33); |
|
|
|
|
if(t2 < 2) t += t2; |
|
|
|
|
else t += get_bits(gb, t2 - 1) | (1 << (t2 - 1)); |
|
|
|
|
} |
|
|
|
|