Takehiro Tominaga schrieb am Son, 30 Jan 2000:
> I added CVS tree a new fft routine and table lookup method to calculate
> pow(2.0, ..).
> 
> The speed is about 10% faster on my celeron linux box.
> --- 
> Takehiro TOMINAGA // may the source be with you!

Hi Takehiro,
that sounds good to me!

But I have some trouble with the SQUAM file frer07_1.wav:
If I use the Debugging compilation with -DABORTFP lame crashes
here:

Program received signal SIGFPE, Arithmetic exception.
quantize_xrpow (xr=0xbffe9db8, ix=0xbfff4988,
 cod_info=0x80f624c) at quantize-pvt.c:824

source code fragment:
void quantize_xrpow(FLOAT8 xr[576], int ix[576], gr_info *cod_info) {
  /* quantize on xr^(3/4) instead of xr */
  const FLOAT8 istep = IPOW20(cod_info->global_gain);
    
#ifndef _MSC_VER
  {
      FLOAT8 x;
      int j, rx;
      for (j = 576 / 4; j > 0; --j) {
          x = *xr++ * istep;
          XRPOW_FTOI(x, rx);
          XRPOW_FTOI(x + QUANTFAC(rx), *ix++);
          x = *xr++ * istep;
          XRPOW_FTOI(x, rx);
          XRPOW_FTOI(x + QUANTFAC(rx), *ix++);
          x = *xr++ * istep;
          XRPOW_FTOI(x, rx);
          XRPOW_FTOI(x + QUANTFAC(rx), *ix++);
--->      x = *xr++ * istep;                    <---- aborts here
          XRPOW_FTOI(x, rx);
          XRPOW_FTOI(x + QUANTFAC(rx), *ix++);
      }
  }
#else

If I turn -DABORTFP off (comment it out), lame crashes here:

Program received signal SIGSEGV, Segmentation fault.
0x80610d4 in count_bit_ESC (ix=0xbfff4988, end=0xbfff49e8,
 t1=22, t2=30, s=0xbffe7e24) at takehiro.c:136

source code fragment:
    while (ix < end) {
        int x = *ix++;
        int y = *ix++;
    
        if (x != 0) {
            sum++;
            if (x > 14) {
                x = 15;
                sum1 += linbits1;
                sum2 += linbits2;
            }
            x *= 16;
        }
    
        if (y != 0) {
            sum++;
            if (y > 14) {
                y = 15;
                sum1 += linbits1;
                sum2 += linbits2;
            }
            x += y;
        }
    
--->    sum1 += ht[16].hlen[x];  <--- here it segfaults, x is trash
        sum2 += ht[24].hlen[x];
    }

You may take a look at psymodels call to fft_short too. There is 
something wrong with the arguments.

Robert
--
MP3 ENCODER mailing list ( http://geek.rcc.se/mp3encoder/ )

Reply via email to