summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorFabrice Bellard <fabrice@bellard.org>2001-08-13 21:45:36 +0000
committerFabrice Bellard <fabrice@bellard.org>2001-08-13 21:45:36 +0000
commit3d03c0a24ec27fb7e5387012e170dce00535c110 (patch)
treeb6101194d5b5625ea5d10b286117bb1df0b43945 /libavcodec
parentbdc4796fae585a2316a0d201d287fd6493b838ba (diff)
arm optimizations
Originally committed as revision 82 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/Makefile10
-rw-r--r--libavcodec/dsputil.c3
-rw-r--r--libavcodec/dsputil.h13
3 files changed, 24 insertions, 2 deletions
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index d2be0e760c..8738ddd32a 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -31,6 +31,12 @@ OBJS += i386/fdctdata.o i386/cputest.o \
i386/idct_mmx.o
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)
LIB= libavcodec.a
@@ -48,6 +54,9 @@ dsputil.o: dsputil.c dsputil.h
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
+%.o: %.S
+ $(CC) $(CFLAGS) -c -o $@ $<
+
%.o: %.s
nasm -f elf -o $@ $<
@@ -59,6 +68,7 @@ depend:
clean:
rm -f *.o *~ *.a i386/*.o i386/*~ \
+ armv4l/*.o armv4l/*~ \
libac3/*.o libac3/*~ \
mpglib/*.o mpglib/*~ \
apiexample $(TESTS)
diff --git a/libavcodec/dsputil.c b/libavcodec/dsputil.c
index 4cb781a82d..abbca19daa 100644
--- a/libavcodec/dsputil.c
+++ b/libavcodec/dsputil.c
@@ -450,4 +450,7 @@ void dsputil_init(void)
#ifdef HAVE_MMX
dsputil_init_mmx();
#endif
+#ifdef ARCH_ARMV4L
+ dsputil_init_armv4l();
+#endif
}
diff --git a/libavcodec/dsputil.h b/libavcodec/dsputil.h
index 14613adba2..80a934ccdb 100644
--- a/libavcodec/dsputil.h
+++ b/libavcodec/dsputil.h
@@ -2,7 +2,6 @@
#define DSPUTIL_H
#include "common.h"
-#include <inttypes.h>
/* dct code */
typedef short DCTELEM;
@@ -75,7 +74,7 @@ static inline int block_permute_op(int j)
void block_permute(INT16 *block);
-#ifdef HAVE_MMX
+#if defined(HAVE_MMX)
#define MM_MMX 0x0001 /* standard MMX */
#define MM_3DNOW 0x0004 /* AMD 3DNOW */
@@ -102,6 +101,16 @@ static inline void emms(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
#define emms_c()