[Speex-dev] different output for opt/non-opt on win32 platform

tunkeat tunkeat at gmail.com
Wed Jan 5 19:06:54 PST 2005


Jean-Marc, thanks for the comments. 

> > just downloaded speex v 1.1.6.
> >  when I removed optimisation flags for win32 in libspeex.dsp,
> > I get a slightly different output for decoding using speexdec.exe
> > (debug version). no prob for speexenc.exe except for some
> > differences in the ogg header.
> What difference in the ogg header? It's quite normal that compiler
> options will (slightly) change the result. The reason is that the
> rounding depends on when the compiler loads/stores the float values.

diff in ogg header: oh, due to a random number passed to the
second argument of ogg_stream_init().

without a good understanding of the celp and haven't delved into the 
codes, I am surprised that there is no such issue with the encoder.
whether the optimsation flags are included or excluded, the encoded
bits are the same. I assumed the decoder shared quite a number of 
functions as the encoder except maybe the perceptual enhancement part.

> > i have the understanding each speex frame is self-contained,
> > i.e., the decoder could decode each frame independently. is that
> > right?
> No. Like any other CELP codec, Speex has a memory. The only non-PCM
> speech codec I know that has independent frames is iLBC and it's
> suboptimal for most uses because of that.

how big is this "Speex's memory"?  I am thinking perhaps naively: at
the encoder side, is it possible to get the states for the decoder
from the encoder's memory without doing the actual decoding? if yes,
the decoder's states could be sent over.
I hope I am making sense here.

thanks in advance,

More information about the Speex-dev mailing list