Version 2: Using Linux Standard APIs

For those of you who may not know version 2 is a complete rewrite from version 1. Version 2 is also focused on using, and enhancing existing Linux kernel APIs. Ben Collins has done an excellent job in writing a Video4Linux 2 compliant MPEG driver for handling the video encoding, along with what comes out of the display / spot out on the cards. By writing the driver we’ve been able to reduce the CPU usage during encoding to only around 10%, opposed to around 30% in version1 (for 16 inputs at 480FPS (at 320×240)).

Update: For kicks, we tested encoding 44 channels of audio and video @ 704×480 (4 channels at 30FPS, 8 channels at 15FPS, and 32 and 7.5fps) and the CPU usage was 10% with a load average of 1.5 on a dual core processor. This would factor down to about 20% CPU usage on a single core processor.

Ben has also done an excellent job in using the ALSA library to handle the audio inputs from the current MPEG-4 capture cards. He talks a bit about this in his blog posted here:

http://ben-collins.blogspot.com/2010/05/writing-alsa-driver-basics.html
http://ben-collins.blogspot.com/2010/05/writing-alsa-driver-setting-up-capture.html
http://ben-collins.blogspot.com/2010/05/writing-alsa-driver-pcm-hardware.html
http://ben-collins.blogspot.com/2010/05/writing-alsa-driver-pcm-handler.html

We are also changing container formats in version 2 to the Matroska (.mkv) format and encoding the audio and video into the same stream. This is a huge change from the way version 1 works, which stores the video in a (non-compliant) video container and the audio in a separate audio file.

Check back for more updates on version 2. We are estimating a release towards the middle to end of July, 2010.