opus: put arrays frequently used by pulse decoding on the stack
speeds up decoding of a 64kbps test file by 14MHz on h300 (cf) and 1MHz on c200 (pp) Change-Id: I852cb66808676ea51109423f5b70cfc8782dd109
This commit is contained in:
parent
283277e5ab
commit
6d2ad505dc
2 changed files with 13 additions and 7 deletions
|
@ -35,6 +35,7 @@
|
||||||
#include "cwrs.h"
|
#include "cwrs.h"
|
||||||
#include "mathops.h"
|
#include "mathops.h"
|
||||||
#include "arch.h"
|
#include "arch.h"
|
||||||
|
#include "rate.h"
|
||||||
|
|
||||||
#ifdef CUSTOM_MODES
|
#ifdef CUSTOM_MODES
|
||||||
|
|
||||||
|
@ -632,11 +633,12 @@ void decode_pulses(int *_y,int _n,int _k,ec_dec *_dec)
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
VARDECL(opus_uint32,u);
|
/* VARDECL(opus_uint32,u);
|
||||||
SAVE_STACK;
|
SAVE_STACK;
|
||||||
ALLOC(u,_k+2U,opus_uint32);
|
ALLOC(u,_k+2U,opus_uint32); */
|
||||||
|
opus_uint32 u[MAX_PULSES+2];
|
||||||
cwrsi(_n,_k,ec_dec_uint(_dec,ncwrs_urow(_n,_k,u)),_y,u);
|
cwrsi(_n,_k,ec_dec_uint(_dec,ncwrs_urow(_n,_k,u)),_y,u);
|
||||||
RESTORE_STACK;
|
/* RESTORE_STACK; */
|
||||||
#ifndef SMALL_FOOTPRINT
|
#ifndef SMALL_FOOTPRINT
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -325,12 +325,16 @@ unsigned alg_unquant(celt_norm *X, int N, int K, int spread, int B,
|
||||||
int i;
|
int i;
|
||||||
opus_val32 Ryy;
|
opus_val32 Ryy;
|
||||||
unsigned collapse_mask;
|
unsigned collapse_mask;
|
||||||
VARDECL(int, iy);
|
/* VARDECL(int, iy);
|
||||||
SAVE_STACK;
|
SAVE_STACK; */
|
||||||
|
|
||||||
|
/* the difference between the last two values of eband5ms shifted by maxLM
|
||||||
|
which is 22 << 3 with the static mode */
|
||||||
|
int iy[176];
|
||||||
|
|
||||||
celt_assert2(K>0, "alg_unquant() needs at least one pulse");
|
celt_assert2(K>0, "alg_unquant() needs at least one pulse");
|
||||||
celt_assert2(N>1, "alg_unquant() needs at least two dimensions");
|
celt_assert2(N>1, "alg_unquant() needs at least two dimensions");
|
||||||
ALLOC(iy, N, int);
|
/* ALLOC(iy, N, int); */
|
||||||
decode_pulses(iy, N, K, dec);
|
decode_pulses(iy, N, K, dec);
|
||||||
Ryy = 0;
|
Ryy = 0;
|
||||||
i=0;
|
i=0;
|
||||||
|
@ -340,7 +344,7 @@ unsigned alg_unquant(celt_norm *X, int N, int K, int spread, int B,
|
||||||
normalise_residual(iy, X, N, Ryy, gain);
|
normalise_residual(iy, X, N, Ryy, gain);
|
||||||
exp_rotation(X, N, -1, B, K, spread);
|
exp_rotation(X, N, -1, B, K, spread);
|
||||||
collapse_mask = extract_collapse_mask(iy, N, B);
|
collapse_mask = extract_collapse_mask(iy, N, B);
|
||||||
RESTORE_STACK;
|
/* RESTORE_STACK; */
|
||||||
return collapse_mask;
|
return collapse_mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue