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/ )