[Development report #26] Audio Stack Improvements

From: Christos Margiolis <christos_at_freebsd.org>
Date: Tue, 24 Dec 2024 15:23:24 UTC
Working on previous weeks' patches. Received lots of useful feedback on
most of them.

sound: Refactor the format conversion framework:
https://reviews.freebsd.org/D47932

	- Implemented unit tests for the format conversion functions and
	  fixed some regressions.
	- Made the conversion functions alignment-agnostic to reduce
	  code size and complexity.
	- Still addressing some comments.

sound: Allocate vchans on-demand:
https://reviews.freebsd.org/D47917

	- Addressed comments, fixed bugs.

sound: Implement AFMT_FLOAT support:
https://reviews.freebsd.org/D47638

	- Added support in feeder_chain.c, feeder_rate.c and
	  feeder_volume.c.
	- Rebase to work with D47932.
	- Define AFMT_F32_OE.
	- Making the implementation alignment-agnostic, similar to how
	  D47932 works for the other formats.
	- Writing unit tests.

sound: Bail out early if a format is not supported:
https://reviews.freebsd.org/D48031

sound: Remove macro magic from pcm/feeder_eq.c:
https://reviews.freebsd.org/D48032

sound: Remove macro magic from pcm/feeder_matrix.c:
https://reviews.freebsd.org/D48035

sound: Remove feed_matrix_apply_generic():
https://reviews.freebsd.org/D48036

sound: Refactor the format conversion framework:
https://reviews.freebsd.org/D47932

sound: Do not return an error from chn_notify() if the children list is empty:
https://reviews.freebsd.org/D48156

sound: Call vchan_destroy() on vchan_create() failure:
https://reviews.freebsd.org/D48183

sound: Do not fail from vchan_destroy() if children list is empty:
https://reviews.freebsd.org/D48185

2024Q4 report committed:
https://cgit.freebsd.org/doc/commit/?id=cb4812ed9af51a701f72874e54fcfbf97f5e2346

FreeBSD Foundation laptop project

	- Getting more familiar with snd_hda(4) internals to start
	  working on automatic pin-patching. This is an experimental
	  project, so it is not guaranteed to be successful.
	- Discussed with emaste@ about the first iteration's project
	  (automatic pin-patching).
	- Attended Laptop and Desktop Working Group call.

This work is sponsored by the FreeBSD Foundation.

Christos