Mercurial > mplayer.hg
comparison libswscale/swscale.c @ 28971:b8e356a9dbb1
Allocate executable memory with VirtualAlloc() in Windows.
author | ramiro |
---|---|
date | Thu, 19 Mar 2009 21:52:44 +0000 |
parents | e7d045219b2b |
children | 341e3ff25281 |
comparison
equal
deleted
inserted
replaced
28970:e7d045219b2b | 28971:b8e356a9dbb1 |
---|---|
65 #if HAVE_SYS_MMAN_H | 65 #if HAVE_SYS_MMAN_H |
66 #include <sys/mman.h> | 66 #include <sys/mman.h> |
67 #if defined(MAP_ANON) && !defined(MAP_ANONYMOUS) | 67 #if defined(MAP_ANON) && !defined(MAP_ANONYMOUS) |
68 #define MAP_ANONYMOUS MAP_ANON | 68 #define MAP_ANONYMOUS MAP_ANON |
69 #endif | 69 #endif |
70 #endif | |
71 #if HAVE_VIRTUALALLOC | |
72 #define WIN32_LEAN_AND_MEAN | |
73 #include <windows.h> | |
70 #endif | 74 #endif |
71 #include "swscale.h" | 75 #include "swscale.h" |
72 #include "swscale_internal.h" | 76 #include "swscale_internal.h" |
73 #include "rgb2rgb.h" | 77 #include "rgb2rgb.h" |
74 #include "libavutil/x86_cpu.h" | 78 #include "libavutil/x86_cpu.h" |
2564 if (c->canMMX2BeUsed && (flags & SWS_FAST_BILINEAR)) | 2568 if (c->canMMX2BeUsed && (flags & SWS_FAST_BILINEAR)) |
2565 { | 2569 { |
2566 #ifdef MAP_ANONYMOUS | 2570 #ifdef MAP_ANONYMOUS |
2567 c->funnyYCode = mmap(NULL, MAX_FUNNY_CODE_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); | 2571 c->funnyYCode = mmap(NULL, MAX_FUNNY_CODE_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); |
2568 c->funnyUVCode = mmap(NULL, MAX_FUNNY_CODE_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); | 2572 c->funnyUVCode = mmap(NULL, MAX_FUNNY_CODE_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); |
2573 #elif HAVE_VIRTUALALLOC | |
2574 c->funnyYCode = VirtualAlloc(NULL, MAX_FUNNY_CODE_SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE); | |
2575 c->funnyUVCode = VirtualAlloc(NULL, MAX_FUNNY_CODE_SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE); | |
2569 #else | 2576 #else |
2570 c->funnyYCode = av_malloc(MAX_FUNNY_CODE_SIZE); | 2577 c->funnyYCode = av_malloc(MAX_FUNNY_CODE_SIZE); |
2571 c->funnyUVCode = av_malloc(MAX_FUNNY_CODE_SIZE); | 2578 c->funnyUVCode = av_malloc(MAX_FUNNY_CODE_SIZE); |
2572 #endif | 2579 #endif |
2573 | 2580 |
3212 | 3219 |
3213 #if ARCH_X86 && CONFIG_GPL | 3220 #if ARCH_X86 && CONFIG_GPL |
3214 #ifdef MAP_ANONYMOUS | 3221 #ifdef MAP_ANONYMOUS |
3215 if (c->funnyYCode ) munmap(c->funnyYCode , MAX_FUNNY_CODE_SIZE); | 3222 if (c->funnyYCode ) munmap(c->funnyYCode , MAX_FUNNY_CODE_SIZE); |
3216 if (c->funnyUVCode) munmap(c->funnyUVCode, MAX_FUNNY_CODE_SIZE); | 3223 if (c->funnyUVCode) munmap(c->funnyUVCode, MAX_FUNNY_CODE_SIZE); |
3224 #elif HAVE_VIRTUALALLOC | |
3225 if (c->funnyYCode ) VirtualFree(c->funnyYCode , MAX_FUNNY_CODE_SIZE, MEM_RELEASE); | |
3226 if (c->funnyUVCode) VirtualFree(c->funnyUVCode, MAX_FUNNY_CODE_SIZE, MEM_RELEASE); | |
3217 #else | 3227 #else |
3218 av_free(c->funnyYCode ); | 3228 av_free(c->funnyYCode ); |
3219 av_free(c->funnyUVCode); | 3229 av_free(c->funnyUVCode); |
3220 #endif | 3230 #endif |
3221 c->funnyYCode=NULL; | 3231 c->funnyYCode=NULL; |