summaryrefslogtreecommitdiff
path: root/libavcodec/common.h
diff options
context:
space:
mode:
Diffstat (limited to 'libavcodec/common.h')
-rw-r--r--libavcodec/common.h36
1 files changed, 22 insertions, 14 deletions
diff --git a/libavcodec/common.h b/libavcodec/common.h
index e0e90225c0..2440e5f095 100644
--- a/libavcodec/common.h
+++ b/libavcodec/common.h
@@ -1012,23 +1012,31 @@ static inline int av_log2_16bit(unsigned int v)
return n;
}
-
/* median of 3 */
static inline int mid_pred(int a, int b, int c)
{
- int vmin, vmax;
- vmax = vmin = a;
- if (b < vmin)
- vmin = b;
- else
- vmax = b;
-
- if (c < vmin)
- vmin = c;
- else if (c > vmax)
- vmax = c;
-
- return a + b + c - vmin - vmax;
+#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
}
static inline int clip(int a, int amin, int amax)