Browse Source

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
tags/v0.5
Aurelien Jacobs 16 years ago
parent
commit
199436b952
20 changed files with 71 additions and 41 deletions
  1. +1
    -0
      libavcodec/cavs.c
  2. +1
    -0
      libavcodec/dsputil.c
  3. +1
    -0
      libavcodec/ffv1.c
  4. +1
    -0
      libavcodec/h263.c
  5. +1
    -0
      libavcodec/h264.c
  6. +1
    -0
      libavcodec/huffyuv.c
  7. +1
    -0
      libavcodec/jpeglsdec.c
  8. +1
    -0
      libavcodec/jpeglsenc.c
  9. +1
    -0
      libavcodec/loco.c
  10. +30
    -0
      libavcodec/mathops.h
  11. +1
    -0
      libavcodec/motion_est.c
  12. +1
    -0
      libavcodec/roqvideoenc.c
  13. +1
    -0
      libavcodec/rv34.c
  14. +1
    -0
      libavcodec/snow.c
  15. +1
    -0
      libavcodec/svq1dec.c
  16. +1
    -0
      libavcodec/vc1.c
  17. +1
    -0
      libavcodec/wmv2dec.c
  18. +1
    -0
      libavcodec/x86/dsputilenc_mmx.c
  19. +24
    -0
      libavcodec/x86/mathops.h
  20. +0
    -41
      libavutil/common.h

+ 1
- 0
libavcodec/cavs.c View File

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



+ 1
- 0
libavcodec/dsputil.c View File

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



+ 1
- 0
libavcodec/ffv1.c View File

@@ -30,6 +30,7 @@
#include "dsputil.h"
#include "rangecoder.h"
#include "golomb.h"
#include "mathops.h"

#define MAX_PLANES 4
#define CONTEXT_SIZE 32


+ 1
- 0
libavcodec/h263.c View File

@@ -39,6 +39,7 @@
#include "mpegvideo.h"
#include "h263data.h"
#include "mpeg4data.h"
#include "mathops.h"

//#undef NDEBUG
//#include <assert.h>


+ 1
- 0
libavcodec/h264.c View File

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



+ 1
- 0
libavcodec/huffyuv.c View File

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

#define VLC_BITS 11



+ 1
- 0
libavcodec/jpeglsdec.c View File

@@ -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"


+ 1
- 0
libavcodec/jpeglsenc.c View File

@@ -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"


+ 1
- 0
libavcodec/loco.c View File

@@ -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};


+ 30
- 0
libavcodec/mathops.h View File

@@ -83,5 +83,35 @@ static av_always_inline int MULH(int a, int b){
# 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 */


+ 1
- 0
libavcodec/motion_est.c View File

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

#undef NDEBUG


+ 1
- 0
libavcodec/roqvideoenc.c View File

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

#define CHROMA_BIAS 1



+ 1
- 0
libavcodec/rv34.c View File

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

#include "rv34vlc.h"


+ 1
- 0
libavcodec/snow.c View File

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

#include "rangecoder.h"
#include "mathops.h"

#include "mpegvideo.h"



+ 1
- 0
libavcodec/svq1dec.c View File

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

#include "svq1.h"



+ 1
- 0
libavcodec/vc1.c View File

@@ -34,6 +34,7 @@
#include "msmpeg4data.h"
#include "unary.h"
#include "simple_idct.h"
#include "mathops.h"

#undef NDEBUG
#include <assert.h>


+ 1
- 0
libavcodec/wmv2dec.c View File

@@ -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"


+ 1
- 0
libavcodec/x86/dsputilenc_mmx.c View File

@@ -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"




+ 24
- 0
libavcodec/x86/mathops.h View File

@@ -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 */

+ 0
- 41
libavutil/common.h View File

@@ -151,47 +151,6 @@ static inline av_const int av_log2_16bit(unsigned int v)
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
* @param a value to clip


Loading…
Cancel
Save