summaryrefslogtreecommitdiff
path: root/celt/entenc.c
diff options
context:
space:
mode:
Diffstat (limited to 'celt/entenc.c')
-rw-r--r--celt/entenc.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/celt/entenc.c b/celt/entenc.c
index f1750d25..69c6f835 100644
--- a/celt/entenc.c
+++ b/celt/entenc.c
@@ -172,6 +172,17 @@ void ec_enc_icdf(ec_enc *_this,int _s,const unsigned char *_icdf,unsigned _ftb){
ec_enc_normalize(_this);
}
+void ec_enc_icdf16(ec_enc *_this,int _s,const opus_uint16 *_icdf,unsigned _ftb){
+ opus_uint32 r;
+ r=_this->rng>>_ftb;
+ if(_s>0){
+ _this->val+=_this->rng-IMUL32(r,_icdf[_s-1]);
+ _this->rng=IMUL32(r,_icdf[_s-1]-_icdf[_s]);
+ }
+ else _this->rng-=IMUL32(r,_icdf[_s]);
+ ec_enc_normalize(_this);
+}
+
void ec_enc_uint(ec_enc *_this,opus_uint32 _fl,opus_uint32 _ft){
unsigned ft;
unsigned fl;