moves mid_pred() into mathops.h (with arch specific code split by directory)

Originally committed as revision 16681 to svn://svn.ffmpeg.org/ffmpeg/trunk
pull/126/head
Aurelien Jacobs 16 years ago
parent 48a81c0ff5
commit 199436b952
  1. 1
      libavcodec/cavs.c
  2. 1
      libavcodec/dsputil.c
  3. 1
      libavcodec/ffv1.c
  4. 1
      libavcodec/h263.c
  5. 1
      libavcodec/h264.c
  6. 1
      libavcodec/huffyuv.c
  7. 1
      libavcodec/jpeglsdec.c
  8. 1
      libavcodec/jpeglsenc.c
  9. 1
      libavcodec/loco.c
  10. 30
      libavcodec/mathops.h
  11. 1
      libavcodec/motion_est.c
  12. 1
      libavcodec/roqvideoenc.c
  13. 1
      libavcodec/rv34.c
  14. 1
      libavcodec/snow.c
  15. 1
      libavcodec/svq1dec.c
  16. 1
      libavcodec/vc1.c
  17. 1
      libavcodec/wmv2dec.c
  18. 1
      libavcodec/x86/dsputilenc_mmx.c
  19. 24
      libavcodec/x86/mathops.h
  20. 41
      libavutil/common.h

@ -28,6 +28,7 @@
#include "avcodec.h" #include "avcodec.h"
#include "bitstream.h" #include "bitstream.h"
#include "golomb.h" #include "golomb.h"
#include "mathops.h"
#include "cavs.h" #include "cavs.h"
#include "cavsdata.h" #include "cavsdata.h"

@ -32,6 +32,7 @@
#include "simple_idct.h" #include "simple_idct.h"
#include "faandct.h" #include "faandct.h"
#include "faanidct.h" #include "faanidct.h"
#include "mathops.h"
#include "h263.h" #include "h263.h"
#include "snow.h" #include "snow.h"

@ -30,6 +30,7 @@
#include "dsputil.h" #include "dsputil.h"
#include "rangecoder.h" #include "rangecoder.h"
#include "golomb.h" #include "golomb.h"
#include "mathops.h"
#define MAX_PLANES 4 #define MAX_PLANES 4
#define CONTEXT_SIZE 32 #define CONTEXT_SIZE 32

@ -39,6 +39,7 @@
#include "mpegvideo.h" #include "mpegvideo.h"
#include "h263data.h" #include "h263data.h"
#include "mpeg4data.h" #include "mpeg4data.h"
#include "mathops.h"
//#undef NDEBUG //#undef NDEBUG
//#include <assert.h> //#include <assert.h>

@ -32,6 +32,7 @@
#include "h264data.h" #include "h264data.h"
#include "h264_parser.h" #include "h264_parser.h"
#include "golomb.h" #include "golomb.h"
#include "mathops.h"
#include "rectangle.h" #include "rectangle.h"
#include "vdpau_internal.h" #include "vdpau_internal.h"

@ -31,6 +31,7 @@
#include "avcodec.h" #include "avcodec.h"
#include "bitstream.h" #include "bitstream.h"
#include "dsputil.h" #include "dsputil.h"
#include "mathops.h"
#define VLC_BITS 11 #define VLC_BITS 11

@ -28,6 +28,7 @@
#include "avcodec.h" #include "avcodec.h"
#include "bitstream.h" #include "bitstream.h"
#include "golomb.h" #include "golomb.h"
#include "mathops.h"
#include "mjpeg.h" #include "mjpeg.h"
#include "mjpegdec.h" #include "mjpegdec.h"
#include "jpegls.h" #include "jpegls.h"

@ -28,6 +28,7 @@
#include "avcodec.h" #include "avcodec.h"
#include "bitstream.h" #include "bitstream.h"
#include "golomb.h" #include "golomb.h"
#include "mathops.h"
#include "dsputil.h" #include "dsputil.h"
#include "mjpeg.h" #include "mjpeg.h"
#include "jpegls.h" #include "jpegls.h"

@ -27,6 +27,7 @@
#include "avcodec.h" #include "avcodec.h"
#include "bitstream.h" #include "bitstream.h"
#include "golomb.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, 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}; LOCO_YUY2=1, LOCO_UYVY=2, LOCO_RGB=3, LOCO_RGBA=4, LOCO_YV12=5};

