summaryrefslogtreecommitdiffstats
path: root/postproc
diff options
context:
space:
mode:
authormichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-11-24 02:05:06 +0000
committermichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-11-24 02:05:06 +0000
commitbecadec644aa84b399c9b1dbacfcdd486b45fd32 (patch)
treeb3099aade9f2a00cec0b71208816fba499b8dbea /postproc
parent39595a9f2ebe3daf21063824d29174716c11788a (diff)
downloadmpv-becadec644aa84b399c9b1dbacfcdd486b45fd32.tar.bz2
mpv-becadec644aa84b399c9b1dbacfcdd486b45fd32.tar.xz
use fastmemcpy for chrominance if no chrominance filtering is done
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@3095 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'postproc')
-rw-r--r--postproc/postprocess.c47
-rw-r--r--postproc/postprocess_template.c47
2 files changed, 76 insertions, 18 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);
+ }
+ }
}
diff --git a/postproc/postprocess_template.c b/postproc/postprocess_template.c
index d0ae70b81e..a2e9174b70 100644
--- a/postproc/postprocess_template.c
+++ b/postproc/postprocess_template.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);
+ }
+ }
}