FreeBSD The Power to Serve

Audio Stack Improvements

Contact: Christos Margiolis <christos@FreeBSD.org>

The FreeBSD audio stack is one of those fields that does not attract the same attention and development as others do, since it has been left largely unmaintained, and, although high in quality, there is still room for improvement — from lack of audio development frameworks, to missing userland utilities and kernel driver-related bugs. This project is meant to touch on all those areas, and as such, is more of a general improvement project, than an implementation of a specific feature.

Important work since last report:

  • Asynchronous audio device detach is now possible. This functionality already ships with FreeBSD 14.1-RELEASE, as well as 14-STABLE.

  • Got rid of the "snd_clone" device cloning framework used in sound(4) and replaced it with DEVFS_CDEVPRIV(9). More info about behavior changes in the commit description. Also ships with 14.1-RELEASE and 14-STABLE.

  • Several sound(4) crash and bug fixes.

  • More out of the box support for snd_hda(4) laptop sound.

  • Series of commits that clean up and simplify parts of sound(4).

  • Several fixes regarding the OSS API, with the most notable so far being a proper implementation of the SNDCTL_AUDIOINFO and SNDCTL_ENGINEINFO IOCTLs.

  • Started implementing audio(3), an OSS audio and MIDI library.

  • Took over maintenance of virtual_oss(8).

Future work includes:

  • Implementation of an audio(8) utility, in similar fashion to mixer(8).

  • Implementation of a bluetooth device management utility.

  • Improve mixer(3) and mixer(8).

  • Improve documentation and test suite where needed.

  • Attempt to find a better (ideally automatic) way to handle snd_hda(4) pin-patching. This is an experimental attempt and is not guaranteed to actually yield a working result.

You can also follow the development process in freebsd-multimedia@, where I post regular reports.

Sponsor: The FreeBSD Foundation


Last modified on: August 18, 2024 by Lorenzo Salvadore