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.

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:

voudpd, the sender/receiver daemon which runs as a dedicated user in a
chroot jail

voudpconfig, a command-line voudpd configuration tool. With
voudpconfig, you can easily ask voudpd to start or stop sending to
anyone in your recipient list.