[speex-dev] testenc and snr calculation

Mike Dunn mikedunn at newsguy.com
Mon Sep 1 10:12:31 PDT 2003



Hi all,

I'm new to the group.  I'm looking at the speex code with an eye towards 
maybe helping out with either codec optimization or fixed-point 
implementation,  The SNR calculation in testenc.c and testenc_uwb.c 
doesn't make sense to me.  The code is

      {
         float enoise=0, esig=0, snr;
         for (i=0;i<FRAME_SIZE;i++)
         {
            enoise+=(bak2[i]-input[i])*(bak2[i]-input[i]);
            esig += bak2[i]*bak2[i];
         }
         snr = 10*log10((esig+1)/(enoise+1));
         printf ("real SNR = %f\n", snr);
      }

But what I see from the rest of the code is that bak2[] contains the 
previous input frame, and input[] contains the current input frame.  So 
each enoise calculation is the square of the difference between input 
sample from the last frame and the current frame???

I have the latest version from CVS.  I think this code has changed in 
the past few months, because I see different code in Christian Buchner's 
modified code, downloaded from his site at openacm.org.

Hope this question isn't too dumb  :-)

Thanks,
Mike Dunn

<p>--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'speex-dev-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.



More information about the Speex-dev mailing list