<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><p>Hi</p><p><br></p><p>I had have trouble to get sound working under freebsd 8.1 amd64 arch. So i decide to dig in wine code and I create a simple "proof of concept" patch to get work my sound card. <br>********* SND STAT ********FreeBSD Audio Driver (newpcm: 64bit 2009061500/amd64)<br>Installed devices:<br>pcm0: <HDA Realtek ALC272 PCM #0 Analog> (play/rec) default <- This is my primary snd<br>pcm1: <HDA Realtek ALC272 PCM #1 Digital> (play)<br>pcm2: <HDA NVidia (Unknown) PCM #0 DisplayPort> (play)<br>pcm3: <HDA NVidia (Unknown) PCM #0 DisplayPort> (play)<br>pcm4: <HDA NVidia (Unknown) PCM #0 DisplayPort> (play)<br>pcm5: <HDA NVidia (Unknown) PCM #0 DisplayPort> (play)<br></p><p>****************************</p><p><br></p><p><br></p><p>Patch to get sound from wine ( which is compiled in /compat/i386 ).<br>******** PATCH
********<br><br>diff -Nrua audio.c-orig audio.c<br>--- audio.c-orig 2010-11-12 20:20:02.000000000 +0100<br>+++ audio.c 2010-11-14 13:43:41.000000000 +0100<br>@@ -1170,12 +1170,12 @@<br> }<br> else<br> {<br>- WOutDev[0].ossdev.dev_name = WInDev[0].ossdev.dev_name = StrDup("/dev/dsp",NULL);<br>+ WOutDev[0].ossdev.dev_name = WInDev[0].ossdev.dev_name = StrDup("/dev/dsp0.0",NULL);<br> WOutDev[0].ossdev.mixer_name = WInDev[0].ossdev.mixer_name = StrDup("/dev/mixer",NULL);<br> for (i = 1; i < MAX_WAVEDRV; ++i)<br> {<br> WOutDev[i].ossdev.dev_name = WInDev[i].ossdev.dev_name = HeapAlloc(GetProcessHeap(),0,11);<br>- sprintf(WOutDev[i].ossdev.dev_name, "/dev/dsp%u", i);<br>+ sprintf(WOutDev[i].ossdev.dev_name, "/dev/dsp0.%u", i);<br> WOutDev[i].ossdev.mixer_name = WInDev[i].ossdev.mixer_name = HeapAlloc(GetProcessHeap(),0,13);<br>
sprintf(WOutDev[i].ossdev.mixer_name, "/dev/mixer%u", i);<br> }<br>************************<br></p><p><br></p><p>I don't know what exactly /dev/dsp device is create with other snd drivers, but in my case it is /dev/dsp0.0.</p><p><br></p><p>To get fully work 6 wave_drv channels, i set some sysctls:<br>sysctl dev.pcm.0.play.vchans=6<br>sysctl dev.pcm.0.rec.vchans=6<br>sysctl hw.snd.maxautovchans=6<br><br>I think this is workaround for problems with audio under Linux, but in case of FreeBSD it is clear, so autodetection should be possible in this respect.<br></p><p><br></p><p>Sorry for my english.</p></td></tr></table><br>