This patch diverges quite a bit from the current upstream [1] in a few
ways:
- virtual_oss(8), virtual_bt_speaker(8) and virtual_oss_cmd(8) are actually separate programs.
- Backends (lib/virtual_oss) are built as separate shared libraries and we dlopen() them in virtual_oss(8) and virtual_bt_speaker(8) on demand.
- virtual_equalizer(8) and the sndio and bluetooth backends are built as ports, because they depend on third-party libraries.
- Use newer libav API in bluetooth backend (see HAVE_LIBAV ifdefs) to address compiler errors.
[1] https://github.com/freebsd/virtual_oss
Sponsored by: The FreeBSD Foundation