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;