[Speex-dev] re: decoder issue in sb_celp

Tom Harper tharper at sightspeed.com
Wed Mar 14 12:44:59 PDT 2007


Jean Marc-

Thanks for looking into this- I think I needed to give you a
bit more info!  Sorry for such a vague initial report.

So most of these problems seem to be coming
from the lsp_to_lpc function.  In particular the following:
             xout1 = xin1 - 2.f*x_freq[i2] * *n1 + *n2;
             xout2 = xin2 - 2.f*x_freq[i2+1] * *n3 + *n4;

... in the floating point version this code can produce xout1 or
xout2 that go to INF.

That is the main issue- I have also seen the IIR filter go wonky
occasionally, which is what is corrupting st->mem_sp.  Usually
this is just because there are some odd values in st->interp_qlpc.
However it seems like it can also just happen sometimes as
output of the _mm_mul_ps multiply goes to INF (this can also
happen in the non-sse code).  I am working on figuring out why
this is happening.

With the new changes also filter_ratio went to 0 in one of my
tests, in part because rh was INF.  This is around the section
where I think you made changes to how you calculate st->pi_gain[sub].
This caused scale to go to INF further down in the code when
scale is calculated.  Again, this I think stems from the lpc function
producing some INF and IND values so I think that is just a symptom.

I can add bounds checking to the SSE code but I don't know
what to do regarding the lpc code.

When this happens the easy fix is to just reset the upper band to
VERY_SMALL and also to reset mem_sp but I am hoping that this
won't be needed if the lpc values were in the right range.

Tom


At 07:29 AM 3/14/2007, you wrote:
>While looking for the problem, I ended up fixing two other things that
>could be related. Can you test current svn and tell me if the problem
>still occurs? Is so, can you tell me exactly what options you've been
>using (sampling rate, bit-rate, vbr, vad, dtx, ...)?



More information about the Speex-dev mailing list