diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2001-11-24 02:05:06 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2001-11-24 02:05:06 +0000 |
commit | 4e1349d4e10842a1d1e05d8af9dfb4cb11048cf6 (patch) | |
tree | a94d2dd32467533cf1eec0e898add24c47133d3d /postproc/postprocess.c | |
parent | cd38e322ef2736ede1c59dd036db6547f132d361 (diff) | |
download | ffmpeg-4e1349d4e10842a1d1e05d8af9dfb4cb11048cf6.tar.gz |
use fastmemcpy for chrominance if no chrominance filtering is done
Originally committed as revision 3095 to svn://svn.mplayerhq.hu/mplayer/trunk/postproc
Diffstat (limited to 'postproc/postprocess.c')
-rw-r--r-- | postproc/postprocess.c | 47 |
1 files changed, 38 insertions, 9 deletions
diff --git a/postproc/postprocess.c b/postproc/postprocess.c index d0ae70b81e..a2e9174b70 100644 --- a/postproc/postprocess.c +++ b/postproc/postprocess.c @@ -62,7 +62,6 @@ optimize c versions try to unroll inner for(x=0 ... loop to avoid these damn if(x ... checks smart blur commandline option for the deblock / dering thresholds -memcpy chrominance if no chroma filtering is done ... */ @@ -80,6 +79,7 @@ memcpy chrominance if no chroma filtering is done //#define HAVE_3DNOW //#undef HAVE_MMX //#define DEBUG_BRIGHTNESS +#include "../libvo/fastmemcpy.h" #include "postprocess.h" #define MIN(a,b) ((a) > (b) ? (b) : (a)) @@ -3037,20 +3037,32 @@ void postprocess(unsigned char * src[], int src_stride, src_stride >>= 1; dst_stride >>= 1; - if(1) + if(ppMode.chromMode) { postProcess(src[1], src_stride, dst[1], dst_stride, horizontal_size, vertical_size, QP_store, QP_stride, 1, &ppMode); postProcess(src[2], src_stride, dst[2], dst_stride, horizontal_size, vertical_size, QP_store, QP_stride, 2, &ppMode); } + else if(src_stride == dst_stride) + { + memcpy(dst[1], src[1], src_stride*vertical_size); + memcpy(dst[2], src[2], src_stride*vertical_size); + } else { + int y; + for(y=0; y<vertical_size; y++) + { + memcpy(&(dst[1][y*dst_stride]), &(src[1][y*src_stride]), horizontal_size); + memcpy(&(dst[2][y*dst_stride]), &(src[2][y*src_stride]), horizontal_size); + } + } + +#if 0 memset(dst[1], 128, dst_stride*vertical_size); memset(dst[2], 128, dst_stride*vertical_size); -// memcpy(dst[1], src[1], src_stride*horizontal_size); -// memcpy(dst[2], src[2], src_stride*horizontal_size); - } +#endif } void postprocess2(unsigned char * src[], int src_stride, @@ -3085,10 +3097,27 @@ void postprocess2(unsigned char * src[], int src_stride, src_stride >>= 1; dst_stride >>= 1; - postProcess(src[1], src_stride, dst[1], dst_stride, - horizontal_size, vertical_size, QP_store, QP_stride, 1, mode); - postProcess(src[2], src_stride, dst[2], dst_stride, - horizontal_size, vertical_size, QP_store, QP_stride, 2, mode); + if(mode->chromMode) + { + postProcess(src[1], src_stride, dst[1], dst_stride, + horizontal_size, vertical_size, QP_store, QP_stride, 1, mode); + postProcess(src[2], src_stride, dst[2], dst_stride, + horizontal_size, vertical_size, QP_store, QP_stride, 2, mode); + } + else if(src_stride == dst_stride) + { + memcpy(dst[1], src[1], src_stride*vertical_size); + memcpy(dst[2], src[2], src_stride*vertical_size); + } + else + { + int y; + for(y=0; y<vertical_size; y++) + { + memcpy(&(dst[1][y*dst_stride]), &(src[1][y*src_stride]), horizontal_size); + memcpy(&(dst[2][y*dst_stride]), &(src[2][y*src_stride]), horizontal_size); + } + } } |