[MPlayer-dev-eng] [PATCH] vo_macosx: use mmap instead of shmat for MPlayerOSX

Ulion ulion2002 at gmail.com
Mon Oct 13 15:07:13 CEST 2008


2008/10/13 Adrian Stutz <adrian at sttz.ch>:
> MPlayerOSX and vo_macosx use shmget and shmat for the internal video output
> to get the video image to the GUI process.
> OSX globally limits the shared memory to 4MB and if other applications
> already use shared memory mplayer fails to initialize vo_macosx.
>
> Steps to reproduce:
> Either make an application use up most of the shared memory or lower the
> limit using:
>> sudo sysctl -w kern.sysv.shmall=1
> (reset back to default with "sudo sysctl -w kern.sysv.shmall=1024")
> Then try to play a video with MPlayerOSX with the internal video output.
> Audio starts to play but there's no video. In the console following message
> gets repeated:
>> vo_mplayer shmget: : Cannot allocate memory
>> FATAL: Cannot initialize video driver.
>
> Solution (see attached patches):
> Use shm_open and mmap instead of shmget and shmat.
> This seems to be recommended by Apple over shmat and works even with the low
> limit set above.
>
> I'm not versed in this an made the patch mostly based on the example here:
> http://www.opengroup.org/onlinepubs/007908799/xsh/shm_open.html
> I've tested it on Leopard and will try to test it on Tiger next week.
>
> The idea of this patch comes from the bug report by Camillo Lists:
> http://bugzilla.mplayerhq.hu/show_bug.cgi?id=1295

it looks not bad, I have two questions:

1. although the same problem may also exists in current code, should
the shm_id be unlinked when any error occurs after shm_open?
2. will this work on 10.3.*?


-- 
Ulion



More information about the MPlayer-dev-eng mailing list