| Index: celt/cwrs.c
|
| diff --git a/celt/cwrs.c b/celt/cwrs.c
|
| index ad980cc7d81fed14554d21d44727725f53584dc1..2fa9f89cd6c98c54f1cd63767f4d2f2c2bfc14d3 100644
|
| --- a/celt/cwrs.c
|
| +++ b/celt/cwrs.c
|
| @@ -460,10 +460,12 @@ void encode_pulses(const int *_y,int _n,int _k,ec_enc *_enc){
|
| ec_enc_uint(_enc,icwrs(_n,_y),CELT_PVQ_V(_n,_k));
|
| }
|
|
|
| -static void cwrsi(int _n,int _k,opus_uint32 _i,int *_y){
|
| +static opus_val32 cwrsi(int _n,int _k,opus_uint32 _i,int *_y){
|
| opus_uint32 p;
|
| int s;
|
| int k0;
|
| + opus_int16 val;
|
| + opus_val32 yy=0;
|
| celt_assert(_k>0);
|
| celt_assert(_n>1);
|
| while(_n>2){
|
| @@ -487,7 +489,9 @@ static void cwrsi(int _n,int _k,opus_uint32 _i,int *_y){
|
| }
|
| else for(p=row[_k];p>_i;p=row[_k])_k--;
|
| _i-=p;
|
| - *_y++=(k0-_k+s)^s;
|
| + val=(k0-_k+s)^s;
|
| + *_y++=val;
|
| + yy=MAC16_16(yy,val,val);
|
| }
|
| /*Lots of dimensions case:*/
|
| else{
|
| @@ -507,7 +511,9 @@ static void cwrsi(int _n,int _k,opus_uint32 _i,int *_y){
|
| do p=CELT_PVQ_U_ROW[--_k][_n];
|
| while(p>_i);
|
| _i-=p;
|
| - *_y++=(k0-_k+s)^s;
|
| + val=(k0-_k+s)^s;
|
| + *_y++=val;
|
| + yy=MAC16_16(yy,val,val);
|
| }
|
| }
|
| _n--;
|
| @@ -519,14 +525,19 @@ static void cwrsi(int _n,int _k,opus_uint32 _i,int *_y){
|
| k0=_k;
|
| _k=(_i+1)>>1;
|
| if(_k)_i-=2*_k-1;
|
| - *_y++=(k0-_k+s)^s;
|
| + val=(k0-_k+s)^s;
|
| + *_y++=val;
|
| + yy=MAC16_16(yy,val,val);
|
| /*_n==1*/
|
| s=-(int)_i;
|
| - *_y=(_k+s)^s;
|
| + val=(_k+s)^s;
|
| + *_y=val;
|
| + yy=MAC16_16(yy,val,val);
|
| + return yy;
|
| }
|
|
|
| -void decode_pulses(int *_y,int _n,int _k,ec_dec *_dec){
|
| - cwrsi(_n,_k,ec_dec_uint(_dec,CELT_PVQ_V(_n,_k)),_y);
|
| +opus_val32 decode_pulses(int *_y,int _n,int _k,ec_dec *_dec){
|
| + return cwrsi(_n,_k,ec_dec_uint(_dec,CELT_PVQ_V(_n,_k)),_y);
|
| }
|
|
|
| #else /* SMALL_FOOTPRINT */
|
| @@ -591,8 +602,10 @@ static opus_uint32 ncwrs_urow(unsigned _n,unsigned _k,opus_uint32 *_u){
|
| _y: Returns the vector of pulses.
|
| _u: Must contain entries [0..._k+1] of row _n of U() on input.
|
| Its contents will be destructively modified.*/
|
| -static void cwrsi(int _n,int _k,opus_uint32 _i,int *_y,opus_uint32 *_u){
|
| +static opus_val32 cwrsi(int _n,int _k,opus_uint32 _i,int *_y,opus_uint32 *_u){
|
| int j;
|
| + opus_int16 val;
|
| + opus_val32 yy=0;
|
| celt_assert(_n>0);
|
| j=0;
|
| do{
|
| @@ -607,10 +620,13 @@ static void cwrsi(int _n,int _k,opus_uint32 _i,int *_y,opus_uint32 *_u){
|
| while(p>_i)p=_u[--_k];
|
| _i-=p;
|
| yj-=_k;
|
| - _y[j]=(yj+s)^s;
|
| + val=(yj+s)^s;
|
| + _y[j]=val;
|
| + yy=MAC16_16(yy,val,val);
|
| uprev(_u,_k+2,0);
|
| }
|
| while(++j<_n);
|
| + return yy;
|
| }
|
|
|
| /*Returns the index of the given combination of K elements chosen from a set
|
| @@ -685,13 +701,15 @@ void encode_pulses(const int *_y,int _n,int _k,ec_enc *_enc){
|
| RESTORE_STACK;
|
| }
|
|
|
| -void decode_pulses(int *_y,int _n,int _k,ec_dec *_dec){
|
| +opus_val32 decode_pulses(int *_y,int _n,int _k,ec_dec *_dec){
|
| VARDECL(opus_uint32,u);
|
| + int ret;
|
| SAVE_STACK;
|
| celt_assert(_k>0);
|
| ALLOC(u,_k+2U,opus_uint32);
|
| - cwrsi(_n,_k,ec_dec_uint(_dec,ncwrs_urow(_n,_k,u)),_y,u);
|
| + ret = cwrsi(_n,_k,ec_dec_uint(_dec,ncwrs_urow(_n,_k,u)),_y,u);
|
| RESTORE_STACK;
|
| + return ret;
|
| }
|
|
|
| #endif /* SMALL_FOOTPRINT */
|
|
|