changeset 8627:d6bab465b82c libavcodec

moves mid_pred() into mathops.h (with arch specific code split by directory)
author aurel
date Sun, 18 Jan 2009 22:57:40 +0000
parents 8d425ee85ddb
children e49a2e1f0020
files cavs.c dsputil.c ffv1.c h263.c h264.c huffyuv.c jpeglsdec.c jpeglsenc.c loco.c mathops.h motion_est.c roqvideoenc.c rv34.c snow.c svq1dec.c vc1.c wmv2dec.c x86/dsputilenc_mmx.c x86/mathops.h
diffstat 19 files changed, 71 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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"
 
--- 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"
 
--- 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
--- 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 <assert.h>
--- 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"
 
--- 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
 
--- 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"
--- 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"
--- 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};
--- 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 */
 
--- 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 <limits.h>
 #include "avcodec.h"
 #include "dsputil.h"
+#include "mathops.h"
 #include "mpegvideo.h"
 
 #undef NDEBUG
--- 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
 
--- 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"
--- 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"
 
--- 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"
 
--- 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 <assert.h>
--- 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"
--- 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"
 
 
--- 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 */