@ -83,5 +83,35 @@ static av_always_inline int MULH(int a, int b){
# define MLS16(rt, ra, rb) ((rt) -= (ra) * (rb)) # define MLS16(rt, ra, rb) ((rt) -= (ra) * (rb))
#endif #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 */ #endif /* AVCODEC_MATHOPS_H */

@ -32,6 +32,7 @@
#include <limits.h> #include <limits.h>
#include "avcodec.h" #include "avcodec.h"
#include "dsputil.h" #include "dsputil.h"
#include "mathops.h"
#include "mpegvideo.h" #include "mpegvideo.h"
#undef NDEBUG #undef NDEBUG

@ -60,6 +60,7 @@
#include "roqvideo.h" #include "roqvideo.h"
#include "bytestream.h" #include "bytestream.h"
#include "elbg.h" #include "elbg.h"
#include "mathops.h"
#define CHROMA_BIAS 1 #define CHROMA_BIAS 1

@ -28,6 +28,7 @@
#include "dsputil.h" #include "dsputil.h"
#include "mpegvideo.h" #include "mpegvideo.h"
#include "golomb.h" #include "golomb.h"
#include "mathops.h"
#include "rectangle.h" #include "rectangle.h"
#include "rv34vlc.h" #include "rv34vlc.h"

@ -23,6 +23,7 @@
#include "snow.h" #include "snow.h"
#include "rangecoder.h" #include "rangecoder.h"
#include "mathops.h"
#include "mpegvideo.h" #include "mpegvideo.h"

@ -37,6 +37,7 @@
#include "avcodec.h" #include "avcodec.h"
#include "dsputil.h" #include "dsputil.h"
#include "mpegvideo.h" #include "mpegvideo.h"
#include "mathops.h"
#include "svq1.h" #include "svq1.h"

@ -34,6 +34,7 @@
#include "msmpeg4data.h" #include "msmpeg4data.h"
#include "unary.h" #include "unary.h"
#include "simple_idct.h" #include "simple_idct.h"
#include "mathops.h"
#undef NDEBUG #undef NDEBUG
#include <assert.h> #include <assert.h>

@ -21,6 +21,7 @@
#include "avcodec.h" #include "avcodec.h"
#include "dsputil.h" #include "dsputil.h"
#include "mpegvideo.h" #include "mpegvideo.h"
#include "mathops.h"
#include "msmpeg4.h" #include "msmpeg4.h"
#include "msmpeg4data.h" #include "msmpeg4data.h"
#include "intrax8.h" #include "intrax8.h"

@ -25,6 +25,7 @@
#include "libavutil/x86_cpu.h" #include "libavutil/x86_cpu.h"
#include "libavcodec/dsputil.h" #include "libavcodec/dsputil.h"
#include "libavcodec/mpegvideo.h" #include "libavcodec/mpegvideo.h"
#include "libavcodec/mathops.h"
#include "dsputil_mmx.h" #include "dsputil_mmx.h"

@ -22,6 +22,9 @@
#ifndef AVCODEC_X86_MATHOPS_H #ifndef AVCODEC_X86_MATHOPS_H
#define AVCODEC_X86_MATHOPS_H #define AVCODEC_X86_MATHOPS_H
#include "config.h"
#include "libavutil/common.h"
#define MULL(ra, rb, shift) \ #define MULL(ra, rb, shift) \
({ int rt, dummy; __asm__ (\ ({ int rt, dummy; __asm__ (\
"imull %3 \n\t"\ "imull %3 \n\t"\
@ -40,4 +43,25 @@
__asm__ ("imull %2\n\t" : "=A"(rt) : "a" ((int)ra), "g" ((int)rb));\ __asm__ ("imull %2\n\t" : "=A"(rt) : "a" ((int)ra), "g" ((int)rb));\
rt; }) 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 */ #endif /* AVCODEC_X86_MATHOPS_H */

@ -151,47 +151,6 @@ static inline av_const int av_log2_16bit(unsigned int v)
return n; return n;
} }
/* median of 3 */
static inline av_const int mid_pred(int a, int b, int c)
{
#if HAVE_CMOV
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;
#elif 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
}
/** /**
* clip a signed integer value into the amin-amax range * clip a signed integer value into the amin-amax range
* @param a value to clip * @param a value to clip

Loading…
Cancel
Save