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 > > >
Maybe Matching 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"