On Wed, Nov 23, 2016 at 12:22:05PM +1100, Nathanial Sloss wrote: > Hi, > > I've made changes to in kernel audio mixing and made them available at > ftp.NetBSD.org/pub/NetBSD/misc/nat/nextaudio5-kern.gz > > This patch includes only changes to audio the synthesized spkr device will be > in a follow up email. > > New in this version a new audio ioctl to select your audio channel based on > process id of it's controlling process, changes to audioctl(1) to demonstrate > this. > > /dev/sound keeps setting of the last process that changed parameters and it > is > possible to use audioctl(1) on /dev/sound to set parameters before opening > /dev/sound. > > Simultaneous recording channels with independent volume / recording paraeter > control. > > Also a sysctl to set the common format use full for when hw available > precision and or channels are greater than 2ch 16 bit 44100 Hz. > > Please take a look, if there are no objections I would like to commit this in > two weeks. > > Best regards, > > Nat
I've mostly tried to use it, not review the code.. Please include the definition of D_MCLOSE in the diff, otherwise it does not compile. I've tried to use it with firefox (PKG_DEFAULT_OPTIONS="-pulseaudio oss") and mpv. Both seem to have problems: - audio seems to be underrunning maybe? even when playing a single stream. It's periodically broken. I've tried to adjust buffer size but to no avail. - playing multiple streams lowers volume - firefox is unable to play audio from multiple tabs, I don't know what is wrong with it. changing to output to /dev/sound did not help. If you'd like to poke around, note it's easier to delete work/.build_done to retry. - audioctl -a seems to still say play.rate=8000 - I ended up with `audioctl -a` hanging, with this trace: sleepq_block() at sleepq_block+0x97 cv_wait_sig() at cv_wait_sig+0xfe audio_drain() at audio_drain+0xfc audio_close() at audio_close+0x26b audioclose() at audioclose+0xe7 spec_close() at spec_close+0x11a VOP_CLOSE() at VOP_CLOSE+0x33 vn_close() at vn_close+0x36 closef() at closef+0x54 fd_free() at fd_free+0xcb exit1() at exit1+0x11d sys_exit() at sys_exit+0x3d syscall() at syscall+0x15b --- syscall (number 1) --- 734e91139efa:
