diff --git a/libcelt/entcode.c b/libcelt/entcode.c index fe356061..205f1be2 100644 --- a/libcelt/entcode.c +++ b/libcelt/entcode.c @@ -55,7 +55,7 @@ int ec_ilog64(ec_uint64 _v){ int ret; int m; ret=!!_v; - m=!!(_v&0xFFFFFFFF00000000)<<5; + m=!!(_v&((ec_uint64)0xFFFFFFFF)<<32)<<5; v=(ec_uint32)(_v>>m); ret|=m; m=!!(v&0xFFFF0000)<<4; diff --git a/libcelt/entcode.h b/libcelt/entcode.h index 3f55f1cf..86b7f2bd 100644 --- a/libcelt/entcode.h +++ b/libcelt/entcode.h @@ -7,6 +7,7 @@ +typedef celt_int32_t ec_int32; typedef celt_uint32_t ec_uint32; typedef celt_uint64_t ec_uint64; typedef struct ec_byte_buffer ec_byte_buffer; diff --git a/libcelt/laplace.c b/libcelt/laplace.c index c35faf3f..b06b851d 100644 --- a/libcelt/laplace.c +++ b/libcelt/laplace.c @@ -37,12 +37,13 @@ static int ec_laplace_get_total(int decay) { - return (1<<30)/((1<<14) - decay) - (1<<15) + 1; + return (((ec_uint32)1)<<30)/((((ec_uint32)1)<<14) - decay) - (((ec_uint32)1)<<15) + 1; } void ec_laplace_encode(ec_enc *enc, int value, int decay) { - int i, fl, fs, ft; + int i; + ec_int32 fl, fs, ft; int s = 0; if (value < 0) { @@ -50,8 +51,8 @@ void ec_laplace_encode(ec_enc *enc, int value, int decay) value = -value; } ft = ec_laplace_get_total(decay); - fl = -(1<<15); - fs = 1<<15; + fl = -(((ec_uint32)1)<<15); + fs = ((ec_uint32)1)<<15; for (i=0;i= fh && fs != 0) { diff --git a/libcelt/mfrngcod.h b/libcelt/mfrngcod.h index a45e5b10..17c5151e 100644 --- a/libcelt/mfrngcod.h +++ b/libcelt/mfrngcod.h @@ -13,18 +13,18 @@ /*Bits to shift by to move a symbol into the high-order position.*/ # define EC_CODE_SHIFT (EC_CODE_BITS-EC_SYM_BITS-1) /*Carry bit of the high-order range symbol.*/ -# define EC_CODE_TOP (1U<>EC_SYM_BITS) /*Code for which propagating carries are possible.*/ -# define EC_CODE_CARRY (EC_SYM_MAX< budget) + if (ec_enc_tell(enc, 0) - bits +EC_ILOG(frac[i])> budget) break; q2 = (int)floor(offset); if (q2 > frac[i]-1) @@ -145,7 +145,7 @@ static void unquant_energy_mono(const CELTMode *m, float *eBands, float *oldEBan { int q2; float offset; - if (ec_dec_tell(dec, 0) - bits +ec_ilog(frac[i])> budget) + if (ec_dec_tell(dec, 0) - bits +EC_ILOG(frac[i])> budget) break; q2 = ec_dec_uint(dec, frac[i]); offset = ((q2+.5)/frac[i])-.5;