summaryrefslogtreecommitdiffstats
path: root/libvo
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-06-28 11:24:12 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-06-28 11:24:12 +0000
commitad164e04ee0330426917f00275fccc2203aff653 (patch)
tree7eaba8b9a79e9ec5f54daf5a7ccdd41d2b26001e /libvo
parent78fb17276c503df51c7002bdff420bc075ebdc8e (diff)
downloadmpv-ad164e04ee0330426917f00275fccc2203aff653.tar.bz2
mpv-ad164e04ee0330426917f00275fccc2203aff653.tar.xz
Get rid of my_memcpy_pic code duplication in many filters.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23686 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo')
-rw-r--r--libvo/fastmemcpy.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/libvo/fastmemcpy.h b/libvo/fastmemcpy.h
index 295efd8077..5c8b7add64 100644
--- a/libvo/fastmemcpy.h
+++ b/libvo/fastmemcpy.h
@@ -68,12 +68,21 @@ static inline void * mem2agpcpy_pic(void * dst, const void * src, int bytesPerLi
return retval;
}
-static inline void * memcpy_pic(void * dst, const void * src, int bytesPerLine, int height, int dstStride, int srcStride)
+#define memcpy_pic(d, s, b, h, ds, ss) memcpy_pic2(d, s, b, h, ds, ss, 0)
+#define my_memcpy_pic(d, s, b, h, ds, ss) memcpy_pic2(d, s, b, h, ds, ss, 1)
+
+/**
+ * \param limit2width always skip data between end of line and start of next
+ * instead of copying the full block when strides are the same
+ */
+static inline void * memcpy_pic2(void * dst, const void * src,
+ int bytesPerLine, int height,
+ int dstStride, int srcStride, int limit2width)
{
int i;
void *retval=dst;
- if(dstStride == srcStride)
+ if(!limit2width && dstStride == srcStride)
{
if (srcStride < 0) {
src = (uint8_t*)src + (height-1)*srcStride;