diff options
author | ramiro <ramiro@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2009-03-19 21:52:44 +0000 |
---|---|---|
committer | ramiro <ramiro@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2009-03-19 21:52:44 +0000 |
commit | bf1cf8da02d174880d5ff008ebcced68cedf4875 (patch) | |
tree | 737548c1f28775a2dd8967fff96b54a09392aab1 /libswscale/swscale.c | |
parent | 2826ad5e4005dfa842e1b9b46d398ead547b8c99 (diff) | |
download | mpv-bf1cf8da02d174880d5ff008ebcced68cedf4875.tar.bz2 mpv-bf1cf8da02d174880d5ff008ebcced68cedf4875.tar.xz |
Allocate executable memory with VirtualAlloc() in Windows.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29006 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libswscale/swscale.c')
-rw-r--r-- | libswscale/swscale.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libswscale/swscale.c b/libswscale/swscale.c index a10122a19c..9a74f95f86 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -68,6 +68,10 @@ untested special converters #define MAP_ANONYMOUS MAP_ANON #endif #endif +#if HAVE_VIRTUALALLOC +#define WIN32_LEAN_AND_MEAN +#include <windows.h> +#endif #include "swscale.h" #include "swscale_internal.h" #include "rgb2rgb.h" @@ -2566,6 +2570,9 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d #ifdef MAP_ANONYMOUS c->funnyYCode = mmap(NULL, MAX_FUNNY_CODE_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); c->funnyUVCode = mmap(NULL, MAX_FUNNY_CODE_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); +#elif HAVE_VIRTUALALLOC + c->funnyYCode = VirtualAlloc(NULL, MAX_FUNNY_CODE_SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE); + c->funnyUVCode = VirtualAlloc(NULL, MAX_FUNNY_CODE_SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE); #else c->funnyYCode = av_malloc(MAX_FUNNY_CODE_SIZE); c->funnyUVCode = av_malloc(MAX_FUNNY_CODE_SIZE); @@ -3214,6 +3221,9 @@ void sws_freeContext(SwsContext *c){ #ifdef MAP_ANONYMOUS if (c->funnyYCode ) munmap(c->funnyYCode , MAX_FUNNY_CODE_SIZE); if (c->funnyUVCode) munmap(c->funnyUVCode, MAX_FUNNY_CODE_SIZE); +#elif HAVE_VIRTUALALLOC + if (c->funnyYCode ) VirtualFree(c->funnyYCode , MAX_FUNNY_CODE_SIZE, MEM_RELEASE); + if (c->funnyUVCode) VirtualFree(c->funnyUVCode, MAX_FUNNY_CODE_SIZE, MEM_RELEASE); #else av_free(c->funnyYCode ); av_free(c->funnyUVCode); |