Sound mixer improvements
Student: ChristosMargiolis (christos@)
Mentor: HansPetterSelasky (hselasky@)
Project description
FreeBSD's default mixer utilities are not the best; mixer(8) is very basic and outdated, end users have to tweak sysctl(8) values to do simple things and programmers have to write DIY implementations for their programs (e.g audio/mixertui). This project aims to improve mixer handling for OSS on FreeBSD and make life for both programmers and users easier.
Deliverables
A mixer(3) library.
- Read all devices and knobs.
- Extend knob capabilities:
- 32-bit floating point left-right volume knobs.
- Muting.
- Recording input selector.
- Select default sound card (not really a mixer feature, but really useful to have).
- Provide as much information as possible about the mixer.
- Use the more modern OSSv4's ioctls.
Rewrite mixer(8).
Use mixer(3) and its new features.
- Get rid of the old codebase completely.
- Add more command line options.
Control-oriented interface like in sysctl(8).
Implement some missing but useful for mixer(3) OSS ioctls in the kernel.
Implement sound device playback/recording status sysctl.
Update /etc/rc.d/mixer to work with the new version of mixer(8).
Make /dev/sndstat "useless" by containing its information in the output of mixer(8).
What didn't get done
Panning capabilities in mixer(3), but it should be easy to write a DIY handler using the mix_ctl_t interface.
Test plan
Since a new version of mixer(8) is one of the delievarables, it'll also serve as a testing ground for the library. Me and the mentor will also test the library with various sound devices we own.
Weekly progress
The code
Documentation
Code reviews