Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.xiph.org/xiph/opus.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Marc Valin <jmvalin@amazon.com>2023-11-25 02:02:35 +0300
committerJean-Marc Valin <jmvalin@amazon.com>2023-11-25 02:02:35 +0300
commitddbdbec444b07fc223ecad73e5c2467c2846aec9 (patch)
tree00cee935ca66ada5ddcefd9487e6d17f0822e96b
parent176507e4fcb4c6376af5ec465f23692ce84495fd (diff)
Optimize biquad() to reduce dependency chains
-rw-r--r--dnn/lpcnet_enc.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/dnn/lpcnet_enc.c b/dnn/lpcnet_enc.c
index e9178b55..12908365 100644
--- a/dnn/lpcnet_enc.c
+++ b/dnn/lpcnet_enc.c
@@ -83,14 +83,25 @@ static void frame_analysis(LPCNetEncState *st, kiss_fft_cpx *X, float *Ex, const
static void biquad(float *y, float mem[2], const float *x, const float *b, const float *a, int N) {
int i;
+ float mem0, mem1;
+ mem0 = mem[0];
+ mem1 = mem[1];
for (i=0;i<N;i++) {
- float xi, yi;
+ float xi, yi, mem00;
xi = x[i];
- yi = x[i] + mem[0];
- mem[0] = mem[1] + (b[0]*xi - a[0]*yi);
- mem[1] = (b[1]*xi - a[1]*yi);
+ yi = x[i] + mem0;
+ mem00 = mem0;
+ /* Original code:
+ mem0 = mem1 + (b[0]*xi - a[0]*yi);
+ mem1 = (b[1]*xi - a[1]*yi);
+ Modified to reduce dependency chains:
+ */
+ mem0 = (b[0]-a[0])*xi + mem1 - a[0]*mem0;
+ mem1 = (b[1]-a[1])*xi + 1e-30f - a[1]*mem00;
y[i] = yi;
}
+ mem[0] = mem0;
+ mem[1] = mem1;
}
#define celt_log10(x) (0.3010299957f*celt_log2(x))