diff options
author | michael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-10-31 02:29:02 +0000 |
---|---|---|
committer | michael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-10-31 02:29:02 +0000 |
commit | c49f4a4d6f314bf565eec4b97116301ac29e43a5 (patch) | |
tree | 0b36aaa7f8d89c298a2a12e768bbf67d38087995 /postproc | |
parent | e9fecf0fea38825c7ec8e3929cb4ca2e1640dc2e (diff) | |
download | mpv-c49f4a4d6f314bf565eec4b97116301ac29e43a5.tar.bz2 mpv-c49f4a4d6f314bf565eec4b97116301ac29e43a5.tar.xz |
c speedup (x1, rk1 filters)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@2587 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'postproc')
-rw-r--r-- | postproc/postprocess.c | 30 | ||||
-rw-r--r-- | postproc/postprocess_template.c | 30 |
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++; |