I had this issue a (couple of?) weeks ago... the solution then (from jm) was-
g = DIV32(corr[i-start], SHR32(MULT16_16(spx_sqrt(10 + e0),
spx_sqrt(10+energy[i-start])),6));
This effects more than fixed point- basically, once this goes bad it will
eventually
cause the codec to only produce fuzz in floating point, and it will result in
ol_pitch_coef getting set to NAN, which is then preserved for all of eternity
(or until the speex enc gets destroyed) in vbr->soft_pitch- i.e. you
can't
just
reset the state to fix it.
Tom
At 10:31 PM 12/12/2005, Alex Bakaev wrote:
>Hi!
>
>It seems that using a different compiler (I assume the development is done
>with MSC) uncovers various issues with the floating point.
>
>Here is the second one I'm seeing - DOMAIN error from sqrt().
>
>In the open_loop_nbest_pitch(), this line:
>
> g = DIV32(corr[i-start],
> 10+SHR32(MULT16_16(spx_sqrt(e0),spx_sqrt(energy[i-start])),6));
>
>The values are:
>
>e0 is 7.2
>i is 142,
>start is 17
>energy [i-start] is -2.1004911E-015
>
>Hope this information is enough to go on.
>
>Tia,
>.a
>_______________________________________________
>Speex-dev mailing list
>Speex-dev@xiph.org
>http://lists.xiph.org/mailman/listinfo/speex-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
http://lists.xiph.org/pipermail/speex-dev/attachments/20051213/abb7bb72/attachment.html