Frank Lorenz
2010-Feb-04 13:51 UTC
[Speex-dev] Fwd: Re: Fixed Point on wideband-mode: Single Frame loss on 2000 Hz sine causes "freak off"
O.k., some more info:
I just tested bandwidth widening to fix this. But I need to go to gamma values
below 0.9 to become stable -- clearly too much widening, I think.
I looked inside the Levinson-Durbin algorithm next. The lines
#ifdef FIXED_POINT
r = DIV32_16(rr+PSHR32(error,1),ADD16(error,8));
#else
r = rr/(error+.003*ac[0]);
#endif
look interesting. While for floating point, .003*ac[0] is added to error, for
fixed point, a constant value of 8 is added. When I alter this value, I get an
output without "freaking out" for values 1,2,3 and 5. for 4, 6 and 7
the system is still instable.
I tired to change the line to
r = DIV32_16(rr+PSHR32(error,1),MULT16_16(ac[0],98));
but without success. Maybe, precision is too low...
Can you give me some hint how to proceed here?
best regards,
Frank
______________________________________________________
GRATIS f?r alle WEB.DE-Nutzer: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://movieflat.web.de
Jean-Marc Valin
2010-Feb-04 14:47 UTC
[Speex-dev] Fwd: Re: Fixed Point on wideband-mode: Single Frame loss on 2000 Hz sine causes "freak off"
Now that's an interesting analysis! Thanks a lot for spending the time to
dig
into this. I now think the whole idea of adding a small value to the error was
misguided from the beginning. Instead, what the code should probably do is just
stop once the error has reached a small enough value (and set the remaining LPC
coefs to zero).
Jean-Marc
Quoting Frank Lorenz <Frank_wtal at web.de>:
> O.k., some more info:
>
> I just tested bandwidth widening to fix this. But I need to go to gamma
> values below 0.9 to become stable -- clearly too much widening, I think.
>
> I looked inside the Levinson-Durbin algorithm next. The lines
>
> #ifdef FIXED_POINT
> r = DIV32_16(rr+PSHR32(error,1),ADD16(error,8));
> #else
> r = rr/(error+.003*ac[0]);
> #endif
>
> look interesting. While for floating point, .003*ac[0] is added to error,
for
> fixed point, a constant value of 8 is added. When I alter this value, I get
> an output without "freaking out" for values 1,2,3 and 5. for 4, 6
and 7 the
> system is still instable.
>
> I tired to change the line to
> r = DIV32_16(rr+PSHR32(error,1),MULT16_16(ac[0],98));
> but without success. Maybe, precision is too low...
>
> Can you give me some hint how to proceed here?
>
> best regards,
> Frank
>
> ______________________________________________________
> GRATIS f?r alle WEB.DE-Nutzer: Die maxdome Movie-FLAT!
> Jetzt freischalten unter http://movieflat.web.de
>
>
>
Reasonably Related Threads
- Fwd: Re: Fixed Point on wideband-mode: Single Frame loss on 2000 Hz sine causes "freak off"
- Fwd: Re: Fixed Point on wideband-mode: Single Frame loss on 2000 Hz sine causes "freak off"
- Fixed Point on wideband-mode: Single Frame loss on 2000 Hz sine causes "freak off"
- Fwd: Re: Fixed Point on wideband-mode: Single Frame loss on 2000 Hz sine causes "freak off"
- Fwd: Re: Fixed Point on wideband-mode: Single Frame loss on 2000 Hz sine causes "freak off"