aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/common.h
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2002-09-29 22:44:22 +0000
committerMichael Niedermayer <michaelni@gmx.at>2002-09-29 22:44:22 +0000
commit2ad1516a6c7180d4f9343c0f07120eaec5130d6e (patch)
tree38dfb52da33739e269f30177e8b46c86067dbc67 /libavcodec/common.h
parentf9bb4bdffcbde7362db2a0e041a2893dde0ace6f (diff)
downloadffmpeg-2ad1516a6c7180d4f9343c0f07120eaec5130d6e.tar.gz
idct permutation cleanup, idct can be selected per context now
fixing some threadunsafe code Originally committed as revision 980 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/common.h')
-rw-r--r--libavcodec/common.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/libavcodec/common.h b/libavcodec/common.h
index 9fce80f8a1..0badc44a3f 100644
--- a/libavcodec/common.h
+++ b/libavcodec/common.h
@@ -932,6 +932,22 @@ static inline int ff_get_fourcc(char *s){
return (s[0]) + (s[1]<<8) + (s[2]<<16) + (s[3]<<24);
}
+
+#ifdef ARCH_X86
+#define MASK_ABS(mask, level)\
+ asm volatile(\
+ "cdq \n\t"\
+ "xorl %1, %0 \n\t"\
+ "subl %1, %0 \n\t"\
+ : "+a" (level), "=&d" (mask)\
+ );
+#else
+#define MASK_ABS(mask, level)\
+ mask= level>>31;\
+ level= (level^mask)-mask;
+#endif
+
+
#if __CPU__ >= 686 && !defined(RUNTIME_CPUDETECT)
#define COPY3_IF_LT(x,y,a,b,c,d)\
asm volatile (\