mirror of
https://github.com/mpv-player/mpv.git
synced 2024-09-20 12:02:23 +02:00
Enable SIMD optmizations for mp3lib on AMD64
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23515 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
c8e819bb7c
commit
dd053ddd67
@ -23,6 +23,7 @@ MPlayer (1.0)
|
||||
* handle resolution switching for Real codecs
|
||||
* ffmpeg video decoder handles aspect ratio changes
|
||||
* amr now handled via libamr wrapper (http://www.penguin.cz/~utx/amr)
|
||||
* SIMD optimizations for mp3lib under AMD64
|
||||
|
||||
Demuxers:
|
||||
* implemented switch_video and switch_program consistently with switch_audio
|
||||
|
@ -3,12 +3,13 @@ include ../config.mak
|
||||
LIBNAME_COMMON = libmp3.a
|
||||
|
||||
SRCS_COMMON = sr1.c
|
||||
SRCS_COMMON-$(TARGET_MMX) += decode_MMX.c
|
||||
SRCS_COMMON-$(TARGET_SSE) += dct64_sse.c
|
||||
ifeq ($(TARGET_ARCH_X86_32),yes)
|
||||
SRCS_COMMON += decode_i586.c
|
||||
SRCS_COMMON-$(TARGET_MMX) += decode_MMX.c dct64_MMX.c
|
||||
SRCS_COMMON-$(TARGET_MMX) += dct64_MMX.c
|
||||
SRCS_COMMON-$(TARGET_3DNOW) += dct36_3dnow.c dct64_3dnow.c
|
||||
SRCS_COMMON-$(TARGET_3DNOWEX) += dct36_k7.c dct64_k7.c
|
||||
SRCS_COMMON-$(TARGET_SSE) += dct64_sse.c
|
||||
endif
|
||||
SRCS_COMMON-$(TARGET_ALTIVEC) += dct64_altivec.c
|
||||
|
||||
|
@ -102,7 +102,7 @@ static int synth_1to1_mono2stereo(real *bandPtr,unsigned char *samples,int *pnt)
|
||||
|
||||
static synth_func_t synth_func;
|
||||
|
||||
#if defined(CAN_COMPILE_X86_ASM) && defined(HAVE_MMX)
|
||||
#ifdef HAVE_MMX
|
||||
extern int synth_1to1_MMX( real *bandPtr,int channel,short * samples);
|
||||
#endif
|
||||
|
||||
@ -125,7 +125,7 @@ static int synth_1to1(real *bandPtr,int channel,unsigned char *out,int *pnt)
|
||||
*pnt += 128;
|
||||
|
||||
/* optimized for x86 */
|
||||
#if defined(CAN_COMPILE_X86_ASM)
|
||||
#ifdef ARCH_X86
|
||||
if ( synth_func )
|
||||
{
|
||||
// printf("Calling %p, bandPtr=%p channel=%d samples=%p\n",synth_func,bandPtr,channel,samples);
|
||||
|
15
mp3lib/sr1.c
15
mp3lib/sr1.c
@ -32,8 +32,10 @@
|
||||
|
||||
#include "libvo/fastmemcpy.h"
|
||||
|
||||
#ifdef ARCH_X86_32
|
||||
#define CAN_COMPILE_X86_ASM
|
||||
#ifdef ARCH_X86_64
|
||||
// 3DNow! and 3DNow!Ext routines don't compile under AMD64
|
||||
#undef HAVE_3DNOW
|
||||
#undef HAVE_3DNOWEX
|
||||
#endif
|
||||
|
||||
//static FILE* mp3_file=NULL;
|
||||
@ -137,7 +139,7 @@ LOCAL unsigned int getbits_fast(short number_of_bits)
|
||||
// if(MP3_frames>=7741) printf("getbits_fast: bits=%d bitsleft=%d wordptr=%x\n",number_of_bits,bitsleft,wordpointer);
|
||||
if((bitsleft-=number_of_bits)<0) return 0;
|
||||
if(!number_of_bits) return 0;
|
||||
#if defined(CAN_COMPILE_X86_ASM)
|
||||
#ifdef ARCH_X86
|
||||
rval = bswap_16(*((uint16_t *)wordpointer));
|
||||
#else
|
||||
/*
|
||||
@ -180,7 +182,7 @@ LOCAL void set_pointer(int backstep)
|
||||
|
||||
LOCAL int stream_head_read(unsigned char *hbuf,uint32_t *newhead){
|
||||
if(mp3_read(hbuf,4) != 4) return FALSE;
|
||||
#if defined(CAN_COMPILE_X86_ASM)
|
||||
#ifdef ARCH_X86
|
||||
*newhead = bswap_32(*((uint32_t*)hbuf));
|
||||
#else
|
||||
/*
|
||||
@ -415,8 +417,6 @@ void MP3_Init(){
|
||||
|
||||
make_decode_tables(outscale);
|
||||
|
||||
#ifdef CAN_COMPILE_X86_ASM
|
||||
|
||||
#ifdef HAVE_MMX
|
||||
if (gCpuCaps.hasMMX)
|
||||
{
|
||||
@ -451,6 +451,7 @@ void MP3_Init(){
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef ARCH_X86_32
|
||||
#ifdef HAVE_MMX
|
||||
if (gCpuCaps.hasMMX)
|
||||
{
|
||||
@ -465,7 +466,7 @@ void MP3_Init(){
|
||||
mp_msg(MSGT_DECAUDIO,MSGL_V,"mp3lib: using Pentium optimized decore!\n");
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#endif /* ARCH_X86_32 */
|
||||
#ifdef HAVE_ALTIVEC
|
||||
if (gCpuCaps.hasAltiVec)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user