[Speex-dev] innov_save, what is it? why does it hurt me so?

Michael Jacobson Michael.Jacobson at ultratec.com
Thu Sep 13 14:22:20 PDT 2007

I am using speex1.2beta2 on a TI 54x on narrow band
I have been trying to get speex to work for a while now, and it's been
a real teeter-totter ride.  For a long time I noticed that I will get a
project to work and then without changing any code and programming it to
an eprom/flash the project will not work.  It turns out it was a value
called innov_save.  I found this bugger by zero filling data in my
program and then loading my code and running it, then filling my data
with 1s and tried running it.  when I filled it with 1's it never
worked.  I found innov_save will write over memory it shouldn't be when
I fill memory with 1's but not when I fill it with zeros.   When my DSP
gets to this code chunk:
if (innov_save){
   for (i=0;i<st->subframeSize;i++)
      innov_save[i] = EXTRACT16(PSHR32(innov[i], SIG_SHIFT));
it will just start filling data in, which it shouldn't.  I see that
innov_save is set at the beginning of a for loop at:
for (sub=0;sub<st->nbSubframes;sub++)
      int offset;
      spx_word16_t *exc;
      spx_word16_t *sp;
      spx_word16_t *innov_save = NULL;
      spx_word16_t tmp;...
but for some reason that never made a difference even though I know I
stepped over it in the code.  I commented innov save out for now but I
don't know if there is some case where I might need it.  What does it do
and do I need it?  Are there any more similar data pointers like that
that you know of that may cause similar issues?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.xiph.org/pipermail/speex-dev/attachments/20070913/b1a3ddec/attachment.html

More information about the Speex-dev mailing list