Mercurial > mplayer.hg
diff mp3lib/decod386.c @ 8543:60fe896e437c
decode_i586.c version uses %ebp for its own use, so:
- we need to compile this with -fomit-frame-pointer or we cannot access the
function parameters
- we need to save & restore %ebp, or we'll destroy the caller's stack ptr
author | arpi |
---|---|
date | Tue, 24 Dec 2002 00:05:43 +0000 |
parents | 131497b1f6ad |
children | 1320f1b3229d |
line wrap: on
line diff
--- a/mp3lib/decod386.c Mon Dec 23 22:13:46 2002 +0000 +++ b/mp3lib/decod386.c Tue Dec 24 00:05:43 2002 +0000 @@ -164,18 +164,19 @@ static const int step = 2; static int bo = 1; short *samples = (short *) (out + *pnt); - real *b0,(*buf)[0x110]; int clip = 0; int bo1; + + *pnt += 128; + /* optimized for x86 */ #if defined(CAN_COMPILE_X86_ASM) if ( synth_func ) { - int ret; - ret=(*synth_func)( bandPtr,channel,samples); - *pnt+=128; - return ret; +// printf("Calling %p, bandPtr=%p channel=%d samples=%p\n",synth_func,bandPtr,channel,samples); + // FIXME: synth_func() may destroy EBP, don't rely on stack contents!!! + return (*synth_func)( bandPtr,channel,samples); } #endif if(!channel) { /* channel=0 */ @@ -264,7 +265,6 @@ WRITE_SAMPLE(samples,sum,clip); } } - *pnt += 128; return clip;