Date: Fri, 17 Dec 2010 19:02:20 +0200 From: Andriy Gapon <avg@freebsd.org> To: Martin Matuska <mm@freebsd.org>, freebsd-multimedia@freebsd.org Cc: Konstantin Belousov <kib@freebsd.org> Subject: Re: ffmpeg and mmap Message-ID: <4D0B979C.2080806@freebsd.org> In-Reply-To: <4D0B9752.6020308@freebsd.org> References: <4D05332C.7010208@freebsd.org> <4D0B9752.6020308@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
on 17/12/2010 19:01 Andriy Gapon said the following:
>
> Martin,
>
> apologies - my report was incomplete. I really meant to include the following new
> information at that time, but somehow I forgot about it and the
> _BSD_VISIBLE/POSIX_C_SOURCE discussion that followed distracted me.
And a more formal patch:
--- libswscale/utils.c.orig 2010-12-17 18:58:26.307218801 +0200
+++ libswscale/utils.c 2010-12-17 19:00:13.409221287 +0200
@@ -955,8 +955,8 @@
c->chrMmx2FilterCodeSize = initMMX2HScaler(c->chrDstW, c->chrXInc,
NULL, NULL, NULL, 4);
#ifdef MAP_ANONYMOUS
- c->lumMmx2FilterCode = mmap(NULL, c->lumMmx2FilterCodeSize, PROT_READ
| PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
- c->chrMmx2FilterCode = mmap(NULL, c->chrMmx2FilterCodeSize, PROT_READ
| PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
+ c->lumMmx2FilterCode = mmap(NULL, c->lumMmx2FilterCodeSize, PROT_READ
| PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+ c->chrMmx2FilterCode = mmap(NULL, c->chrMmx2FilterCodeSize, PROT_READ
| PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
#elif HAVE_VIRTUALALLOC
c->lumMmx2FilterCode = VirtualAlloc(NULL, c->lumMmx2FilterCodeSize,
MEM_COMMIT, PAGE_EXECUTE_READWRITE);
c->chrMmx2FilterCode = VirtualAlloc(NULL, c->chrMmx2FilterCodeSize,
MEM_COMMIT, PAGE_EXECUTE_READWRITE);
@@ -965,7 +965,11 @@
c->chrMmx2FilterCode = av_malloc(c->chrMmx2FilterCodeSize);
#endif
+#ifdef MAP_ANONYMOUS
+ if (c->lumMmx2FilterCode == MAP_FAILED || c->chrMmx2FilterCode ==
MAP_FAILED)
+#else
if (!c->lumMmx2FilterCode || !c->chrMmx2FilterCode)
+#endif
goto fail;
FF_ALLOCZ_OR_GOTO(c, c->hLumFilter , (dstW
/8+8)*sizeof(int16_t), fail);
FF_ALLOCZ_OR_GOTO(c, c->hChrFilter , (c->chrDstW
/4+8)*sizeof(int16_t), fail);
--
Andriy Gapon
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4D0B979C.2080806>
