# HG changeset patch # User aurel # Date 1232319460 0 # Node ID d6bab465b82c1ba247450713449d468749c409f0 # Parent 8d425ee85ddbfd747eb32a70b20af0e3e33c6c01 moves mid_pred() into mathops.h (with arch specific code split by directory) diff -r 8d425ee85ddb -r d6bab465b82c cavs.c --- a/cavs.c Sun Jan 18 20:43:11 2009 +0000 +++ b/cavs.c Sun Jan 18 22:57:40 2009 +0000 @@ -28,6 +28,7 @@ #include "avcodec.h" #include "bitstream.h" #include "golomb.h" +#include "mathops.h" #include "cavs.h" #include "cavsdata.h" diff -r 8d425ee85ddb -r d6bab465b82c dsputil.c --- a/dsputil.c Sun Jan 18 20:43:11 2009 +0000 +++ b/dsputil.c Sun Jan 18 22:57:40 2009 +0000 @@ -32,6 +32,7 @@ #include "simple_idct.h" #include "faandct.h" #include "faanidct.h" +#include "mathops.h" #include "h263.h" #include "snow.h" diff -r 8d425ee85ddb -r d6bab465b82c ffv1.c --- a/ffv1.c Sun Jan 18 20:43:11 2009 +0000 +++ b/ffv1.c Sun Jan 18 22:57:40 2009 +0000 @@ -30,6 +30,7 @@ #include "dsputil.h" #include "rangecoder.h" #include "golomb.h" +#include "mathops.h" #define MAX_PLANES 4 #define CONTEXT_SIZE 32 diff -r 8d425ee85ddb -r d6bab465b82c h263.c --- a/h263.c Sun Jan 18 20:43:11 2009 +0000 +++ b/h263.c Sun Jan 18 22:57:40 2009 +0000 @@ -39,6 +39,7 @@ #include "mpegvideo.h" #include "h263data.h" #include "mpeg4data.h" +#include "mathops.h" //#undef NDEBUG //#include diff -r 8d425ee85ddb -r d6bab465b82c h264.c --- a/h264.c Sun Jan 18 20:43:11 2009 +0000 +++ b/h264.c Sun Jan 18 22:57:40 2009 +0000 @@ -32,6 +32,7 @@ #include "h264data.h" #include "h264_parser.h" #include "golomb.h" +#include "mathops.h" #include "rectangle.h" #include "vdpau_internal.h" diff -r 8d425ee85ddb -r d6bab465b82c huffyuv.c --- a/huffyuv.c Sun Jan 18 20:43:11 2009 +0000 +++ b/huffyuv.c Sun Jan 18 22:57:40 2009 +0000 @@ -31,6 +31,7 @@ #include "avcodec.h" #include "bitstream.h" #include "dsputil.h" +#include "mathops.h" #define VLC_BITS 11 diff -r 8d425ee85ddb -r d6bab465b82c jpeglsdec.c --- a/jpeglsdec.c Sun Jan 18 20:43:11 2009 +0000 +++ b/jpeglsdec.c Sun Jan 18 22:57:40 2009 +0000 @@ -28,6 +28,7 @@ #include "avcodec.h" #include "bitstream.h" #include "golomb.h" +#include "mathops.h" #include "mjpeg.h" #include "mjpegdec.h" #include "jpegls.h" diff -r 8d425ee85ddb -r d6bab465b82c jpeglsenc.c --- a/jpeglsenc.c Sun Jan 18 20:43:11 2009 +0000 +++ b/jpeglsenc.c Sun Jan 18 22:57:40 2009 +0000 @@ -28,6 +28,7 @@ #include "avcodec.h" #include "bitstream.h" #include "golomb.h" +#include "mathops.h" #include "dsputil.h" #include "mjpeg.h" #include "jpegls.h" diff -r 8d425ee85ddb -r d6bab465b82c loco.c --- a/loco.c Sun Jan 18 20:43:11 2009 +0000 +++ b/loco.c Sun Jan 18 22:57:40 2009 +0000 @@ -27,6 +27,7 @@ #include "avcodec.h" #include "bitstream.h" #include "golomb.h" +#include "mathops.h" enum LOCO_MODE {LOCO_UNKN=0, LOCO_CYUY2=-1, LOCO_CRGB=-2, LOCO_CRGBA=-3, LOCO_CYV12=-4, LOCO_YUY2=1, LOCO_UYVY=2, LOCO_RGB=3, LOCO_RGBA=4, LOCO_YV12=5}; diff -r 8d425ee85ddb -r d6bab465b82c mathops.h --- a/mathops.h Sun Jan 18 20:43:11 2009 +0000 +++ b/mathops.h Sun Jan 18 22:57:40 2009 +0000 @@ -83,5 +83,35 @@ # define MLS16(rt, ra, rb) ((rt) -= (ra) * (rb)) #endif +/* median of 3 */ +#ifndef mid_pred +#define mid_pred mid_pred +static inline av_const int mid_pred(int a, int b, int c) +{ +#if 0 + int t= (a-b)&((a-b)>>31); + a-=t; + b+=t; + b-= (b-c)&((b-c)>>31); + b+= (a-b)&((a-b)>>31); + + return b; +#else + if(a>b){ + if(c>b){ + if(c>a) b=a; + else b=c; + } + }else{ + if(b>c){ + if(c>a) b=c; + else b=a; + } + } + return b; +#endif +} +#endif + #endif /* AVCODEC_MATHOPS_H */ diff -r 8d425ee85ddb -r d6bab465b82c motion_est.c --- a/motion_est.c Sun Jan 18 20:43:11 2009 +0000 +++ b/motion_est.c Sun Jan 18 22:57:40 2009 +0000 @@ -32,6 +32,7 @@ #include #include "avcodec.h" #include "dsputil.h" +#include "mathops.h" #include "mpegvideo.h" #undef NDEBUG diff -r 8d425ee85ddb -r d6bab465b82c roqvideoenc.c --- a/roqvideoenc.c Sun Jan 18 20:43:11 2009 +0000 +++ b/roqvideoenc.c Sun Jan 18 22:57:40 2009 +0000 @@ -60,6 +60,7 @@ #include "roqvideo.h" #include "bytestream.h" #include "elbg.h" +#include "mathops.h" #define CHROMA_BIAS 1 diff -r 8d425ee85ddb -r d6bab465b82c rv34.c --- a/rv34.c Sun Jan 18 20:43:11 2009 +0000 +++ b/rv34.c Sun Jan 18 22:57:40 2009 +0000 @@ -28,6 +28,7 @@ #include "dsputil.h" #include "mpegvideo.h" #include "golomb.h" +#include "mathops.h" #include "rectangle.h" #include "rv34vlc.h" diff -r 8d425ee85ddb -r d6bab465b82c snow.c --- a/snow.c Sun Jan 18 20:43:11 2009 +0000 +++ b/snow.c Sun Jan 18 22:57:40 2009 +0000 @@ -23,6 +23,7 @@ #include "snow.h" #include "rangecoder.h" +#include "mathops.h" #include "mpegvideo.h" diff -r 8d425ee85ddb -r d6bab465b82c svq1dec.c --- a/svq1dec.c Sun Jan 18 20:43:11 2009 +0000 +++ b/svq1dec.c Sun Jan 18 22:57:40 2009 +0000 @@ -37,6 +37,7 @@ #include "avcodec.h" #include "dsputil.h" #include "mpegvideo.h" +#include "mathops.h" #include "svq1.h" diff -r 8d425ee85ddb -r d6bab465b82c vc1.c --- a/vc1.c Sun Jan 18 20:43:11 2009 +0000 +++ b/vc1.c Sun Jan 18 22:57:40 2009 +0000 @@ -34,6 +34,7 @@ #include "msmpeg4data.h" #include "unary.h" #include "simple_idct.h" +#include "mathops.h" #undef NDEBUG #include diff -r 8d425ee85ddb -r d6bab465b82c wmv2dec.c --- a/wmv2dec.c Sun Jan 18 20:43:11 2009 +0000 +++ b/wmv2dec.c Sun Jan 18 22:57:40 2009 +0000 @@ -21,6 +21,7 @@ #include "avcodec.h" #include "dsputil.h" #include "mpegvideo.h" +#include "mathops.h" #include "msmpeg4.h" #include "msmpeg4data.h" #include "intrax8.h" diff -r 8d425ee85ddb -r d6bab465b82c x86/dsputilenc_mmx.c --- a/x86/dsputilenc_mmx.c Sun Jan 18 20:43:11 2009 +0000 +++ b/x86/dsputilenc_mmx.c Sun Jan 18 22:57:40 2009 +0000 @@ -25,6 +25,7 @@ #include "libavutil/x86_cpu.h" #include "libavcodec/dsputil.h" #include "libavcodec/mpegvideo.h" +#include "libavcodec/mathops.h" #include "dsputil_mmx.h" diff -r 8d425ee85ddb -r d6bab465b82c x86/mathops.h --- a/x86/mathops.h Sun Jan 18 20:43:11 2009 +0000 +++ b/x86/mathops.h Sun Jan 18 22:57:40 2009 +0000 @@ -22,6 +22,9 @@ #ifndef AVCODEC_X86_MATHOPS_H #define AVCODEC_X86_MATHOPS_H +#include "config.h" +#include "libavutil/common.h" + #define MULL(ra, rb, shift) \ ({ int rt, dummy; __asm__ (\ "imull %3 \n\t"\ @@ -40,4 +43,25 @@ __asm__ ("imull %2\n\t" : "=A"(rt) : "a" ((int)ra), "g" ((int)rb));\ rt; }) +#if HAVE_CMOV +/* median of 3 */ +#define mid_pred mid_pred +static inline av_const int mid_pred(int a, int b, int c) +{ + int i=b; + __asm__ volatile( + "cmp %2, %1 \n\t" + "cmovg %1, %0 \n\t" + "cmovg %2, %1 \n\t" + "cmp %3, %1 \n\t" + "cmovl %3, %1 \n\t" + "cmp %1, %0 \n\t" + "cmovg %1, %0 \n\t" + :"+&r"(i), "+&r"(a) + :"r"(b), "r"(c) + ); + return i; +} +#endif + #endif /* AVCODEC_X86_MATHOPS_H */