diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libffmpeg/Makefile.am | 5 | ||||
-rw-r--r-- | src/libffmpeg/config.h | 6 | ||||
-rw-r--r-- | src/libffmpeg/libavcodec/dsputil.c | 9 | ||||
-rw-r--r-- | src/libffmpeg/libavcodec/dsputil.h | 15 | ||||
-rw-r--r-- | src/libffmpeg/libavcodec/dsputil_mmx.c | 8 | ||||
-rw-r--r-- | src/libffmpeg/libavcodec/mpegvideo.c | 2 | ||||
-rw-r--r-- | src/libffmpeg/libavcodec/mpegvideo.h | 2 |
7 files changed, 20 insertions, 27 deletions
diff --git a/src/libffmpeg/Makefile.am b/src/libffmpeg/Makefile.am index 992b45aec..b180b3ba4 100644 --- a/src/libffmpeg/Makefile.am +++ b/src/libffmpeg/Makefile.am @@ -21,7 +21,10 @@ xineplug_decode_ff_la_LDFLAGS = \ noinst_HEADERS = config.h debug: - @$(MAKE) CFLAGS="@DEBUG_CFLAGS@ -DCONFIG_DECODERS -DHAVE_AV_CONFIG_H" + @list='$(SUBDIRS)'; for subdir in $$list; do \ + (cd $$subdir && $(MAKE) $@) || exit;\ + done; + @$(MAKE) CFLAGS="@DEBUG_CFLAGS@" install-debug: debug @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am diff --git a/src/libffmpeg/config.h b/src/libffmpeg/config.h index 52fb2dff8..a28db4926 100644 --- a/src/libffmpeg/config.h +++ b/src/libffmpeg/config.h @@ -3,9 +3,3 @@ */ #include "../../config.h" - -#ifdef ARCH_X86 -/* -#define HAVE_MMX -*/ -#endif diff --git a/src/libffmpeg/libavcodec/dsputil.c b/src/libffmpeg/libavcodec/dsputil.c index da8b24941..c29574303 100644 --- a/src/libffmpeg/libavcodec/dsputil.c +++ b/src/libffmpeg/libavcodec/dsputil.c @@ -20,6 +20,7 @@ #include <stdio.h> #include "avcodec.h" #include "dsputil.h" +#include "cpu_accel.h" void (*ff_idct)(DCTELEM *block); void (*get_pixels)(DCTELEM *block, const UINT8 *pixels, int line_size); @@ -413,9 +414,13 @@ void block_permute(INT16 *block) void dsputil_init(void) { int i, j; +#ifdef ARCH_X86 + uint32_t mm = mm_accel(); +#endif int use_permuted_mmx_idct; int accel_dsputil; + for(i=0;i<256;i++) cropTbl[i + MAX_NEG_CROP] = i; for(i=0;i<MAX_NEG_CROP;i++) { cropTbl[i] = 0; @@ -440,8 +445,8 @@ void dsputil_init(void) use_permuted_mmx_idct = 1; accel_dsputil = 0; -#ifdef HAVE_MMX - if (!accel_dsputil) { +#ifdef ARCH_X86 + if (!accel_dsputil && (mm & MM_ACCEL_X86_MMX)) { dsputil_init_mmx(); accel_dsputil = 1; /* printf("AVCODEC: Using mmx idct\n"); */ diff --git a/src/libffmpeg/libavcodec/dsputil.h b/src/libffmpeg/libavcodec/dsputil.h index 1189747f3..f5e22e4c4 100644 --- a/src/libffmpeg/libavcodec/dsputil.h +++ b/src/libffmpeg/libavcodec/dsputil.h @@ -74,23 +74,12 @@ static inline int block_permute_op(int j) void block_permute(INT16 *block); -#if defined(HAVE_MMX) +#if defined(ARCH_X86) -#define MM_MMX 0x0001 /* standard MMX */ -#define MM_3DNOW 0x0004 /* AMD 3DNOW */ -#define MM_MMXEXT 0x0002 /* SSE integer functions or AMD MMX ext */ -#define MM_SSE 0x0008 /* SSE functions */ -#define MM_SSE2 0x0010 /* PIV SSE2 functions */ +#include "cpu_accel.h" extern int mm_flags; -int mm_support(void); - -static inline void emms(void) -{ - __asm __volatile ("emms;":::"memory"); -} - #define emms_c() \ {\ if (mm_flags & MM_MMX)\ diff --git a/src/libffmpeg/libavcodec/dsputil_mmx.c b/src/libffmpeg/libavcodec/dsputil_mmx.c index 29a069566..44b0b23d2 100644 --- a/src/libffmpeg/libavcodec/dsputil_mmx.c +++ b/src/libffmpeg/libavcodec/dsputil_mmx.c @@ -105,6 +105,7 @@ static void put_pixels_clamped_mmx(const DCTELEM *block, UINT8 *pixels, int line const DCTELEM *p; UINT8 *pix; int i; + static int p_inc = 32; /* hack to avoid gcc-2.95.2 loop unrolling bug */ /* read the pixels */ p = block; @@ -132,7 +133,7 @@ static void put_pixels_clamped_mmx(const DCTELEM *block, UINT8 *pixels, int line :"m"(*p) :"memory"); pix += line_size*4; - p += 32; + p += p_inc; } } @@ -141,6 +142,7 @@ static void add_pixels_clamped_mmx(const DCTELEM *block, UINT8 *pixels, int line const DCTELEM *p; UINT8 *pix; int i; + static int p_inc = 16; /* hack to avoid gcc-2.95.2 loop unrolling bug */ /* read the pixels */ p = block; @@ -172,7 +174,7 @@ static void add_pixels_clamped_mmx(const DCTELEM *block, UINT8 *pixels, int line :"m"(*p) :"memory"); pix += line_size*2; - p += 16; + p += p_inc; } } @@ -965,7 +967,7 @@ static void sub_pixels_xy2_mmx( DCTELEM *block, const UINT8 *pixels, int line void dsputil_init_mmx(void) { - mm_flags = mm_support(); + mm_flags = mm_accel(); #if 0 printf("CPU flags:"); if (mm_flags & MM_MMX) diff --git a/src/libffmpeg/libavcodec/mpegvideo.c b/src/libffmpeg/libavcodec/mpegvideo.c index ea7979bb8..5c66b3189 100644 --- a/src/libffmpeg/libavcodec/mpegvideo.c +++ b/src/libffmpeg/libavcodec/mpegvideo.c @@ -106,7 +106,7 @@ int MPV_common_init(MpegEncContext *s) else s->dct_unquantize = dct_unquantize_mpeg1_c; -#ifdef HAVE_MMX +#ifdef ARCH_X86 MPV_common_init_mmx(s); #endif s->mb_width = (s->width + 15) / 16; diff --git a/src/libffmpeg/libavcodec/mpegvideo.h b/src/libffmpeg/libavcodec/mpegvideo.h index e4a5617e8..31243471e 100644 --- a/src/libffmpeg/libavcodec/mpegvideo.h +++ b/src/libffmpeg/libavcodec/mpegvideo.h @@ -188,7 +188,7 @@ void MPV_common_end(MpegEncContext *s); void MPV_decode_mb(MpegEncContext *s, DCTELEM block[6][64]); void MPV_frame_start(MpegEncContext *s); void MPV_frame_end(MpegEncContext *s); -#ifdef HAVE_MMX +#ifdef ARCH_X86 void MPV_common_init_mmx(MpegEncContext *s); #endif |