Displaying 12 results from an estimated 12 matches for "float_div32".
2006 May 02
3
Re: speex echo cancellation limitations
...alue 0x8000 is avoided in the input.
I think we can safely assume that -- or actually enforce that because it
would likely break other stuff.
> Even with this fix there is definitely some bad stuff going on; the output
> data is corrupted looking.
> I put assertions into FLOAT_MUL32U(), FLOAT_DIV32_FLOAT() and FLOAT_DIV32() to
> assert that the "a" arguments were non-negative.
Technically these functions *should* work (they don't at the moment) for
negative inputs, but mdf.c isn't supposed to use that in the first
place. I guess it comes down to the same problem as abo...
2006 May 09
2
Speex echo canceller on TI C55 DSP
...> able to fit it in the production build without some trimming.
> >
> > Yes, there may be a bit of memory reduction possible here. Of course,
> > decreasing the tail length is also a rather easy way.
> >
> >> When I run the build, it goes into an infinite loop in FLOAT_DIV32 (mdf.c
> >> line 660), which occurs because adapt_rate is < 0, which happens when
> >> FLOAT_EXTRACT16 gets the input {0x7ff0, 0xfffb}. The rounding is causing
> >> the result to go negative. I worked around this by changing
> >
> > I think that was menti...
2006 May 08
1
Speex echo canceller on TI C55 DSP
...ory
> requirements were a lot more than I had hoped (>20kbytes of dynamic data
> memory for block size=128, tail length = 1024), and I will probably not be
> able to fit it in the production build without some trimming.
>
> When I run the build, it goes into an infinite loop in FLOAT_DIV32 (mdf.c
> line 660), which occurs because adapt_rate is < 0, which happens when
> FLOAT_EXTRACT16 gets the input {0x7ff0, 0xfffb}. The rounding is causing
> the result to go negative. I worked around this by changing
>
> return (a.m+(1<<(-a.e-1)))>>-a.e;
>...
2006 May 01
2
Re: speex echo cancellation limitations
> I am writing to gain a better understanding of the limitations of speex echo
> cancellation, esp. with respect to the fixed point implementation.
> If these limitations have been documented elsewhere already, please let me
> know!
Nothing officially documented, sorry.
> I observe experimentally that when one or both of the echo or ref data for
> speex_echo_cancel() have
2006 May 09
2
Speex echo canceller on TI C55 DSP
...peak amplitude during the
> second of two brief speech bursts). So, my problem must again be related to
> the 16-bit processing on the C5X DSPs.
Good. At least we've narrowed it down a bit.
> Also, the line where it is hanging is:
> st->power_1[i] =
> FLOAT_SHL(FLOAT_DIV32_FLOAT(MULT16_32_Q15(M_1,r),FLOAT_MUL32U(e,st->power[i]+10)),WEIGHT_SHIFT+16);
Actually, I just found a 16-bit bug in FLOAT_DIV32_FLOAT. Could you
update svn and let me know if it works?
> and it is e that is in the denominator, not r (sorry for the confusion). I
> can now run the simul...
2006 May 08
5
Speex echo canceller on TI C55 DSP
...il length = 1024), and I will probably not be
> able to fit it in the production build without some trimming.
Yes, there may be a bit of memory reduction possible here. Of course,
decreasing the tail length is also a rather easy way.
> When I run the build, it goes into an infinite loop in FLOAT_DIV32 (mdf.c
> line 660), which occurs because adapt_rate is < 0, which happens when
> FLOAT_EXTRACT16 gets the input {0x7ff0, 0xfffb}. The rounding is causing
> the result to go negative. I worked around this by changing
I think that was mentioned in the previous thread...
>...
2006 May 08
0
Speex echo canceller on TI C55 DSP
.... The code and data memory
requirements were a lot more than I had hoped (>20kbytes of dynamic data
memory for block size=128, tail length = 1024), and I will probably not be
able to fit it in the production build without some trimming.
When I run the build, it goes into an infinite loop in FLOAT_DIV32 (mdf.c
line 660), which occurs because adapt_rate is < 0, which happens when
FLOAT_EXTRACT16 gets the input {0x7ff0, 0xfffb}. The rounding is causing
the result to go negative. I worked around this by changing
return (a.m+(1<<(-a.e-1)))>>-a.e;
to
return (((spx_uint1...
2006 May 08
0
Speex echo canceller on TI C55 DSP
...bly not
>> be
>> able to fit it in the production build without some trimming.
>
> Yes, there may be a bit of memory reduction possible here. Of course,
> decreasing the tail length is also a rather easy way.
>
>> When I run the build, it goes into an infinite loop in FLOAT_DIV32 (mdf.c
>> line 660), which occurs because adapt_rate is < 0, which happens when
>> FLOAT_EXTRACT16 gets the input {0x7ff0, 0xfffb}. The rounding is causing
>> the result to go negative. I worked around this by changing
>
> I think that was mentioned in the previous thre...
2006 May 02
0
Re: speex echo cancellation limitations
...x++ * *y++)>>1);
part = part + ((*x++ * *y++)>>1);
sum += part>>5;
I am assuming that the value 0x8000 is avoided in the input.
Even with this fix there is definitely some bad stuff going on; the output
data is corrupted looking.
I put assertions into FLOAT_MUL32U(), FLOAT_DIV32_FLOAT() and FLOAT_DIV32() to
assert that the "a" arguments were non-negative. Using some real life data, i
found that i had to shift the real life data right by two (i shifted both
inputs by same amount) to avoid asserting; shifting by just one almost worked
but failed for some case (...
2006 May 09
0
Speex echo canceller on TI C55 DSP
...4 simulator, and the echo was
canceled nicely (about 10:1 reduction in the peak amplitude during the
second of two brief speech bursts). So, my problem must again be related to
the 16-bit processing on the C5X DSPs.
Also, the line where it is hanging is:
st->power_1[i] =
FLOAT_SHL(FLOAT_DIV32_FLOAT(MULT16_32_Q15(M_1,r),FLOAT_MUL32U(e,st->power[i]+10)),WEIGHT_SHIFT+16);
and it is e that is in the denominator, not r (sorry for the confusion). I
can now run the simulations side-by-side and look for differences.
- Jim
Le lundi 08 mai 2006 ? 20:05 -0400, Jim Crichton a ?crit :
> &...
2006 May 10
0
Speex echo canceller on TI C55 DSP
...ak amplitude during the
> second of two brief speech bursts). So, my problem must again be related
> to
> the 16-bit processing on the C5X DSPs.
Good. At least we've narrowed it down a bit.
> Also, the line where it is hanging is:
> st->power_1[i] =
> FLOAT_SHL(FLOAT_DIV32_FLOAT(MULT16_32_Q15(M_1,r),FLOAT_MUL32U(e,st->power[i]+10)),WEIGHT_SHIFT+16);
Actually, I just found a 16-bit bug in FLOAT_DIV32_FLOAT. Could you
update svn and let me know if it works?
> and it is e that is in the denominator, not r (sorry for the confusion).
> I
> can now run the s...
2006 May 10
2
Speex echo canceller on TI C55 DSP
...wo brief speech bursts). So, my problem must again be related
> > to
> > the 16-bit processing on the C5X DSPs.
>
> Good. At least we've narrowed it down a bit.
>
> > Also, the line where it is hanging is:
> > st->power_1[i] =
> > FLOAT_SHL(FLOAT_DIV32_FLOAT(MULT16_32_Q15(M_1,r),FLOAT_MUL32U(e,st->power[i]+10)),WEIGHT_SHIFT+16);
>
> Actually, I just found a 16-bit bug in FLOAT_DIV32_FLOAT. Could you
> update svn and let me know if it works?
>
> > and it is e that is in the denominator, not r (sorry for the confusion).
>...