Commit 3d03c0a2 authored by Fabrice Bellard's avatar Fabrice Bellard

arm optimizations


Originally committed as revision 82 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent bdc4796f
...@@ -31,6 +31,12 @@ OBJS += i386/fdctdata.o i386/cputest.o \ ...@@ -31,6 +31,12 @@ OBJS += i386/fdctdata.o i386/cputest.o \
i386/idct_mmx.o i386/idct_mmx.o
endif endif
# armv4l specific stuff
ifeq ($(TARGET_ARCH_ARMV4L),yes)
ASM_OBJS += armv4l/jrevdct_arm.o
OBJS += armv4l/dsputil_arm.o
endif
SRCS = $(OBJS:.o=.c) $(ASM_OBJS:.o=.s) SRCS = $(OBJS:.o=.c) $(ASM_OBJS:.o=.s)
LIB= libavcodec.a LIB= libavcodec.a
...@@ -48,6 +54,9 @@ dsputil.o: dsputil.c dsputil.h ...@@ -48,6 +54,9 @@ dsputil.o: dsputil.c dsputil.h
%.o: %.c %.o: %.c
$(CC) $(CFLAGS) -c -o $@ $< $(CC) $(CFLAGS) -c -o $@ $<
%.o: %.S
$(CC) $(CFLAGS) -c -o $@ $<
%.o: %.s %.o: %.s
nasm -f elf -o $@ $< nasm -f elf -o $@ $<
...@@ -59,6 +68,7 @@ depend: ...@@ -59,6 +68,7 @@ depend:
clean: clean:
rm -f *.o *~ *.a i386/*.o i386/*~ \ rm -f *.o *~ *.a i386/*.o i386/*~ \
armv4l/*.o armv4l/*~ \
libac3/*.o libac3/*~ \ libac3/*.o libac3/*~ \
mpglib/*.o mpglib/*~ \ mpglib/*.o mpglib/*~ \
apiexample $(TESTS) apiexample $(TESTS)
......
...@@ -450,4 +450,7 @@ void dsputil_init(void) ...@@ -450,4 +450,7 @@ void dsputil_init(void)
#ifdef HAVE_MMX #ifdef HAVE_MMX
dsputil_init_mmx(); dsputil_init_mmx();
#endif #endif
#ifdef ARCH_ARMV4L
dsputil_init_armv4l();
#endif
} }
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
#define DSPUTIL_H #define DSPUTIL_H
#include "common.h" #include "common.h"
#include <inttypes.h>
/* dct code */ /* dct code */
typedef short DCTELEM; typedef short DCTELEM;
...@@ -75,7 +74,7 @@ static inline int block_permute_op(int j) ...@@ -75,7 +74,7 @@ static inline int block_permute_op(int j)
void block_permute(INT16 *block); void block_permute(INT16 *block);
#ifdef HAVE_MMX #if defined(HAVE_MMX)
#define MM_MMX 0x0001 /* standard MMX */ #define MM_MMX 0x0001 /* standard MMX */
#define MM_3DNOW 0x0004 /* AMD 3DNOW */ #define MM_3DNOW 0x0004 /* AMD 3DNOW */
...@@ -102,6 +101,16 @@ static inline void emms(void) ...@@ -102,6 +101,16 @@ static inline void emms(void)
void dsputil_init_mmx(void); void dsputil_init_mmx(void);
#elif defined(ARCH_ARMV4L)
#define emms_c()
/* This is to use 4 bytes read to the IDCT pointers for some 'zero'
line ptimizations */
#define __align8 __attribute__ ((aligned (4)))
void dsputil_init_armv4l(void);
#else #else
#define emms_c() #define emms_c()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment