summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2001-10-31 02:29:02 +0000
committerMichael Niedermayer <michaelni@gmx.at>2001-10-31 02:29:02 +0000
commit3407a972862e0f0b32403d795c8c2d34e7510d9e (patch)
tree7a94df596ed15b6e62ad02f18a25bb567d0d2c6d
parent02a0a992cd7e7fc8c6992ead07e42ae8a0e2e415 (diff)
c speedup (x1, rk1 filters)
Originally committed as revision 2587 to svn://svn.mplayerhq.hu/mplayer/trunk/postproc
-rw-r--r--postproc/postprocess.c30
-rw-r--r--postproc/postprocess_template.c30
2 files changed, 30 insertions, 30 deletions
diff --git a/postproc/postprocess.c b/postproc/postprocess.c
index da0bf13a17..ec792b4eac 100644
--- a/postproc/postprocess.c
+++ b/postproc/postprocess.c
@@ -670,20 +670,19 @@ static inline void vertRK1Filter(uint8_t *src, int stride, int QP)
// const int l8= stride + l7;
// const int l9= stride + l8;
int x;
+ const int QP15= QP + (QP>>2);
src+= stride*3;
for(x=0; x<BLOCK_SIZE; x++)
{
- if(ABS(src[l4]-src[l5]) < QP + QP/4)
+ const int v = (src[x+l5] - src[x+l4]);
+ if(ABS(v) < QP15)
{
- int v = (src[l5] - src[l4]);
-
- src[l3] +=v/8;
- src[l4] +=v/2;
- src[l5] -=v/2;
- src[l6] -=v/8;
+ src[x+l3] +=v>>3;
+ src[x+l4] +=v>>1;
+ src[x+l5] -=v>>1;
+ src[x+l6] -=v>>3;
}
- src++;
}
#endif
@@ -803,18 +802,19 @@ static inline void vertX1Filter(uint8_t *src, int stride, int QP)
int b= src[l4] - src[l5];
int c= src[l5] - src[l6];
- int d= MAX(ABS(b) - (ABS(a) + ABS(c))/2, 0);
+ int d= ABS(b) - ((ABS(a) + ABS(c))>>1);
+ d= MAX(d, 0);
if(d < QP)
{
int v = d * SIGN(-b);
- src[l2] +=v/8;
- src[l3] +=v/4;
- src[l4] +=3*v/8;
- src[l5] -=3*v/8;
- src[l6] -=v/4;
- src[l7] -=v/8;
+ src[l2] +=v>>3;
+ src[l3] +=v>>2;
+ src[l4] +=(3*v)>>3;
+ src[l5] -=(3*v)>>3;
+ src[l6] -=v>>2;
+ src[l7] -=v>>3;
}
src++;
diff --git a/postproc/postprocess_template.c b/postproc/postprocess_template.c
index da0bf13a17..ec792b4eac 100644
--- a/postproc/postprocess_template.c
+++ b/postproc/postprocess_template.c
@@ -670,20 +670,19 @@ static inline void vertRK1Filter(uint8_t *src, int stride, int QP)
// const int l8= stride + l7;
// const int l9= stride + l8;
int x;
+ const int QP15= QP + (QP>>2);
src+= stride*3;
for(x=0; x<BLOCK_SIZE; x++)
{
- if(ABS(src[l4]-src[l5]) < QP + QP/4)
+ const int v = (src[x+l5] - src[x+l4]);
+ if(ABS(v) < QP15)
{
- int v = (src[l5] - src[l4]);
-
- src[l3] +=v/8;
- src[l4] +=v/2;
- src[l5] -=v/2;
- src[l6] -=v/8;
+ src[x+l3] +=v>>3;
+ src[x+l4] +=v>>1;
+ src[x+l5] -=v>>1;
+ src[x+l6] -=v>>3;
}
- src++;
}
#endif
@@ -803,18 +802,19 @@ static inline void vertX1Filter(uint8_t *src, int stride, int QP)
int b= src[l4] - src[l5];
int c= src[l5] - src[l6];
- int d= MAX(ABS(b) - (ABS(a) + ABS(c))/2, 0);
+ int d= ABS(b) - ((ABS(a) + ABS(c))>>1);
+ d= MAX(d, 0);
if(d < QP)
{
int v = d * SIGN(-b);
- src[l2] +=v/8;
- src[l3] +=v/4;
- src[l4] +=3*v/8;
- src[l5] -=3*v/8;
- src[l6] -=v/4;
- src[l7] -=v/8;
+ src[l2] +=v>>3;
+ src[l3] +=v>>2;
+ src[l4] +=(3*v)>>3;
+ src[l5] -=(3*v)>>3;
+ src[l6] -=v>>2;
+ src[l7] -=v>>3;
}
src++;