Camserv is a small program I wrote that streams video over the internet. It provides a modular interface for adding overlays and filter effects, and works on video4linux, and various *bsd flavours of UNIX.

One of the things that makes Camserv cool is the pluggable filter framework. The video device is pluggable, so pictures could be taken by a camera, or could come from a movie read from a file. The picture then passes through a serious of other filters, like auto-contrast, add graphic overlays and timestamps, jpeg compression, etc. This project gave me a lot of education on interprocess communication, dealing with devices, portability (runs on a lot of UNIXen), build systems, dlopen & family, and .... dealing with users.

The original motivation for this project started from a contest with my friend Matt Evans. Matt was the kind of guy who would spooge over writing threaded code on his Sun workstation (with fancy camera and an optical mouse before they became commonplace.) He wrote a similar project and we compared different ways of dealing with concurrent events -- threads vs. processes & shared memory. I'm still surprised at how many emails I still receive about functionality or bugs (Sep-05).

It is included in various Linux and BSD distributions. I no longer maintain this project, but there are developers working on those distributions who keep it up to date with kernel changes.