diff options
author | XhmikosR <xhmikosr@users.sourceforge.net> | 2012-09-17 23:00:22 +0400 |
---|---|---|
committer | XhmikosR <xhmikosr@users.sourceforge.net> | 2012-09-17 23:11:15 +0400 |
commit | 8dab9e55b7b8b21031335346e895f21ed6b889df (patch) | |
tree | 0186b821359bb371348fee4d3778c054fe996bba /src/thirdparty/VirtualDub/Kasumi/source | |
parent | b38aefc1bcc2fc71fd38ce8258c39e49e14648ce (diff) |
update VirtualDub to v1.10.3-test6
Diffstat (limited to 'src/thirdparty/VirtualDub/Kasumi/source')
-rw-r--r-- | src/thirdparty/VirtualDub/Kasumi/source/blt.cpp | 9 | ||||
-rw-r--r-- | src/thirdparty/VirtualDub/Kasumi/source/blt_reference_yuv.cpp | 23 | ||||
-rw-r--r-- | src/thirdparty/VirtualDub/Kasumi/source/region.cpp | 15 |
3 files changed, 28 insertions, 19 deletions
diff --git a/src/thirdparty/VirtualDub/Kasumi/source/blt.cpp b/src/thirdparty/VirtualDub/Kasumi/source/blt.cpp index 7a5d1c7c1..7a3fabea0 100644 --- a/src/thirdparty/VirtualDub/Kasumi/source/blt.cpp +++ b/src/thirdparty/VirtualDub/Kasumi/source/blt.cpp @@ -18,6 +18,7 @@ #include <stdafx.h>
#include <vector>
+#include <malloc.h>
#include <vd2/system/memory.h>
#include <vd2/system/cpuaccel.h>
#include <vd2/system/vdstl.h>
@@ -25,12 +26,6 @@ #include <vd2/Kasumi/pixmaputils.h>
#include <vd2/Kasumi/pixmapops.h>
-#if _MSC_VER >= 1300
- #define VDNOINLINE __declspec(noinline)
-#else
- #define VDNOINLINE
-#endif
-
using namespace nsVDPixmap;
namespace {
@@ -177,7 +172,7 @@ bool VDNOINLINE VDPixmapBltTwoStage(const VDPixmap& dst, const VDPixmap& src, vd VDPixmap linetmp = {};
if (w < 1024) {
- linetmp.data = _alloca(sizeof(uint32) * w);
+ linetmp.data = alloca(sizeof(uint32) * w);
} else {
tempBuf.resize(w + 1);
linetmp.data = tempBuf.data();
diff --git a/src/thirdparty/VirtualDub/Kasumi/source/blt_reference_yuv.cpp b/src/thirdparty/VirtualDub/Kasumi/source/blt_reference_yuv.cpp index ffd96052f..51c8afe28 100644 --- a/src/thirdparty/VirtualDub/Kasumi/source/blt_reference_yuv.cpp +++ b/src/thirdparty/VirtualDub/Kasumi/source/blt_reference_yuv.cpp @@ -21,6 +21,7 @@ #include <vd2/system/vdstl.h>
#include <vd2/system/cpuaccel.h>
#include <vd2/system/memory.h>
+#include <vd2/system/win32/intrin.h>
#include <vd2/Kasumi/pixmap.h>
#include <vd2/Kasumi/pixmaputils.h>
@@ -1174,7 +1175,7 @@ void VDPixmapBlt_YUVPlanar_decode_reference(const VDPixmap& dst, const VDPixmap& #ifdef _M_IX86
if (cpuflags & CPUF_SUPPORTS_MMX) {
- __asm emms
+ _mm_empty();
}
#endif
}
@@ -1308,7 +1309,7 @@ namespace { #ifdef _M_IX86
if (cpuflags & CPUF_SUPPORTS_MMX) {
- __asm emms
+ _mm_empty();
}
#endif
}
@@ -1360,7 +1361,7 @@ DECLARE_YUV_PLANAR(YUV411, XRGB1555) { vdpixsize wt;
if (wpairs > 0) {
-#ifdef _M_AMD64
+#if !defined(VD_CPU_X86)
wt = wpairs;
do {
@@ -1405,8 +1406,8 @@ DECLARE_YUV_PLANAR(YUV411, XRGB1555) { vdptrstep(crrow, crpitch);
} while(--h);
-#ifndef _M_AMD64
- __asm emms
+#ifdef VD_CPU_X86
+ _mm_empty();
#endif
}
@@ -1431,7 +1432,7 @@ DECLARE_YUV_PLANAR(YUV411, RGB565) { vdpixsize wt;
if (wpairs > 0) {
-#if _M_AMD64
+#if !defined(VD_CPU_X86)
wt = wpairs;
do {
@@ -1472,8 +1473,8 @@ DECLARE_YUV_PLANAR(YUV411, RGB565) { vdptrstep(crrow, crpitch);
} while(--h);
-#ifndef _M_AMD64
- __asm emms
+#ifdef VD_CPU_X86
+ _mm_empty();
#endif
}
@@ -1558,7 +1559,7 @@ DECLARE_YUV_PLANAR(YUV411, XRGB8888) { vdpixsize wt;
if (wpairs > 0) {
-#ifdef _M_AMD64
+#if !defined(VD_CPU_X86)
wt = wpairs;
do {
@@ -1603,7 +1604,7 @@ DECLARE_YUV_PLANAR(YUV411, XRGB8888) { vdptrstep(crrow, crpitch);
} while(--h);
-#ifndef _M_AMD64
- __asm emms
+#ifdef VD_CPU_X86
+ _mm_empty();
#endif
}
diff --git a/src/thirdparty/VirtualDub/Kasumi/source/region.cpp b/src/thirdparty/VirtualDub/Kasumi/source/region.cpp index de605abc0..b8b607ef0 100644 --- a/src/thirdparty/VirtualDub/Kasumi/source/region.cpp +++ b/src/thirdparty/VirtualDub/Kasumi/source/region.cpp @@ -23,6 +23,10 @@ #include <vd2/system/math.h>
#include <vd2/system/vdstl.h>
+void VDPixmapRegion::clear() {
+ mSpans.clear();
+}
+
void VDPixmapRegion::swap(VDPixmapRegion& x) {
mSpans.swap(x.mSpans);
std::swap(mBounds, x.mBounds);
@@ -1344,9 +1348,15 @@ a_start: dst.mSpans.resize(dstp - dst.mSpans.data());
}
-void VDPixmapConvolveRegion(VDPixmapRegion& dst, const VDPixmapRegion& r1, const VDPixmapRegion& r2) {
+void VDPixmapConvolveRegion(VDPixmapRegion& dst, const VDPixmapRegion& r1, const VDPixmapRegion& r2, VDPixmapRegion *tempCache) {
VDPixmapRegion temp;
+ if (tempCache) {
+ tempCache->swap(temp);
+
+ temp.clear();
+ }
+
const uint32 *src1 = r2.mSpans.data();
const uint32 *src2 = src1 + r2.mSpans.size();
@@ -1359,4 +1369,7 @@ void VDPixmapConvolveRegion(VDPixmapRegion& dst, const VDPixmapRegion& r1, const temp.mSpans.swap(dst.mSpans);
VDPixmapConvolveRegion(dst, temp, r1, (p1 & 0xffff) - 0x8000, (p2 & 0xffff) - 0x8000, (p1 >> 16) - 0x8000);
}
+
+ if (tempCache)
+ tempCache->swap(temp);
}
|