tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Audio - In kernel audio mixing

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 
> 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
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) ---

Home | Main Index | Thread Index | Old Index