voudp ("voice over UDP") is my GPLed C++ implementation of voice over IP for NetBSD 1.6. It uses libspeex, and requires the audio patch from PR 6827. If you wish to distribute a proprietary derivative work, please contact me to arrange alternate licensing.
I hope you enjoy it as much as I do. I have made no attempt to interoperate with other voip programs. :)
voudp allows arbitrary directed graphs of transmission. The daemon mixes together all the packets it receives, and sends the result to the audio device. It automatically adjusts the window size of the packet reception queue (per client) to minimize latency without losing data. Dropped or late packets invoke the libspeex guessing feature, which tries to cover up for the missing data.
voudp assumes that your audio hardware can natively do 8 kHz stereo 16 bit little-endian, full duplex mmapped and independent, with a block size of 20 ms. It runs fine on my Celeron 433, using about 15% of the FLOPS capacity of the machine. The roundtrip latency to another Bay Area ADSL user is about 200-250 ms.
voudp uses about 3KB/s network bandwidth. Enabling VBR or telling libspeex to compress further would reduce that.
Note that voudpd sits on /dev/audio, and any other programs that try to open /dev/audio will find it busy. NetBSD 1.6 has no kernel audio mixer, and I care too much about latency to use esd or something.
voudp includes three programs: