[MPlayer-cvslog] CVS: main/postproc swscale.c, 1.148, 1.149 swscale_internal.h, 1.11, 1.12

Aurelien Jacobs CVS syncmail at mplayerhq.hu
Mon Jan 31 16:57:30 CET 2005


CVS change done by Aurelien Jacobs CVS

Update of /cvsroot/mplayer/main/postproc
In directory mail:/var2/tmp/cvs-serv20953/postproc

Modified Files:
	swscale.c swscale_internal.h 
Log Message:
makes funnyCode pages executable (for CPU with NX bit)

Index: swscale.c
===================================================================
RCS file: /cvsroot/mplayer/main/postproc/swscale.c,v
retrieving revision 1.148
retrieving revision 1.149
diff -u -r1.148 -r1.149
--- swscale.c	21 Jan 2005 16:48:18 -0000	1.148
+++ swscale.c	31 Jan 2005 15:57:27 -0000	1.149
@@ -61,6 +61,9 @@
 #else
 #include <stdlib.h>
 #endif
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
 #include "swscale.h"
 #include "swscale_internal.h"
 #include "../cpudetect.h"
@@ -1999,6 +2002,15 @@
 // can't downscale !!!
 		if(c->canMMX2BeUsed && (flags & SWS_FAST_BILINEAR))
 		{
+#define MAX_FUNNY_CODE_SIZE 10000
+#ifdef HAVE_SYS_MMAN_H
+			c->funnyYCode = (uint8_t*)mmap(NULL, MAX_FUNNY_CODE_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
+			c->funnyUVCode = (uint8_t*)mmap(NULL, MAX_FUNNY_CODE_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
+#else
+			c->funnyYCode = (uint8_t*)memalign(32, MAX_FUNNY_CODE_SIZE);
+			c->funnyUVCode = (uint8_t*)memalign(32, MAX_FUNNY_CODE_SIZE);
+#endif
+
 			c->lumMmx2Filter   = (int16_t*)memalign(8, (dstW        /8+8)*sizeof(int16_t));
 			c->chrMmx2Filter   = (int16_t*)memalign(8, (c->chrDstW  /4+8)*sizeof(int16_t));
 			c->lumMmx2FilterPos= (int32_t*)memalign(8, (dstW      /2/8+8)*sizeof(int32_t));
@@ -2556,6 +2568,16 @@
 	if(c->hChrFilterPos) free(c->hChrFilterPos);
 	c->hChrFilterPos = NULL;
 
+#ifdef HAVE_SYS_MMAN_H
+	if(c->funnyYCode) munmap(c->funnyYCode, MAX_FUNNY_CODE_SIZE);
+	if(c->funnyUVCode) munmap(c->funnyUVCode, MAX_FUNNY_CODE_SIZE);
+#else
+	if(c->funnyYCode) free(c->funnyYCode);
+	if(c->funnyUVCode) free(c->funnyUVCode);
+#endif
+	c->funnyYCode=NULL;
+	c->funnyUVCode=NULL;
+
 	if(c->lumMmx2Filter) free(c->lumMmx2Filter);
 	c->lumMmx2Filter=NULL;
 	if(c->chrMmx2Filter) free(c->chrMmx2Filter);

Index: swscale_internal.h
===================================================================
RCS file: /cvsroot/mplayer/main/postproc/swscale_internal.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- swscale_internal.h	5 Oct 2004 19:11:00 -0000	1.11
+++ swscale_internal.h	31 Jan 2005 15:57:27 -0000	1.12
@@ -82,8 +82,8 @@
 	int vLumBufSize;
 	int vChrBufSize;
 
-	uint8_t __attribute__((aligned(32))) funnyYCode[10000];
-	uint8_t __attribute__((aligned(32))) funnyUVCode[10000];
+	uint8_t *funnyYCode;
+	uint8_t *funnyUVCode;
 	int32_t *lumMmx2FilterPos;
 	int32_t *chrMmx2FilterPos;
 	int16_t *lumMmx2Filter;




More information about the MPlayer-cvslog mailing list