void ec_dec_update(ec_dec *_this,unsigned _fl,unsigned _fh,unsigned _ft){ ec_uint32 s; s=IMUL32(_this->nrm,(_ft-_fh)); _this->dif-=s; _this->rng=_fl>0?IMUL32(_this->nrm,(_fh-_fl)):_this->rng-s; ec_dec_normalize(_this); }
void ec_dec_update(ec_dec *_this,unsigned _fl,unsigned _fh,unsigned _ft){ opus_uint32 s; s=IMUL32(_this->ext,_ft-_fh); _this->val-=s; _this->rng=_fl>0?IMUL32(_this->ext,_fh-_fl):_this->rng-s; ec_dec_normalize(_this); }
int ec_dec_icdf(ec_dec *_this,const unsigned char *_icdf,unsigned _ftb){ opus_uint32 r; opus_uint32 d; opus_uint32 s; opus_uint32 t; int ret; s=_this->rng; d=_this->val; r=s>>_ftb; ret=-1; do{ t=s; s=IMUL32(r,_icdf[++ret]); } while(d<s); _this->val=d-s; _this->rng=t-s; ec_dec_normalize(_this); return ret; }