Simplifying celt_fir5() since x==y and mem[]={0}

Addresses issue https://github.com/xiph/opus/issues/58
This commit is contained in:
Jean-Marc Valin 2017-10-08 03:21:38 -04:00
parent 82e6cf79c1
commit 2da3721b16
No known key found for this signature in database
GPG key ID: 5E5DD9A36F9189C8

View file

@ -102,11 +102,9 @@ static void find_best_pitch(opus_val32 *xcorr, opus_val16 *y, int len,
} }
} }
static void celt_fir5(const opus_val16 *x, static void celt_fir5(opus_val16 *x,
const opus_val16 *num, const opus_val16 *num,
opus_val16 *y, int N)
int N,
opus_val16 *mem)
{ {
int i; int i;
opus_val16 num0, num1, num2, num3, num4; opus_val16 num0, num1, num2, num3, num4;
@ -116,11 +114,11 @@ static void celt_fir5(const opus_val16 *x,
num2=num[2]; num2=num[2];
num3=num[3]; num3=num[3];
num4=num[4]; num4=num[4];
mem0=mem[0]; mem0=0;
mem1=mem[1]; mem1=0;
mem2=mem[2]; mem2=0;
mem3=mem[3]; mem3=0;
mem4=mem[4]; mem4=0;
for (i=0;i<N;i++) for (i=0;i<N;i++)
{ {
opus_val32 sum = SHL32(EXTEND32(x[i]), SIG_SHIFT); opus_val32 sum = SHL32(EXTEND32(x[i]), SIG_SHIFT);
@ -134,13 +132,8 @@ static void celt_fir5(const opus_val16 *x,
mem2 = mem1; mem2 = mem1;
mem1 = mem0; mem1 = mem0;
mem0 = x[i]; mem0 = x[i];
y[i] = ROUND16(sum, SIG_SHIFT); x[i] = ROUND16(sum, SIG_SHIFT);
} }
mem[0]=mem0;
mem[1]=mem1;
mem[2]=mem2;
mem[3]=mem3;
mem[4]=mem4;
} }
@ -150,7 +143,7 @@ void pitch_downsample(celt_sig * OPUS_RESTRICT x[], opus_val16 * OPUS_RESTRICT x
int i; int i;
opus_val32 ac[5]; opus_val32 ac[5];
opus_val16 tmp=Q15ONE; opus_val16 tmp=Q15ONE;
opus_val16 lpc[4], mem[5]={0,0,0,0,0}; opus_val16 lpc[4];
opus_val16 lpc2[5]; opus_val16 lpc2[5];
opus_val16 c1 = QCONST16(.8f,15); opus_val16 c1 = QCONST16(.8f,15);
#ifdef FIXED_POINT #ifdef FIXED_POINT
@ -211,7 +204,7 @@ void pitch_downsample(celt_sig * OPUS_RESTRICT x[], opus_val16 * OPUS_RESTRICT x
lpc2[2] = lpc[2] + MULT16_16_Q15(c1,lpc[1]); lpc2[2] = lpc[2] + MULT16_16_Q15(c1,lpc[1]);
lpc2[3] = lpc[3] + MULT16_16_Q15(c1,lpc[2]); lpc2[3] = lpc[3] + MULT16_16_Q15(c1,lpc[2]);
lpc2[4] = MULT16_16_Q15(c1,lpc[3]); lpc2[4] = MULT16_16_Q15(c1,lpc[3]);
celt_fir5(x_lp, lpc2, x_lp, len>>1, mem); celt_fir5(x_lp, lpc2, len>>1);
} }
/* Pure C implementation. */ /* Pure C implementation. */