CVS: main/mp3lib sr1.c,1.13,1.14
Update of /cvsroot/mplayer/main/mp3lib In directory mplayer:/var/tmp.root/cvs-serv3264 Modified Files: sr1.c Log Message: hotfix regarding to Markus Ingalsuo's mp3lib-sse bug Index: sr1.c =================================================================== RCS file: /cvsroot/mplayer/main/mp3lib/sr1.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- sr1.c 27 Jul 2001 17:21:23 -0000 1.13 +++ sr1.c 21 Nov 2001 16:12:21 -0000 1.14 @@ -370,12 +370,17 @@ extern void dct64_MMX_sse( void ); void (*dct64_MMX_func)( void ); +#include <sys/utsname.h> // Init decoder tables. Call first, once! #ifdef USE_FAKE_MONO void MP3_Init(int fakemono){ #else void MP3_Init(){ #endif + struct utsname machine; + int use_sse; + + uname(&machine); #ifdef ARCH_X86 _CpuID=CpuDetect(); _i586=ipentium(); @@ -396,6 +401,19 @@ #ifndef HAVE_SSE2 _isse &= 1; #endif + /* check for buggy linux 2.2.x and disable sse support if any */ + if (!strcasecmp(machine.sysname, "Linux") && _isse) + { + int main; + int sub; + int patch; + + if (sscanf(machine.release, "%d.%d.%d", &main, &sub, &patch) == 3) + if ((main == 2) && (sub == 2)) + _isse = 0; /* also disable under Linux 2.2.x */ +// printf("kernel: main: %d, sub: %d (sysname: %s, version: %s)\n", +// main, sub, machine.sysname, machine.release); + } _has_mmx=_i586>1||_3dnow||_isse; printf( "mp3lib: Processor ID: %x\n",_CpuID ); if(_i586&&!_3dnow&&!_isse)
participants (3)
-
Alex Beregszaszi -
Arpi -
Felix Buenemann