Use MPlayer's CPU detection module instead of libmpeg2's,

initial patch by Jim Huang jserv A linux2°cc°ntu°edu°tw,
reworked by me according to The Guru's advices ;-)

Original thread:
Date: Jun 15, 2006 8:35 AM
Subject: [MPlayer-dev-eng] [PATCH] Remove duplicated CPU detection in libmpeg2


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@18730 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
gpoirier 2006-06-16 13:40:00 +00:00
parent 1e93d2b2ba
commit fe8651b4cf
2 changed files with 24 additions and 0 deletions

View File

@ -26,6 +26,7 @@
*/
#include "config.h"
#include "cpudetect.h"
#include <inttypes.h>
@ -35,8 +36,16 @@
#ifdef ACCEL_DETECT
#if defined(ARCH_X86) || defined(ARCH_X86_64)
/* MPlayer imports libmpeg2 as decoder, which detects MMX / 3DNow!
* instructions via assembly. However, it is regarded as duplicaed work
* in MPlayer, so that we enforce to use MPlayer's implementation.
*/
#define USE_MPLAYER_CPUDETECT
static inline uint32_t arch_accel (void)
{
#if !defined(USE_MPLAYER_CPUDETECT)
uint32_t eax, ebx, ecx, edx;
int AMD;
uint32_t caps;
@ -109,6 +118,20 @@ static inline uint32_t arch_accel (void)
caps |= MPEG2_ACCEL_X86_MMXEXT;
return caps;
#else /* USE_MPLAYER_CPUDETECT: Use MPlayer's cpu capability property */
caps = 0;
if (gCpuCaps.hasMMX)
caps |= MPEG2_ACCEL_X86_MMX;
if (gCpuCaps.hasSSE2)
caps |= MPEG2_ACCEL_X86_SSE2;
if (gCpuCaps.hasMMX2)
caps |= MPEG2_ACCEL_X86_MMXEXT;
if (gCpuCaps.has3DNow)
caps |= MPEG2_ACCEL_X86_3DNOW;
return caps;
#endif /* USE_MPLAYER_CPUDETECT */
}
#endif /* ARCH_X86 || ARCH_X86_64 */

View File

@ -159,6 +159,7 @@ void mpeg2_custom_fbuf (mpeg2dec_t * mpeg2dec, int custom_fbuf);
#define MPEG2_ACCEL_X86_MMX 1
#define MPEG2_ACCEL_X86_3DNOW 2
#define MPEG2_ACCEL_X86_MMXEXT 4
#define MPEG2_ACCEL_X86_SSE2 8
#define MPEG2_ACCEL_PPC_ALTIVEC 1
#define MPEG2_ACCEL_ALPHA 1
#define MPEG2_ACCEL_ALPHA_MVI 2